summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonrad Lipinski <k.lipinski2@partner.samsung.com>2019-06-11 16:25:51 +0200
committerKonrad Lipinski <k.lipinski2@samsung.com>2019-08-01 14:37:53 +0200
commitcc6febdd37186eeea33bcbce89d79f661ee0009f (patch)
tree100542f7f8fd3b3c9548150362efe35adde47551
parentc40fbfa8503e7763ef630496852f4d6b5e63b58c (diff)
downloadxmlsec1-cc6febdd37186eeea33bcbce89d79f661ee0009f.tar.gz
xmlsec1-cc6febdd37186eeea33bcbce89d79f661ee0009f.tar.bz2
xmlsec1-cc6febdd37186eeea33bcbce89d79f661ee0009f.zip
Import upstream commit c4d0493d545b99194eea1b2b058930d5a9bb91b1 (1.2.28)
Change-Id: I10f71567cb140be223923e1cd0b5895e366ac23e
-rw-r--r--AUTHORS1
-rw-r--r--ChangeLog37
-rw-r--r--Copyright27
-rw-r--r--HACKING10
-rw-r--r--Makefile.am16
-rw-r--r--README10
-rw-r--r--TODO157
-rw-r--r--apps/cmdline.c25
-rw-r--r--apps/cmdline.h8
-rw-r--r--apps/crypto.c173
-rw-r--r--apps/crypto.h8
-rw-r--r--apps/xmlsec.c421
-rw-r--r--configure.ac2319
-rw-r--r--docs/Makefile.am19
-rw-r--r--docs/api/Makefile.am156
-rw-r--r--docs/api/home.pngbin169 -> 169 bytes
-rw-r--r--docs/api/index.html493
-rw-r--r--docs/api/left-insensitive.pngbin0 -> 334 bytes
-rw-r--r--docs/api/left.pngbin187 -> 185 bytes
-rw-r--r--docs/api/right-insensitive.pngbin0 -> 233 bytes
-rw-r--r--docs/api/right.pngbin186 -> 184 bytes
-rw-r--r--docs/api/src/chapters/new-crypto.sgml2
-rw-r--r--docs/api/src/chapters/using-x509-certs.sgml2
-rw-r--r--docs/api/src/xmlsec.sgml235
-rw-r--r--docs/api/style.css479
-rw-r--r--docs/api/tmpl/base/app.sgml1112
-rw-r--r--docs/api/tmpl/base/base64.sgml129
-rw-r--r--docs/api/tmpl/base/bn.sgml263
-rw-r--r--docs/api/tmpl/base/buffer.sgml232
-rw-r--r--docs/api/tmpl/base/dl.sgml94
-rw-r--r--docs/api/tmpl/base/errors.sgml490
-rw-r--r--docs/api/tmpl/base/exports.sgml29
-rw-r--r--docs/api/tmpl/base/io.sgml103
-rw-r--r--docs/api/tmpl/base/keyinfo.sgml312
-rw-r--r--docs/api/tmpl/base/keys.sgml521
-rw-r--r--docs/api/tmpl/base/keysdata.sgml930
-rw-r--r--docs/api/tmpl/base/keysmngr.sgml303
-rw-r--r--docs/api/tmpl/base/list.sgml275
-rw-r--r--docs/api/tmpl/base/membuf.sgml47
-rw-r--r--docs/api/tmpl/base/nodeset.sgml172
-rw-r--r--docs/api/tmpl/base/parser.sgml72
-rw-r--r--docs/api/tmpl/base/private.sgml288
-rw-r--r--docs/api/tmpl/base/templates.sgml449
-rw-r--r--docs/api/tmpl/base/transforms.sgml1307
-rw-r--r--docs/api/tmpl/base/version.sgml57
-rw-r--r--docs/api/tmpl/base/x509.sgml75
-rw-r--r--docs/api/tmpl/base/xmldsig.sgml316
-rw-r--r--docs/api/tmpl/base/xmlenc.sgml194
-rw-r--r--docs/api/tmpl/base/xmlsec-unused.sgml794
-rw-r--r--docs/api/tmpl/base/xmlsec.sgml135
-rw-r--r--docs/api/tmpl/base/xmltree.sgml552
-rw-r--r--docs/api/tmpl/gcrypt/app.sgml189
-rw-r--r--docs/api/tmpl/gcrypt/crypto.sgml708
-rw-r--r--docs/api/tmpl/gcrypt/xmlsec-gcrypt-unused.sgml15
-rw-r--r--docs/api/tmpl/gnutls/app.sgml189
-rw-r--r--docs/api/tmpl/gnutls/crypto.sgml674
-rw-r--r--docs/api/tmpl/gnutls/x509.sgml193
-rw-r--r--docs/api/tmpl/gnutls/xmlsec-gnutls-unused.sgml78
-rw-r--r--docs/api/tmpl/mscrypto/app.sgml258
-rw-r--r--docs/api/tmpl/mscrypto/certkeys.sgml87
-rw-r--r--docs/api/tmpl/mscrypto/crypto.sgml728
-rw-r--r--docs/api/tmpl/mscrypto/keysstore.sgml70
-rw-r--r--docs/api/tmpl/mscrypto/x509.sgml197
-rw-r--r--docs/api/tmpl/mscrypto/xmlsec-mscrypto-unused.sgml141
-rw-r--r--docs/api/tmpl/nss/app.sgml247
-rw-r--r--docs/api/tmpl/nss/bignum.sgml44
-rw-r--r--docs/api/tmpl/nss/crypto.sgml653
-rw-r--r--docs/api/tmpl/nss/keysstore.sgml70
-rw-r--r--docs/api/tmpl/nss/pkikeys.sgml69
-rw-r--r--docs/api/tmpl/nss/x509.sgml192
-rw-r--r--docs/api/tmpl/nss/xmlsec-nss-unused.sgml8
-rw-r--r--docs/api/tmpl/openssl/app.sgml267
-rw-r--r--docs/api/tmpl/openssl/bn.sgml43
-rw-r--r--docs/api/tmpl/openssl/ciphers.sgml18
-rw-r--r--docs/api/tmpl/openssl/crypto.sgml1126
-rw-r--r--docs/api/tmpl/openssl/evp.sgml59
-rw-r--r--docs/api/tmpl/openssl/x509.sgml237
-rw-r--r--docs/api/tmpl/openssl/xmlsec-openssl-unused.sgml78
-rw-r--r--docs/api/up-insensitive.pngbin0 -> 288 bytes
-rw-r--r--docs/api/up.pngbin187 -> 186 bytes
-rw-r--r--docs/api/xmlsec-app.html2951
-rw-r--r--docs/api/xmlsec-base64.html676
-rw-r--r--docs/api/xmlsec-bn.html1456
-rw-r--r--docs/api/xmlsec-buffer.html1224
-rw-r--r--docs/api/xmlsec-custom-keys-manager.html161
-rw-r--r--docs/api/xmlsec-decrypt-with-keys-mngr.html157
-rw-r--r--docs/api/xmlsec-decrypt-with-signle-key.html155
-rw-r--r--docs/api/xmlsec-dl.html449
-rw-r--r--docs/api/xmlsec-encrypt-dynamic-template.html191
-rw-r--r--docs/api/xmlsec-encrypt-template-file.html187
-rw-r--r--docs/api/xmlsec-encrypt-with-session-key.html199
-rw-r--r--docs/api/xmlsec-encryption-klasses.html140
-rw-r--r--docs/api/xmlsec-errors.html1267
-rw-r--r--docs/api/xmlsec-examples-sign-dynamimc-template.html193
-rw-r--r--docs/api/xmlsec-examples-sign-template-file.html188
-rw-r--r--docs/api/xmlsec-examples-sign-x509.html211
-rw-r--r--docs/api/xmlsec-examples.html212
-rw-r--r--docs/api/xmlsec-gcrypt-app.html1025
-rw-r--r--docs/api/xmlsec-gcrypt-crypto.html1894
-rw-r--r--docs/api/xmlsec-gcrypt-ref.html142
-rw-r--r--docs/api/xmlsec-gnutls-app.html1025
-rw-r--r--docs/api/xmlsec-gnutls-crypto.html1752
-rw-r--r--docs/api/xmlsec-gnutls-ref.html145
-rw-r--r--docs/api/xmlsec-gnutls-x509.html691
-rw-r--r--docs/api/xmlsec-index.html3360
-rw-r--r--docs/api/xmlsec-io.html452
-rw-r--r--docs/api/xmlsec-keyinfo.html1234
-rw-r--r--docs/api/xmlsec-keys.html2445
-rw-r--r--docs/api/xmlsec-keysdata.html4006
-rw-r--r--docs/api/xmlsec-keysmngr.html1479
-rw-r--r--docs/api/xmlsec-list.html1367
-rw-r--r--docs/api/xmlsec-membuf.html262
-rw-r--r--docs/api/xmlsec-msccng-ref.html51
-rw-r--r--docs/api/xmlsec-mscng-app.html807
-rw-r--r--docs/api/xmlsec-mscng-certkeys.html175
-rw-r--r--docs/api/xmlsec-mscng-crypto.html1346
-rw-r--r--docs/api/xmlsec-mscng-keysstore.html241
-rw-r--r--docs/api/xmlsec-mscng-x509.html535
-rw-r--r--docs/api/xmlsec-mscrypto-app.html1359
-rw-r--r--docs/api/xmlsec-mscrypto-certkeys.html507
-rw-r--r--docs/api/xmlsec-mscrypto-crypto.html1985
-rw-r--r--docs/api/xmlsec-mscrypto-keysstore.html395
-rw-r--r--docs/api/xmlsec-mscrypto-ref.html158
-rw-r--r--docs/api/xmlsec-mscrypto-x509.html912
-rw-r--r--docs/api/xmlsec-nodeset.html1010
-rw-r--r--docs/api/xmlsec-notes-compiling-others.html132
-rw-r--r--docs/api/xmlsec-notes-compiling-unix.html219
-rw-r--r--docs/api/xmlsec-notes-compiling-windows.html189
-rw-r--r--docs/api/xmlsec-notes-compiling.html151
-rw-r--r--docs/api/xmlsec-notes-contexts.html157
-rw-r--r--docs/api/xmlsec-notes-custom-keys-store.html154
-rw-r--r--docs/api/xmlsec-notes-decrypt.html183
-rw-r--r--docs/api/xmlsec-notes-dynamic-encryption-templates.html169
-rw-r--r--docs/api/xmlsec-notes-dynamic-signature-templates.html173
-rw-r--r--docs/api/xmlsec-notes-encrypt.html214
-rw-r--r--docs/api/xmlsec-notes-include-files.html169
-rw-r--r--docs/api/xmlsec-notes-init-shutdown.html192
-rw-r--r--docs/api/xmlsec-notes-keys-manager-sign-enc.html172
-rw-r--r--docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html160
-rw-r--r--docs/api/xmlsec-notes-keys.html149
-rw-r--r--docs/api/xmlsec-notes-keysmngr.html161
-rw-r--r--docs/api/xmlsec-notes-new-crypto-functions.html155
-rw-r--r--docs/api/xmlsec-notes-new-crypto-key-stores.html322
-rw-r--r--docs/api/xmlsec-notes-new-crypto-keys.html139
-rw-r--r--docs/api/xmlsec-notes-new-crypto-klasses.html190
-rw-r--r--docs/api/xmlsec-notes-new-crypto-sharing-results.html134
-rw-r--r--docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html134
-rw-r--r--docs/api/xmlsec-notes-new-crypto-skeleton.html230
-rw-r--r--docs/api/xmlsec-notes-new-crypto-transforms.html192
-rw-r--r--docs/api/xmlsec-notes-new-crypto.html180
-rw-r--r--docs/api/xmlsec-notes-overview.html136
-rw-r--r--docs/api/xmlsec-notes-sign-encrypt.html157
-rw-r--r--docs/api/xmlsec-notes-sign-x509.html188
-rw-r--r--docs/api/xmlsec-notes-sign.html194
-rw-r--r--docs/api/xmlsec-notes-simple-keys-store.html153
-rw-r--r--docs/api/xmlsec-notes-structure.html147
-rw-r--r--docs/api/xmlsec-notes-templates.html147
-rw-r--r--docs/api/xmlsec-notes-transforms.html184
-rw-r--r--docs/api/xmlsec-notes-verify-decrypt.html159
-rw-r--r--docs/api/xmlsec-notes-verify-x509.html175
-rw-r--r--docs/api/xmlsec-notes-verify.html189
-rw-r--r--docs/api/xmlsec-notes-x509.html147
-rw-r--r--docs/api/xmlsec-notes.html273
-rw-r--r--docs/api/xmlsec-nss-app.html1340
-rw-r--r--docs/api/xmlsec-nss-bignum.html291
-rw-r--r--docs/api/xmlsec-nss-crypto.html1929
-rw-r--r--docs/api/xmlsec-nss-keysstore.html397
-rw-r--r--docs/api/xmlsec-nss-pkikeys.html392
-rw-r--r--docs/api/xmlsec-nss-ref.html154
-rw-r--r--docs/api/xmlsec-nss-x509.html905
-rw-r--r--docs/api/xmlsec-openssl-app.html1431
-rw-r--r--docs/api/xmlsec-openssl-bn.html283
-rw-r--r--docs/api/xmlsec-openssl-crypto.html3113
-rw-r--r--docs/api/xmlsec-openssl-evp.html346
-rw-r--r--docs/api/xmlsec-openssl-ref.html151
-rw-r--r--docs/api/xmlsec-openssl-x509.html1085
-rw-r--r--docs/api/xmlsec-parser.html406
-rw-r--r--docs/api/xmlsec-ref.html205
-rw-r--r--docs/api/xmlsec-reference.html314
-rw-r--r--docs/api/xmlsec-signature-klasses.html140
-rw-r--r--docs/api/xmlsec-templates.html2515
-rw-r--r--docs/api/xmlsec-transforms.html5536
-rw-r--r--docs/api/xmlsec-verify-with-key.html155
-rw-r--r--docs/api/xmlsec-verify-with-keys-mngr.html157
-rw-r--r--docs/api/xmlsec-verify-with-restrictions.html241
-rw-r--r--docs/api/xmlsec-verify-with-x509.html157
-rw-r--r--docs/api/xmlsec-version.html229
-rw-r--r--docs/api/xmlsec-x509.html313
-rw-r--r--docs/api/xmlsec-xmldsig.html1557
-rw-r--r--docs/api/xmlsec-xmlenc.html1089
-rw-r--r--docs/api/xmlsec-xmlsec.html560
-rw-r--r--docs/api/xmlsec-xmltree.html3354
-rw-r--r--docs/api/xmlsec.devhelp22098
-rw-r--r--docs/authors.html345
-rw-r--r--docs/bugs.html345
-rw-r--r--docs/c14n.html345
-rw-r--r--docs/documentation.html345
-rw-r--r--docs/download.html398
-rwxr-xr-xdocs/extra/xmlsec_oscon_2003.pptbin0 -> 474624 bytes
-rw-r--r--docs/faq.html359
-rw-r--r--docs/index.html403
-rw-r--r--docs/news.html412
-rw-r--r--docs/related.html345
-rw-r--r--docs/tests/aleksey-xmldsig-01/README47
-rw-r--r--docs/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd1
-rw-r--r--docs/tests/aleksey-xmldsig-01/dtd-hmac-91.xml27
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml87
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml85
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml15
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml13
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml15
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml13
-rw-r--r--docs/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml85
-rw-r--r--docs/tests/aleksey-xmldsig-01/x509data-test.xml117
-rw-r--r--docs/tests/aleksey-xmldsig-01/xpointer-hmac.xml28
-rw-r--r--docs/tests/keys-certs/cacert.pem72
-rw-r--r--docs/tests/keys-certs/cakey.pem18
-rw-r--r--docs/tests/keys-certs/keys.xml83
-rw-r--r--docs/tests/keys-certs/merlin.pem21
-rw-r--r--docs/tests/merlin-exc-c14n-one/Readme.txt3
-rw-r--r--docs/tests/merlin-exc-c14n-one/c14n-0.txt5
-rw-r--r--docs/tests/merlin-exc-c14n-one/c14n-1.txt5
-rw-r--r--docs/tests/merlin-exc-c14n-one/c14n-2.txt5
-rw-r--r--docs/tests/merlin-exc-c14n-one/c14n-3.txt5
-rw-r--r--docs/tests/merlin-exc-c14n-one/c14n-4.txt36
-rw-r--r--docs/tests/merlin-exc-c14n-one/exc-signature.tmpl52
-rw-r--r--docs/tests/merlin-exc-c14n-one/exc-signature.xml73
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/Readme.txt63
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/badb.derbin0 -> 850 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/badb.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/balor.derbin0 -> 851 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/balor.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/bres.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/ca.derbin0 -> 862 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/ca.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.derbin0 -> 851 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/lugh.derbin0 -> 442 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/lugh.pem12
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/macha.derbin0 -> 852 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/macha.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/merlin.derbin0 -> 847 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/merlin.pem21
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/morigu.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/nemain.derbin0 -> 852 bytes
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/certs/nemain.pem20
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml43
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml42
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml39
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml17
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml15
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml31
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml41
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml38
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-keyname.xml17
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml17
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml47
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml38
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml24
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml21
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml21
-rw-r--r--docs/tests/merlin-xmldsig-twenty-three/signature.xml269
-rw-r--r--docs/tests/merlin-xmlenc-five/Readme.txt117
-rw-r--r--docs/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml42
-rw-r--r--docs/tests/merlin-xmlenc-five/decryption-transform-except.xml83
-rw-r--r--docs/tests/merlin-xmlenc-five/decryption-transform.xml73
-rw-r--r--docs/tests/merlin-xmlenc-five/dh0.p8bin0 -> 445 bytes
-rw-r--r--docs/tests/merlin-xmlenc-five/dh1.p8bin0 -> 445 bytes
-rw-r--r--docs/tests/merlin-xmlenc-five/dsa.p8bin0 -> 334 bytes
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml42
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml113
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml39
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml32
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml12
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml22
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml22
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml46
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml43
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml60
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml39
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml57
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml122
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml44
-rw-r--r--docs/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml40
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml98
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml108
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml46
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml51
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml27
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml27
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml27
-rw-r--r--docs/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml28
-rw-r--r--docs/tests/merlin-xmlenc-five/ids.p12bin0 -> 9103 bytes
-rw-r--r--docs/tests/merlin-xmlenc-five/plaintext.txt1
-rw-r--r--docs/tests/merlin-xmlenc-five/plaintext.xml24
-rw-r--r--docs/tests/merlin-xmlenc-five/rsa.p8bin0 -> 635 bytes
-rw-r--r--docs/xmldsig-verifier.html345
-rw-r--r--docs/xmldsig.html345
-rw-r--r--docs/xmlenc.html345
-rw-r--r--docs/xmlsec-ga.xsl21
-rw-r--r--docs/xmlsec-man.html41
-rw-r--r--examples/decrypt1.c2
-rw-r--r--examples/decrypt2.c4
-rw-r--r--examples/decrypt3.c2
-rw-r--r--examples/encrypt1.c2
-rw-r--r--examples/encrypt2.c2
-rw-r--r--examples/encrypt3.c4
-rw-r--r--examples/sign1.c2
-rw-r--r--examples/sign2.c2
-rw-r--r--examples/sign3.c16
-rw-r--r--examples/verify1.c2
-rw-r--r--examples/verify2.c4
-rw-r--r--examples/verify3.c6
-rw-r--r--examples/verify4.c10
-rw-r--r--examples/xmldsigverify.c4
-rw-r--r--include/xmlsec/Makefile.am5
-rw-r--r--include/xmlsec/app.h31
-rw-r--r--include/xmlsec/base64.h10
-rw-r--r--include/xmlsec/bn.h10
-rw-r--r--include/xmlsec/buffer.h8
-rw-r--r--include/xmlsec/crypto.h17
-rw-r--r--include/xmlsec/dl.h24
-rw-r--r--include/xmlsec/errors.h45
-rw-r--r--include/xmlsec/exports.h2
-rw-r--r--include/xmlsec/gcrypt/app.h12
-rw-r--r--include/xmlsec/gcrypt/crypto.h16
-rw-r--r--include/xmlsec/gcrypt/symbols.h4
-rw-r--r--include/xmlsec/gnutls/app.h12
-rw-r--r--include/xmlsec/gnutls/crypto.h25
-rw-r--r--include/xmlsec/gnutls/symbols.h4
-rw-r--r--include/xmlsec/gnutls/x509.h15
-rw-r--r--include/xmlsec/io.h10
-rw-r--r--include/xmlsec/keyinfo.h21
-rw-r--r--include/xmlsec/keys.h20
-rw-r--r--include/xmlsec/keysdata.h18
-rw-r--r--include/xmlsec/keysmngr.h10
-rw-r--r--include/xmlsec/list.h10
-rw-r--r--include/xmlsec/membuf.h10
-rw-r--r--include/xmlsec/mscng/Makefile.am16
-rw-r--r--include/xmlsec/mscng/app.h100
-rw-r--r--include/xmlsec/mscng/certkeys.h33
-rw-r--r--include/xmlsec/mscng/crypto.h515
-rw-r--r--include/xmlsec/mscng/keysstore.h41
-rw-r--r--include/xmlsec/mscng/symbols.h125
-rw-r--r--include/xmlsec/mscng/x509.h83
-rw-r--r--include/xmlsec/mscrypto/app.h12
-rw-r--r--include/xmlsec/mscrypto/certkeys.h12
-rw-r--r--include/xmlsec/mscrypto/crypto.h104
-rw-r--r--include/xmlsec/mscrypto/keysstore.h8
-rw-r--r--include/xmlsec/mscrypto/symbols.h8
-rw-r--r--include/xmlsec/mscrypto/x509.h16
-rw-r--r--include/xmlsec/nodeset.h12
-rw-r--r--include/xmlsec/nss/app.h12
-rw-r--r--include/xmlsec/nss/bignum.h12
-rw-r--r--include/xmlsec/nss/crypto.h141
-rw-r--r--include/xmlsec/nss/keysstore.h8
-rw-r--r--include/xmlsec/nss/pkikeys.h11
-rw-r--r--include/xmlsec/nss/symbols.h7
-rw-r--r--include/xmlsec/nss/x509.h16
-rw-r--r--include/xmlsec/openssl/app.h14
-rw-r--r--include/xmlsec/openssl/bn.h12
-rw-r--r--include/xmlsec/openssl/crypto.h171
-rw-r--r--include/xmlsec/openssl/evp.h11
-rw-r--r--include/xmlsec/openssl/symbols.h7
-rw-r--r--include/xmlsec/openssl/x509.h18
-rw-r--r--include/xmlsec/parser.h9
-rw-r--r--include/xmlsec/private.h121
-rw-r--r--include/xmlsec/private/xslt.h2
-rw-r--r--include/xmlsec/skeleton/app.h12
-rw-r--r--include/xmlsec/skeleton/crypto.h12
-rw-r--r--include/xmlsec/skeleton/symbols.h4
-rw-r--r--include/xmlsec/soap.h57
-rw-r--r--include/xmlsec/strings.h21
-rw-r--r--include/xmlsec/templates.h10
-rw-r--r--include/xmlsec/transforms.h27
-rw-r--r--include/xmlsec/version.h61
-rw-r--r--include/xmlsec/version.h.in13
-rw-r--r--include/xmlsec/x509.h10
-rw-r--r--include/xmlsec/xmldsig.h54
-rw-r--r--include/xmlsec/xmlenc.h11
-rw-r--r--include/xmlsec/xmlsec.h100
-rw-r--r--include/xmlsec/xmltree.h49
-rw-r--r--m4/.keep0
-rw-r--r--m4/ltoptions.m4384
-rw-r--r--m4/ltsugar.m4123
-rw-r--r--m4/ltversion.m423
-rw-r--r--m4/lt~obsolete.m498
-rw-r--r--man/xmlsec1-config.14
-rw-r--r--man/xmlsec1.122
-rw-r--r--packaging/xmlsec1.spec12
-rwxr-xr-xscripts/build_coverity.sh49
-rwxr-xr-xscripts/build_release.sh58
-rwxr-xr-xscripts/change-release.sh34
-rwxr-xr-xscripts/push_release.sh30
-rwxr-xr-xscripts/remove-gtkdoclink.pl2
-rwxr-xr-xscripts/test_release.sh12
-rw-r--r--src/Makefile.am6
-rw-r--r--src/app.c514
-rw-r--r--src/base64.c227
-rw-r--r--src/bn.c230
-rw-r--r--src/buffer.c137
-rw-r--r--src/c14n.c147
-rw-r--r--src/dl.c584
-rw-r--r--src/enveloped.c42
-rw-r--r--src/errors.c38
-rw-r--r--src/errors_helpers.h872
-rw-r--r--src/gcrypt/Makefile.am4
-rw-r--r--src/gcrypt/app.c212
-rw-r--r--src/gcrypt/asn1.c189
-rw-r--r--src/gcrypt/asymkeys.c518
-rw-r--r--src/gcrypt/ciphers.c207
-rw-r--r--src/gcrypt/crypto.c31
-rw-r--r--src/gcrypt/digests.c69
-rw-r--r--src/gcrypt/globals.h56
-rw-r--r--src/gcrypt/hmac.c118
-rw-r--r--src/gcrypt/kw_aes.c142
-rw-r--r--src/gcrypt/kw_des.c154
-rw-r--r--src/gcrypt/signatures.c279
-rw-r--r--src/gcrypt/symkeys.c13
-rw-r--r--src/globals.h3
-rw-r--r--src/gnutls/Makefile.am4
-rw-r--r--src/gnutls/app.c295
-rw-r--r--src/gnutls/asymkeys.c129
-rw-r--r--src/gnutls/ciphers.c12
-rw-r--r--src/gnutls/crypto.c43
-rw-r--r--src/gnutls/digests.c12
-rw-r--r--src/gnutls/globals.h75
-rw-r--r--src/gnutls/hmac.c12
-rw-r--r--src/gnutls/kw_aes.c13
-rw-r--r--src/gnutls/kw_des.c13
-rw-r--r--src/gnutls/signatures.c12
-rw-r--r--src/gnutls/symkeys.c13
-rw-r--r--src/gnutls/x509.c705
-rw-r--r--src/gnutls/x509utils.c456
-rw-r--r--src/gnutls/x509vfy.c248
-rw-r--r--src/io.c118
-rw-r--r--src/keyinfo.c449
-rw-r--r--src/keys.c267
-rw-r--r--src/keysdata.c271
-rw-r--r--src/keysmngr.c165
-rw-r--r--src/kw_aes_des.c127
-rw-r--r--src/kw_aes_des.h4
-rw-r--r--src/list.c76
-rw-r--r--src/membuf.c50
-rw-r--r--src/mscng/Makefile.am49
-rw-r--r--src/mscng/README16
-rw-r--r--src/mscng/app.c824
-rw-r--r--src/mscng/certkeys.c1649
-rw-r--r--src/mscng/ciphers.c1529
-rw-r--r--src/mscng/crypto.c463
-rw-r--r--src/mscng/digests.c588
-rw-r--r--src/mscng/globals.h65
-rw-r--r--src/mscng/hmac.c691
-rw-r--r--src/mscng/keysstore.c519
-rw-r--r--src/mscng/kt_rsa.c544
-rw-r--r--src/mscng/kw_aes.c702
-rw-r--r--src/mscng/kw_des.c790
-rw-r--r--src/mscng/signatures.c1095
-rw-r--r--src/mscng/symkeys.c345
-rw-r--r--src/mscng/x509.c1423
-rw-r--r--src/mscng/x509vfy.c1215
-rw-r--r--src/mscrypto/Makefile.am4
-rw-r--r--src/mscrypto/app.c523
-rw-r--r--src/mscrypto/certkeys.c1290
-rw-r--r--src/mscrypto/ciphers.c266
-rw-r--r--src/mscrypto/crypto.c413
-rw-r--r--src/mscrypto/csp_calg.h24
-rw-r--r--src/mscrypto/csp_oid.h14
-rw-r--r--src/mscrypto/digests.c216
-rw-r--r--src/mscrypto/globals.h57
-rw-r--r--src/mscrypto/hmac.c174
-rw-r--r--src/mscrypto/keysstore.c189
-rw-r--r--src/mscrypto/kt_rsa.c181
-rw-r--r--src/mscrypto/kw_aes.c133
-rw-r--r--src/mscrypto/kw_des.c218
-rw-r--r--src/mscrypto/private.h6
-rw-r--r--src/mscrypto/signatures.c317
-rw-r--r--src/mscrypto/symkeys.c165
-rw-r--r--src/mscrypto/x509.c824
-rw-r--r--src/mscrypto/x509vfy.c374
-rw-r--r--src/mscrypto/xmlsec-mingw.h4
-rw-r--r--src/nodeset.c75
-rw-r--r--src/nss/Makefile.am4
-rw-r--r--src/nss/README2
-rw-r--r--src/nss/app.c518
-rw-r--r--src/nss/bignum.c49
-rw-r--r--src/nss/ciphers.c194
-rw-r--r--src/nss/crypto.c118
-rw-r--r--src/nss/digests.c144
-rw-r--r--src/nss/globals.h44
-rw-r--r--src/nss/hmac.c189
-rw-r--r--src/nss/keysstore.c150
-rw-r--r--src/nss/keytrans.c788
-rw-r--r--src/nss/kw_aes.c165
-rw-r--r--src/nss/kw_des.c171
-rw-r--r--src/nss/pkikeys.c640
-rw-r--r--src/nss/signatures.c635
-rw-r--r--src/nss/symkeys.c13
-rw-r--r--src/nss/x509.c730
-rw-r--r--src/nss/x509vfy.c287
-rw-r--r--src/openssl/Makefile.am5
-rw-r--r--src/openssl/README2
-rw-r--r--src/openssl/app.c642
-rw-r--r--src/openssl/bn.c65
-rw-r--r--src/openssl/ciphers.c603
-rw-r--r--src/openssl/crypto.c78
-rw-r--r--src/openssl/digests.c119
-rw-r--r--src/openssl/evp.c973
-rw-r--r--src/openssl/evp_signatures.c150
-rw-r--r--src/openssl/globals.h75
-rw-r--r--src/openssl/hmac.c174
-rw-r--r--src/openssl/kt_rsa.c388
-rw-r--r--src/openssl/kw_aes.c108
-rw-r--r--src/openssl/kw_des.c141
-rw-r--r--src/openssl/openssl_compat.h88
-rw-r--r--src/openssl/signatures.c508
-rw-r--r--src/openssl/symkeys.c15
-rw-r--r--src/openssl/x509.c916
-rw-r--r--src/openssl/x509vfy.c579
-rw-r--r--src/parser.c254
-rw-r--r--src/relationship.c351
-rw-r--r--src/skeleton/Makefile.am4
-rw-r--r--src/skeleton/app.c120
-rw-r--r--src/skeleton/crypto.c24
-rw-r--r--src/skeleton/globals.h3
-rw-r--r--src/soap.c328
-rw-r--r--src/strings.c18
-rw-r--r--src/templates.c745
-rw-r--r--src/transforms.c802
-rw-r--r--src/x509.c31
-rw-r--r--src/xmldsig.c649
-rw-r--r--src/xmlenc.c392
-rw-r--r--src/xmlsec.c122
-rw-r--r--src/xmltree.c951
-rw-r--r--src/xpath.c317
-rw-r--r--src/xslt.c181
-rw-r--r--tests/README13
-rw-r--r--tests/aleksey-xmldsig-01/enveloped-ecdsa-java-bug.xml13
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1.xml34
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256.xml34
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.tmpl17
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.xml17
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-verify.xml81
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.tmpl17
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.xml80
-rw-r--r--tests/aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512.xml34
-rw-r--r--tests/aleksey-xmldsig-01/signature-two-keynames.tmpl17
-rw-r--r--tests/aleksey-xmldsig-01/signature-two-keynames.xml17
-rw-r--r--tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.data9
-rw-r--r--tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.tmpl23
-rw-r--r--tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.xml36
-rw-r--r--tests/external-data/README1
-rw-r--r--tests/external-data/rfc3161.txt1459
-rw-r--r--tests/external-data/xml-stylesheet-2005341
-rw-r--r--tests/external-data/xml-stylesheet-2005.b64274
-rw-r--r--tests/external-data/xml-stylesheet-2018280
-rw-r--r--tests/keys/README31
-rw-r--r--tests/keys/demoCA/index.txt1
-rw-r--r--tests/keys/demoCA/index.txt.old1
-rw-r--r--tests/keys/demoCA/newcerts/AFA28BB933ADDAB5.pem60
-rw-r--r--tests/keys/demoCA/serial2
-rw-r--r--tests/keys/demoCA/serial.old2
-rw-r--r--tests/keys/dsa2048key-win.p12bin0 -> 4998 bytes
-rw-r--r--tests/keys/dsa3072key-win.p12bin0 -> 5638 bytes
-rw-r--r--tests/keys/ecdsa-secp256r1-cert.derbin0 -> 899 bytes
-rw-r--r--tests/keys/ecdsa-secp256r1-cert.pem60
-rw-r--r--tests/keys/ecdsa-secp256r1-key.derbin0 -> 121 bytes
-rw-r--r--tests/keys/ecdsa-secp256r1-key.p12bin0 -> 3621 bytes
-rw-r--r--tests/keys/ecdsa-secp256r1-key.p8-derbin0 -> 179 bytes
-rw-r--r--tests/keys/ecdsa-secp256r1-key.pem5
-rw-r--r--tests/keys/enveloped-ecdsa-java-bug-cert.derbin0 -> 642 bytes
-rw-r--r--tests/keys/enveloped-ecdsa-java-bug-cert.pem16
-rw-r--r--tests/keys/merlincert.derbin0 -> 848 bytes
-rw-r--r--tests/keysstore/README9
-rw-r--r--tests/keysstore/keysstore.xml17
-rw-r--r--tests/nist-aesgcm/README.txt29
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-06.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.data1
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.tmpl10
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-12.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-12.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-03.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-04.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-07.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-09.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-12.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.xml12
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-02.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-03.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-06.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-08.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-11.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.xml13
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.data1
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.tmpl10
-rw-r--r--tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.xml13
-rw-r--r--tests/nist-aesgcm/create-enc-test.xslt14
-rw-r--r--tests/nist-aesgcm/keys-aes128-gcm.xml363
-rw-r--r--tests/nist-aesgcm/keys-aes192-gcm.xml363
-rw-r--r--tests/nist-aesgcm/keys-aes256-gcm.xml363
-rw-r--r--tests/oss-fuzz/README.md15
-rw-r--r--tests/oss-fuzz/config/xmlsec_fuzzer.options2
-rw-r--r--tests/oss-fuzz/xmlsec_target.c18
-rwxr-xr-xtests/testDSig.sh227
-rwxr-xr-xtests/testEnc.sh76
-rwxr-xr-xtests/testKeys.sh14
-rwxr-xr-xtests/testrun.sh219
-rw-r--r--win32/Makefile.msvc242
-rw-r--r--win32/README.txt2
-rw-r--r--win32/configure.js121
-rw-r--r--win32/mycfg.bat10
-rw-r--r--xmlsec-gcrypt.pc.in1
-rw-r--r--xmlsec-gnutls.pc.in1
-rw-r--r--xmlsec-nss.pc.in1
-rw-r--r--xmlsec-openssl.pc.in1
-rw-r--r--xmlsec1.spec26
964 files changed, 84094 insertions, 76286 deletions
diff --git a/AUTHORS b/AUTHORS
index 3003d13e..ec434029 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,5 +4,6 @@ Windows port: Igor Zlatkovic <igor@stud.fh-frankfurt.de>
Debian port: John Belmonte <jvb@prairienet.org>
xmlsec-nss: Tej Arora <tej@netscape.com>, AOL Inc.
xmlsec-mscrypto: Wouter Ketting <wsh@xs4all.nl>, Cordys R&D BV
+xmlsec-mscng: Miklos Vajna <vmiklos@vmiklos.hu>
GOST support: Dmitry Belyavsky <beldmit@cryptocom.ru>, Cryptocom LTD (http://www.cryptocom.ru)
diff --git a/ChangeLog b/ChangeLog
index c190bf35..5adc5c44 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,40 @@
+The changelog file is obsolete, please view the commits log on github
+
+https://github.com/lsh123/xmlsec/commits/master
+
+
+2016-10-15 Aleksey Sanin <aleksey@aleksey.com>
+ * 1.2.23 release
+
+2016-10-14 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed gcrypto RSA/DSA keys params ordering
+
+2016-10-12 Aleksey Sanin <aleksey@aleksey.com>
+ * Better X509Data templates
+
+2016-10-07 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed memory leak caused by xmlGetProp (patch from Dafan Zhai)
+ * Fixed KW transforms (overlapping buffer error) for OpenSSL 1.1.0
+ * Fixed pkg-config detection
+
+2016-09-27 Aleksey Sanin <aleksey@aleksey.com>
+ * Added initial support OpenSSL 1.1.0 (patch from Andrzej Siewior)
+
+2016-09-19 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed signing with RSA SHA2 via mscrypto (patch from PepaRokos)
+
+2016-07-08 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed mscrypto undeclared XMLSEC_DEFAULT_CRYPTO (patch from vmiklos)
+
+2016-05-31 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed mismatched conditional for XMLSEC_NO_ECDSA (patch from Eric Sproul)
+
+2016-05-20 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed openssl cert depth verification param usage (patch from R-Tur)
+
+2016-04-22 Aleksey Sanin <aleksey@aleksey.com>
+ * Fixed stdin/stdout in xmlsec1 app
+
2016-04-20 Aleksey Sanin <aleksey@aleksey.com>
* Restored SOAP support for Lasso
* 1.2.22 release
diff --git a/Copyright b/Copyright
index efb24df8..d93986f4 100644
--- a/Copyright
+++ b/Copyright
@@ -89,6 +89,33 @@ be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from him.
+xmlsec-mscng library
+------------------------------------------------------------------------------
+
+Copyright (C) 2018 Aleksey Sanin. All Rights Reserved.
+Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ALEKSEY SANIN BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Aleksey Sanin shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
References
------------------------------------------------------------------------------
diff --git a/HACKING b/HACKING
index b9f96d63..d28cbc48 100644
--- a/HACKING
+++ b/HACKING
@@ -95,17 +95,17 @@ Igor Zlatkovic get an exception for the send before commit rule.
- Errors reporting (XMLSEC_ERRORS_R_XMLSEC_FAILED vs. XMLSEC_ERRORS_R_CRYPTO_FAILED)
The correct usage rule is:
if the failed function starts with "xmlSec" then use
- XMLSEC_ERRORS_R_XMLSEC_FAILED
- else if it is xmlMalloc/xmlFree/xmlStrdup/etc then use
- XMLSEC_ERRORS_R_MALLOC_FAILED
+ xmlSecInternalError() aka XMLSEC_ERRORS_R_XMLSEC_FAILED
+ else if it is xmlMalloc/xmlFree/etc then use
+ xmlSecMallocError() aka XMLSEC_ERRORS_R_MALLOC_FAILED
else if the function starts with "xml" or "xslt" (i.e. it comes
from libxml or libxslt) then use
- XMLSEC_ERRORS_R_XML_FAILED
+ xmlSecXmlError/xmlSecXmlParserError aka XMLSEC_ERRORS_R_XML_FAILED
else if it is related to IO (fopen, fread, fwrite, etc.) then use
XMLSEC_ERRORS_R_IO_FAILED
else if the function could be used only from xmlsec-crypto (i.e.
it is crypto engine related) then use
- XMLSEC_ERRORS_R_CRYPTO_FAILED
+ xmlSecOpenSSLError/... aka XMLSEC_ERRORS_R_CRYPTO_FAILED
else if there is another reason (invalid data, invalid size, etc.)
corresponding error reason should be used
else
diff --git a/Makefile.am b/Makefile.am
index 3453c011..c23370ce 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,16 @@
NULL =
SAFE_VERSION = @XMLSEC_VERSION_SAFE@
-SUBDIRS = include src apps man docs
+SUBDIRS = include src
+if XMLSEC_APPS
+SUBDIRS += apps
+endif
+if XMLSEC_MANS
+SUBDIRS += man
+endif
+if XMLSEC_DOCS
+SUBDIRS += docs
+endif
TEST_APP = apps/xmlsec1$(EXEEXT)
DEFAULT_CRYPTO = @XMLSEC_DEFAULT_CRYPTO@
@@ -66,8 +75,9 @@ PRECHECK_COMMANDS = \
$(NULL)
else
PRECHECK_COMMANDS= \
+ export LD_LIBRARY_PATH="$(ABS_BUILDDIR)/src/.libs:$$LD_LIBRARY_PATH" ; \
for i in $(XMLSEC_CRYPTO_LIST) ; do \
- export LD_LIBRARY_PATH="$(ABS_BUILDDIR)/src/$$i/.libs:$$LD_LIBRARY_PATH" ; \
+ export LTDL_LIBRARY_PATH="$(ABS_BUILDDIR)/src/$$i/.libs:$$LTDL_LIBRARY_PATH" ; \
done && \
cd $(ABS_SRCDIR) \
$(NULL)
@@ -89,7 +99,7 @@ check: check-all check-info
check-all: $(TEST_APP)
for crypto in $(CHECK_CRYPTO_LIST) ; do \
- make check-crypto-$$crypto ; \
+ make check-crypto-$$crypto || exit 1 ; \
done
check-crypto-%: $(TEST_APP)
diff --git a/README b/README
index cdb4fe10..4ae34539 100644
--- a/README
+++ b/README
@@ -4,18 +4,18 @@ XMLSec Library
XMLSec library provides C based implementation for major XML Security
standards:
- * XML Signature Syntax and Processing
- http://www.w3.org/TR/xmldsig-core
+ * XML Signature Syntax and Processing
+ https://www.w3.org/TR/xmldsig-core
* XML Encryption Syntax and Processing
- http://www.w3.org/TR/xmlenc-core/
+ https://www.w3.org/TR/xmlenc-core/
XMLSec is based on well known LibXML (http://xmlsoft.org), LibXSLT
-(http://xmlsoft.org/XSLT) and OpenSSL (http://www.openssl.org) libraries.
+(http://xmlsoft.org/XSLT) and OpenSSL (https://www.openssl.org) libraries.
XMLSec library documentation is available here:
-http://www.aleksey.com/xmlsec/
+https://www.aleksey.com/xmlsec/
This code is released under the MIT Licence see the Copyright file.
diff --git a/TODO b/TODO
index 7adb9694..ee2f0735 100644
--- a/TODO
+++ b/TODO
@@ -1,156 +1 @@
-*************************************************
- General
-*************************************************
-
-* Unify password callback (one of parameters: filename)
-* Get key usage from certs
-* Extend keys manager to return more info when key is found or not found
- (what cheks were performed, etc.)
-
-
-*************************************************
- Tests status
-*************************************************
-
--------------------------------------------------
-* xmlsec-openssl (April 26, 2010 using OpenSSL 0.9.8g)
--------------------------------------------------
-
-** Skipped tests due to missing transforms: GOST
-
-aleksey-xmldsig-01/enveloped-gost
-
-
--------------------------------------------------
-* xmlsec-nss (April 26, 2010 using NSS 3.12.6)
--------------------------------------------------
-
-** Skipped tests due to missing transforms: RIPEMD160, SHA224, RSA/OAEP, GOST
-
-aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160
-aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
-aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
-aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
-aleksey-xmldsig-01/enveloped-gost
-merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes
-merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
-01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1
-
-** Failed tests due to no support for CRLs in XML document
-
-merlin-xmldsig-twenty-three/signature-x509-crt-crl
-
-
--------------------------------------------------
-* xmlsec-mscrypto (May 09, 2010 using Windows XP SP3)
--------------------------------------------------
-
-** Skipped tests due to missing transforms: RIPEMD160, SHA224
-
-aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160
-aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
-aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
-aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
-merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes
-
-** Failed tests due to no GOST crypto providers on test machine
-
-aleksey-xmldsig-01/enveloped-gost
-
--------------------------------------------------
-* xmlsec-gnutls (May 24, 2010 using GnuTLS)
--------------------------------------------------
-
-** Skipped tests due to missing transforms: RSA PKCS/OAEP, GOST
-
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
-aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
-merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5
-merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
-aleksey-xmldsig-01/enveloped-gost
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-crl
-
-01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5
-01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5
-01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5
-01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5
-01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1
-
--------------------------------------------------
-* xmlsec-gcrypt (May 09, 2010 using GCrypt)
--------------------------------------------------
-
-** Skipped tests due to missing transforms: DSA, RSA PKCS/OAEP, X509, GOST
-
-aleksey-xmldsig-01/enveloping-dsa-x509chain
-aleksey-xmldsig-01/enveloping-rsa-x509chain
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224
-aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64
-aleksey-xmldsig-01/enveloping-md5-rsa-md5
-aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160
-aleksey-xmldsig-01/enveloping-sha1-rsa-sha1
-aleksey-xmldsig-01/enveloping-sha224-rsa-sha224
-aleksey-xmldsig-01/enveloping-sha256-rsa-sha256
-aleksey-xmldsig-01/enveloping-sha384-rsa-sha384
-aleksey-xmldsig-01/enveloping-sha512-rsa-sha512
-aleksey-xmldsig-01/enveloping-expired-cert
-aleksey-xmldsig-01/x509data-test
-aleksey-xmldsig-01/x509data-sn-test
-
-merlin-xmldsig-twenty-three/signature-keyname
-merlin-xmldsig-twenty-three/signature-x509-crt
-merlin-xmldsig-twenty-three/signature-x509-sn
-merlin-xmldsig-twenty-three/signature-x509-is
-merlin-xmldsig-twenty-three/signature-x509-ski
-merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt
-merlin-xmldsig-twenty-three/signature
-merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5
-merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p
-phaos-xmldsig-three/signature-big
-phaos-xmldsig-three/signature-dsa-detached
-phaos-xmldsig-three/signature-dsa-enveloped
-phaos-xmldsig-three/signature-dsa-enveloping
-phaos-xmldsig-three/signature-dsa-manifest
-phaos-xmldsig-three/signature-rsa-detached-b64-transform
-phaos-xmldsig-three/signature-rsa-detached
-phaos-xmldsig-three/signature-rsa-detached-xpath-transform
-phaos-xmldsig-three/signature-rsa-detached-xslt-transform-retrieval-method
-phaos-xmldsig-three/signature-rsa-detached-xslt-transform
-phaos-xmldsig-three/signature-rsa-enveloped
-phaos-xmldsig-three/signature-rsa-enveloping
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert-chain
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-cert
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-issuer-serial
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-ski
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-subject-name
-phaos-xmldsig-three/signature-rsa-manifest
-phaos-xmldsig-three/signature-rsa-xpath-transform-enveloped
-aleksey-xmldsig-01/enveloped-gost
-merlin-xmldsig-twenty-three/signature-x509-crt-crl
-aleksey-xmldsig-01/enveloping-expired-cert
-phaos-xmldsig-three/signature-rsa-detached-xslt-transform-bad-retrieval-method
-phaos-xmldsig-three/signature-rsa-enveloped-bad-digest-val
-phaos-xmldsig-three/signature-rsa-enveloped-bad-sig
-phaos-xmldsig-three/signature-rsa-manifest-x509-data-crl
-
-merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5
-merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p
-01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5
-01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes128-kt-rsa1_5
-01-phaos-xmlenc-3/enc-element-aes128-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-element-aes192-kt-rsa_oaep_sha1
-01-phaos-xmlenc-3/enc-text-aes192-kt-rsa1_5
-01-phaos-xmlenc-3/enc-content-aes256-kt-rsa1_5
-01-phaos-xmlenc-3/enc-text-aes256-kt-rsa_oaep_sha1
+https://github.com/lsh123/xmlsec/issues
diff --git a/apps/cmdline.c b/apps/cmdline.c
index f477a4b6..7bf0907e 100644
--- a/apps/cmdline.c
+++ b/apps/cmdline.c
@@ -84,7 +84,7 @@ xmlSecAppCmdLineParamsListParse(xmlSecAppCmdLineParamPtr* params,
assert(params != NULL);
assert(argv != NULL);
- while((pos < argc) && (argv[pos][0] == '-')) {
+ while((pos < argc) && (argv[pos][0] == '-') && (strcmp(argv[pos], XMLSEC_STDOUT_FILENAME) != 0)) {
param = xmlSecAppCmdLineParamsListFind(params, topics, argv[pos]);
if(param == NULL) {
fprintf(stderr, "Error: parameter \"%s\" is not supported or the requested\nfeature might have been disabled during compilation.\n", argv[pos]);
@@ -101,15 +101,13 @@ xmlSecAppCmdLineParamsListParse(xmlSecAppCmdLineParamPtr* params,
/* check that all parameters at the end are filenames */
for(ii = pos; (ii < argc); ++ii) {
- if(argv[ii][0] == '-') {
+ if((argv[ii][0] == '-') && (strcmp(argv[pos], XMLSEC_STDOUT_FILENAME) != 0)) {
fprintf(stderr, "Error: filename is expected instead of parameter \"%s\".\n", argv[ii]);
return(-1);
-
}
}
-
-
-
+
+ /* done */
return(pos);
}
@@ -179,8 +177,7 @@ xmlSecAppCmdLineMatchParam(const char* argvParam, const char* paramName,
assert(paramName != NULL);
if(canHaveNameString != 0) {
- int len = strlen(paramName);
-
+ size_t len = strlen(paramName);
if((strncmp(argvParam, paramName, len) == 0) &&
((argvParam[len] == '\0') || (argvParam[len] == ':'))) {
@@ -303,7 +300,11 @@ xmlSecAppCmdLineParamRead(xmlSecAppCmdLineParamPtr param, const char** argv, int
return(-1);
}
value->strValue = argv[++pos];
+#ifdef WIN32
+ if(sscanf_s(value->strValue, "%d", &(value->intValue)) != 1) {
+#else /* WIN32 */
if(sscanf(value->strValue, "%d", &(value->intValue)) != 1) {
+#endif /* WIN32 */
fprintf(stderr, "Error: integer argument \"%s\" is invalid.\n", value->strValue);
return(-1);
}
@@ -333,10 +334,16 @@ xmlSecAppCmdLineTimeParamRead(const char* str, time_t* t) {
}
memset(&tm, 0, sizeof(tm));
tm.tm_isdst = -1;
-
+
+#ifdef WIN32
+ n = sscanf_s(str, "%4d-%2d-%2d%*c%2d:%2d:%2d",
+ &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
+ &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
+#else /* WIN32 */
n = sscanf(str, "%4d-%2d-%2d%*c%2d:%2d:%2d",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec);
+#endif /* WIN32 */
if((n != 6) || (tm.tm_year < 1900)
|| (tm.tm_mon < 1) || (tm.tm_mon > 12)
|| (tm.tm_mday < 1) || (tm.tm_mday > 31)
diff --git a/apps/cmdline.h b/apps/cmdline.h
index f47a201d..518faf06 100644
--- a/apps/cmdline.h
+++ b/apps/cmdline.h
@@ -10,12 +10,12 @@
#ifndef __XMLSEC_APPS_CMDLINE_H__
#define __XMLSEC_APPS_CMDLINE_H__
+#include <time.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#include <time.h>
-
typedef struct _xmlSecAppCmdLineParam xmlSecAppCmdLineParam,
*xmlSecAppCmdLineParamPtr;
typedef struct _xmlSecAppCmdLineValue xmlSecAppCmdLineValue,
@@ -26,6 +26,8 @@ typedef unsigned int xmlSecAppCmdLineParamTopic;
#define xmlSecAppCmdLineParamFlagParamNameValue 0x0001
#define xmlSecAppCmdLineParamFlagMultipleValues 0x0002
+#define XMLSEC_STDOUT_FILENAME "-"
+
typedef enum {
xmlSecAppCmdLineParamTypeFlag,
xmlSecAppCmdLineParamTypeString,
@@ -53,7 +55,7 @@ time_t xmlSecAppCmdLineParamGetTime (xmlSecAppCmdLineParamPt
time_t def);
int xmlSecAppCmdLineParamsListParse (xmlSecAppCmdLineParamPtr* params,
- xmlSecAppCmdLineParamTopic topcis,
+ xmlSecAppCmdLineParamTopic topics,
const char** argv,
int argc,
int pos);
diff --git a/apps/crypto.c b/apps/crypto.c
index 1e53bc72..cb23f5b2 100644
--- a/apps/crypto.c
+++ b/apps/crypto.c
@@ -23,19 +23,11 @@
int
xmlSecAppCryptoInit(const char* config) {
if(xmlSecCryptoAppInit(config) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppInit failed\n");
return(-1);
}
if(xmlSecCryptoInit() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoInit failed\n");
return(-1);
}
@@ -45,20 +37,12 @@ xmlSecAppCryptoInit(const char* config) {
int
xmlSecAppCryptoShutdown(void) {
if(xmlSecCryptoShutdown() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoShutdown",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoShutdown failed\n");
return(-1);
}
if(xmlSecCryptoAppShutdown() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppShutdown",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppShutdown failed\n");
return(-1);
}
return(0);
@@ -115,24 +99,16 @@ xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad(xmlSecKeysMngrPtr mngr,
key = xmlSecCryptoAppKeyLoad(files, format, pwd,
xmlSecCryptoAppGetDefaultPwdCallback(), (void*)files);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppKeyLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(files));
+ fprintf(stderr, "Error: xmlSecCryptoAppKeyLoad failed: file=%s\n",
+ xmlSecErrorsSafeString(files));
return(-1);
}
if(name != NULL) {
ret = xmlSecKeySetName(key, BAD_CAST name);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(name));
+ if(ret < 0) {
+ fprintf(stderr, "Error: xmlSecKeySetName failed: name=%s\n",
+ xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
@@ -141,13 +117,9 @@ xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad(xmlSecKeysMngrPtr mngr,
#ifndef XMLSEC_NO_X509
for(files += strlen(files) + 1; (files[0] != '\0'); files += strlen(files) + 1) {
ret = xmlSecCryptoAppKeyCertLoad(key, files, format);
- if(ret < 0){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppKeyCertLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(files));
+ if(ret < 0) {
+ fprintf(stderr, "Error: xmlSecCryptoAppKeyCertLoad failed: file=%s\n",
+ xmlSecErrorsSafeString(files));
xmlSecKeyDestroy(key);
return(-1);
}
@@ -155,22 +127,14 @@ xmlSecAppCryptoSimpleKeysMngrKeyAndCertsLoad(xmlSecKeysMngrPtr mngr,
#else /* XMLSEC_NO_X509 */
files += strlen(files) + 1;
if(files[0] != '\0') {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "x509",
- XMLSEC_ERRORS_R_DISABLED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: X509 support is disabled\n");
return(-1);
}
#endif /* XMLSEC_NO_X509 */
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppDefaultKeysMngrAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppDefaultKeysMngrAdoptKey failed\n");
xmlSecKeyDestroy(key);
return(-1);
}
@@ -191,24 +155,16 @@ xmlSecAppCryptoSimpleKeysMngrPkcs12KeyLoad(xmlSecKeysMngrPtr mngr, const char *f
key = xmlSecCryptoAppKeyLoad(filename, xmlSecKeyDataFormatPkcs12, pwd,
xmlSecCryptoAppGetDefaultPwdCallback(), (void*)filename);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppKeyLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ fprintf(stderr, "Error: xmlSecCryptoAppKeyLoad failed: filename=%s\n",
+ xmlSecErrorsSafeString(filename));
return(-1);
}
if(name != NULL) {
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(name));
+ fprintf(stderr, "Error: xmlSecKeySetName failed: name=%s\n",
+ xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
@@ -216,22 +172,14 @@ xmlSecAppCryptoSimpleKeysMngrPkcs12KeyLoad(xmlSecKeysMngrPtr mngr, const char *f
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppDefaultKeysMngrAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppDefaultKeysMngrAdoptKey failed\n");
xmlSecKeyDestroy(key);
return(-1);
}
return(0);
#else /* XMLSEC_NO_X509 */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "x509",
- XMLSEC_ERRORS_R_DISABLED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: X509 support is disabled\n");
return(-1);
#endif /* XMLSEC_NO_X509 */
}
@@ -250,33 +198,22 @@ xmlSecAppCryptoSimpleKeysMngrBinaryKeyLoad(xmlSecKeysMngrPtr mngr, const char* k
dataId = xmlSecKeyDataIdListFindByName(xmlSecKeyDataIdsGet(), BAD_CAST keyKlass,
xmlSecKeyDataUsageAny);
if(dataId == xmlSecKeyDataIdUnknown) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdListFindByName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(keyKlass));
- return(-1);
+ fprintf(stderr, "Error: xmlSecKeyDataIdListFindByName failed keyKlass=%s\n",
+ xmlSecErrorsSafeString(keyKlass));
+ return(-1);
}
key = xmlSecKeyReadBinaryFile(dataId, filename);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyReadBinaryFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecKeyReadBinaryFile failed filename=%s\n",
+ xmlSecErrorsSafeString(filename));
return(-1);
}
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(name));
+ fprintf(stderr, "Error: xmlSecKeySetName failed: name=%s\n",
+ xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
return(-1);
}
@@ -284,11 +221,7 @@ xmlSecAppCryptoSimpleKeysMngrBinaryKeyLoad(xmlSecKeysMngrPtr mngr, const char* k
/* finally add it to keys manager */
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppDefaultKeysMngrAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppDefaultKeysMngrAdoptKey failed\n");
xmlSecKeyDestroy(key);
return(-1);
}
@@ -307,22 +240,14 @@ xmlSecAppCryptoSimpleKeysMngrKeyGenerate(xmlSecKeysMngrPtr mngr, const char* key
key = xmlSecAppCryptoKeyGenerate(keyKlassAndSize, name, xmlSecKeyDataTypePermanent);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAppCryptoSimpleKeysMngrKeyGenerate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(name));
+ fprintf(stderr, "Error: xmlSecAppCryptoSimpleKeysMngrKeyGenerate failed: name=%s\n",
+ xmlSecErrorsSafeString(name));
return(-1);
}
ret = xmlSecCryptoAppDefaultKeysMngrAdoptKey(mngr, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoAppDefaultKeysMngrAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ fprintf(stderr, "Error: xmlSecCryptoAppDefaultKeysMngrAdoptKey failed\n");
xmlSecKeyDestroy(key);
return(-1);
}
@@ -341,56 +266,38 @@ xmlSecAppCryptoKeyGenerate(const char* keyKlassAndSize, const char* name, xmlSec
buf = (char*) xmlStrdup(BAD_CAST keyKlassAndSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(name));
+ fprintf(stderr, "Error: xmlSecStrdupError(keyKlassAndSize) failed\n");
return(NULL);
}
/* separate key klass and size */
p = strchr(buf, '-');
if(p == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "key size is not specified %s",
+ fprintf(stderr, "Error: key size is not specified in the key definition \"%s\"\n",
xmlSecErrorsSafeString(buf));
xmlFree(buf);
return(NULL);
}
*(p++) = '\0';
size = atoi(p);
-
+
key = xmlSecKeyGenerateByName(BAD_CAST buf, size, type);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyGenerate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "klass=%s;size=%d",
- xmlSecErrorsSafeString(buf),
- size);
+ fprintf(stderr, "Error: xmlSecKeyGenerateByName() failed: name=%s;size=%d;type=%d\n",
+ xmlSecErrorsSafeString(buf), size, (int)type);
xmlFree(buf);
return(NULL);
}
-
+
ret = xmlSecKeySetName(key, BAD_CAST name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=\"%s\"",
- xmlSecErrorsSafeString(name));
+ fprintf(stderr, "Error: xmlSecKeySetName failed: name=%s\n",
+ xmlSecErrorsSafeString(name));
xmlSecKeyDestroy(key);
xmlFree(buf);
return(NULL);
}
-
+
xmlFree(buf);
return(key);
}
diff --git a/apps/crypto.h b/apps/crypto.h
index b41d0c0d..3b8e1fc3 100644
--- a/apps/crypto.h
+++ b/apps/crypto.h
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_APPS_CRYPTO_H__
#define __XMLSEC_APPS_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
@@ -20,6 +16,10 @@ extern "C" {
#include <xmlsec/keysmngr.h>
#include <xmlsec/crypto.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
int xmlSecAppCryptoInit (const char* config);
int xmlSecAppCryptoShutdown (void);
diff --git a/apps/xmlsec.c b/apps/xmlsec.c
index 94ac80af..2da9cd19 100644
--- a/apps/xmlsec.c
+++ b/apps/xmlsec.c
@@ -28,11 +28,13 @@
#include <libexslt/exslt.h>
#endif /* XMLSEC_NO_XSLT */
+#define XMLSEC_PRIVATE
#include <xmlsec/xmlsec.h>
#include <xmlsec/xmltree.h>
#include <xmlsec/keys.h>
#include <xmlsec/keyinfo.h>
#include <xmlsec/keysmngr.h>
+#include <xmlsec/io.h>
#include <xmlsec/transforms.h>
#include <xmlsec/xmldsig.h>
#include <xmlsec/xmlenc.h>
@@ -512,6 +514,31 @@ static xmlSecAppCmdLineParam idAttrParam = {
NULL
};
+static xmlSecAppCmdLineParam xxeParam = {
+ xmlSecAppCmdLineTopicAll,
+ "--xxe",
+ NULL,
+ "--xxe"
+ "\n\tenable External Entity resolution."
+ "\n\tWARNING: this may allow the reading of arbitrary files and URLs,"
+ "\n\tcontrolled by the input XML document. Use with caution!",
+ xmlSecAppCmdLineParamTypeFlag,
+ xmlSecAppCmdLineParamFlagNone,
+ NULL
+};
+
+static xmlSecAppCmdLineParam urlMapParam = {
+ xmlSecAppCmdLineTopicDSigCommon |
+ xmlSecAppCmdLineTopicEncCommon,
+ "--url-map",
+ NULL,
+ "--url-map:<url> <file>"
+ "\n\tmaps a given <url> to the given <file> for loading external resources",
+ xmlSecAppCmdLineParamTypeString,
+ xmlSecAppCmdLineParamFlagParamNameValue | xmlSecAppCmdLineParamFlagMultipleValues,
+ NULL
+};
+
/****************************************************************
*
@@ -643,6 +670,17 @@ static xmlSecAppCmdLineParam pkcs12Param = {
NULL
};
+static xmlSecAppCmdLineParam pkcs12PersistParam = {
+ xmlSecAppCmdLineTopicKeysMngr,
+ "--pkcs12-persist",
+ NULL,
+ "--pkcs12-persist"
+ "\n\tpersist loaded private key",
+ xmlSecAppCmdLineParamTypeFlag,
+ xmlSecAppCmdLineParamFlagNone,
+ NULL
+};
+
static xmlSecAppCmdLineParam pubkeyCertParam = {
xmlSecAppCmdLineTopicKeysMngr,
"--pubkey-cert-pem",
@@ -742,6 +780,17 @@ static xmlSecAppCmdLineParam X509SkipStrictChecksParam = {
xmlSecAppCmdLineParamFlagNone,
NULL
};
+
+static xmlSecAppCmdLineParam X509DontVerifyCerts = {
+ xmlSecAppCmdLineTopicDSigCommon,
+ "--insecure",
+ NULL,
+ "--insecure"
+ "\n\tdo not verify certificates",
+ xmlSecAppCmdLineParamTypeFlag,
+ xmlSecAppCmdLineParamFlagNone,
+ NULL
+};
#endif /* XMLSEC_NO_X509 */
static xmlSecAppCmdLineParamPtr parameters[] = {
@@ -795,6 +844,7 @@ static xmlSecAppCmdLineParamPtr parameters[] = {
&pwdParam,
#ifndef XMLSEC_NO_X509
&pkcs12Param,
+ &pkcs12PersistParam,
&pubkeyCertParam,
&pubkeyCertDerParam,
&trustedParam,
@@ -804,6 +854,7 @@ static xmlSecAppCmdLineParamPtr parameters[] = {
&verificationTimeParam,
&depthParam,
&X509SkipStrictChecksParam,
+ &X509DontVerifyCerts,
#endif /* XMLSEC_NO_X509 */
/* General configuration params */
@@ -813,6 +864,8 @@ static xmlSecAppCmdLineParamPtr parameters[] = {
&disableErrorMsgsParam,
&printCryptoErrorMsgsParam,
&helpParam,
+ &xxeParam,
+ &urlMapParam,
/* MUST be the last one */
NULL
@@ -895,31 +948,70 @@ static int xmlSecAppAddIDAttr (xmlNodePtr cur,
const xmlChar* node,
const xmlChar* nsHref);
+
+static int xmlSecAppInputMatchCallback (char const * filename);
+static void* xmlSecAppInputOpenCallback (char const * filename);
+static int xmlSecAppInputReadCallback (void * context,
+ char * buffer,
+ int len);
+static int xmlSecAppInputCloseCallback (void * context);
+
+
+
xmlSecKeysMngrPtr gKeysMngr = NULL;
int repeats = 1;
int print_debug = 0;
+int print_verbose_debug = 0;
+int block_network_io = 0;
clock_t total_time = 0;
const char* xmlsec_crypto = NULL;
const char* tmp = NULL;
+const char** utf8_argv = NULL; /* TODO: this should be xmlChar** but it will break things downstream */
+
+#if defined(WIN32) && defined(UNICODE)
+int wmain(int argc, wchar_t *argv[ ], wchar_t *envp[ ]) {
+ UNREFERENCED_PARAMETER(envp);
+#else /* defined(WIN32) && defined(UNICODE) */
int main(int argc, const char **argv) {
+#endif /* defined(WIN32) && defined(UNICODE) */
xmlSecAppCmdLineParamTopic cmdLineTopics;
xmlSecAppCommand command, subCommand;
int pos, i;
int res = 1;
+#if defined(WIN32)
+ /* convert command line to UTF8 from locale or UNICODE */
+ utf8_argv = (char**)xmlMalloc(sizeof(char*) * argc);
+ if(utf8_argv == NULL) {
+ fprintf(stderr, "Error: can not allocate memory (%d bytes)\n", (int)sizeof(char*) * argc);
+ goto fail;
+ }
+ memset((char**)utf8_argv, 0, sizeof(char*) * argc);
+ for(i = 0; i < argc; ++i) {
+ utf8_argv[i] = (const char*)xmlSecWin32ConvertTstrToUtf8(argv[i]);
+ if(utf8_argv[i] == NULL) {
+ fprintf(stderr, "Error: can not convert command line parameter at position %d to UTF8\n", i);
+ goto fail;
+ }
+ }
+#else /* defined(WIN32) */
+ utf8_argv = argv;
+#endif /* defined(WIN32) */
+
/* read the command (first argument) */
if(argc < 2) {
+ fprintf(stderr, "Error: not enough arguments\n");
xmlSecAppPrintUsage();
goto fail;
}
- command = xmlSecAppParseCommand(argv[1], &cmdLineTopics, &subCommand);
+ command = xmlSecAppParseCommand(utf8_argv[1], &cmdLineTopics, &subCommand);
if(command == xmlSecAppCommandUnknown) {
- fprintf(stderr, "Error: unknown command \"%s\"\n", argv[1]);
+ fprintf(stderr, "Error: unknown command \"%s\"\n", utf8_argv[1]);
xmlSecAppPrintUsage();
goto fail;
}
-
+
/* do as much as we can w/o initialization */
if(command == xmlSecAppCommandHelp) {
xmlSecAppPrintHelp(subCommand, cmdLineTopics);
@@ -928,21 +1020,21 @@ int main(int argc, const char **argv) {
fprintf(stdout, "%s %s (%s)\n", PACKAGE, XMLSEC_VERSION, xmlSecGetDefaultCrypto());
goto success;
}
-
+
/* parse command line */
- pos = xmlSecAppCmdLineParamsListParse(parameters, cmdLineTopics, argv, argc, 2);
+ pos = xmlSecAppCmdLineParamsListParse(parameters, cmdLineTopics, utf8_argv, argc, 2);
if(pos < 0) {
fprintf(stderr, "Error: invalid parameters\n");
xmlSecAppPrintUsage();
goto fail;
}
-
+
/* is it a help request? */
if(xmlSecAppCmdLineParamIsSet(&helpParam)) {
xmlSecAppPrintHelp(command, cmdLineTopics);
goto success;
}
-
+
/* we need to have some files at the end */
switch(command) {
case xmlSecAppCommandKeys:
@@ -968,8 +1060,8 @@ int main(int argc, const char **argv) {
xmlsec_crypto = tmp;
}
#else /* !defined(XMLSEC_NO_CRYPTO_DYNAMIC_LOADING) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING) */
- if((tmp != NULL) && (xmlStrcmp(BAD_CAST tmp, xmlSecGetDefaultCrypto()) != 0)) {
- fprintf(stderr, "Error: dynaimc crypto libraries loading is disabled and the only available crypto library is '%s'\n", xmlSecGetDefaultCrypto());
+ if((tmp != NULL) && (xmlStrcmp(BAD_CAST tmp, xmlSecGetDefaultCrypto()) != 0) && (xmlStrcmp(BAD_CAST tmp, BAD_CAST "default") != 0)) {
+ fprintf(stderr, "Error: dynamic xmlsec-crypto library loading is disabled and the only available crypto library is '%s'\n", xmlSecGetDefaultCrypto());
xmlSecAppPrintUsage();
goto fail;
}
@@ -988,6 +1080,11 @@ int main(int argc, const char **argv) {
goto fail;
}
+ /* enable XXE? */
+ if(xmlSecAppCmdLineParamIsSet(&xxeParam)) {
+ xmlSecSetExternalEntityLoader( NULL ); // reset to libxml2's default handler
+ }
+
/* get the "repeats" number */
if(xmlSecAppCmdLineParamIsSet(&repeatParam) &&
(xmlSecAppCmdLineParamGetInt(&repeatParam, 1) > 0)) {
@@ -1003,12 +1100,12 @@ int main(int argc, const char **argv) {
break;
case xmlSecAppCommandCheckKeyData:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppCheckKeyData(argv[i]) < 0) {
- fprintf(stderr, "Error: key data \"%s\" not found\n", argv[i]);
- goto fail;
- } else {
- fprintf(stdout, "Key data \"%s\" found\n", argv[i]);
- }
+ if(xmlSecAppCheckKeyData(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: key data \"%s\" not found\n", utf8_argv[i]);
+ goto fail;
+ } else {
+ fprintf(stdout, "Key data \"%s\" found\n", utf8_argv[i]);
+ }
}
break;
case xmlSecAppCommandListTransforms:
@@ -1016,18 +1113,18 @@ int main(int argc, const char **argv) {
break;
case xmlSecAppCommandCheckTransforms:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppCheckTransform(argv[i]) < 0) {
- fprintf(stderr, "Error: transform \"%s\" not found\n", argv[i]);
- goto fail;
- } else {
- fprintf(stdout, "Transforms \"%s\" found\n", argv[i]);
- }
+ if(xmlSecAppCheckTransform(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: transform \"%s\" not found\n", utf8_argv[i]);
+ goto fail;
+ } else {
+ fprintf(stdout, "Transforms \"%s\" found\n", utf8_argv[i]);
+ }
}
break;
case xmlSecAppCommandKeys:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppCryptoSimpleKeysMngrSave(gKeysMngr, argv[i], xmlSecKeyDataTypeAny) < 0) {
- fprintf(stderr, "Error: failed to save keys to file \"%s\"\n", argv[i]);
+ if(xmlSecAppCryptoSimpleKeysMngrSave(gKeysMngr, utf8_argv[i], xmlSecKeyDataTypeAny) < 0) {
+ fprintf(stderr, "Error: failed to save keys to file \"%s\"\n", utf8_argv[i]);
goto fail;
}
}
@@ -1035,16 +1132,16 @@ int main(int argc, const char **argv) {
#ifndef XMLSEC_NO_XMLDSIG
case xmlSecAppCommandSign:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppSignFile(argv[i]) < 0) {
- fprintf(stderr, "Error: failed to sign file \"%s\"\n", argv[i]);
+ if(xmlSecAppSignFile(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: failed to sign file \"%s\"\n", utf8_argv[i]);
goto fail;
}
}
break;
case xmlSecAppCommandVerify:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppVerifyFile(argv[i]) < 0) {
- fprintf(stderr, "Error: failed to verify file \"%s\"\n", argv[i]);
+ if(xmlSecAppVerifyFile(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: failed to verify file \"%s\"\n", utf8_argv[i]);
goto fail;
}
}
@@ -1062,16 +1159,16 @@ int main(int argc, const char **argv) {
#ifndef XMLSEC_NO_XMLENC
case xmlSecAppCommandEncrypt:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppEncryptFile(argv[i]) < 0) {
- fprintf(stderr, "Error: failed to encrypt file with template \"%s\"\n", argv[i]);
+ if(xmlSecAppEncryptFile(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: failed to encrypt file with template \"%s\"\n", utf8_argv[i]);
goto fail;
}
}
break;
case xmlSecAppCommandDecrypt:
for(i = pos; i < argc; ++i) {
- if(xmlSecAppDecryptFile(argv[i]) < 0) {
- fprintf(stderr, "Error: failed to decrypt file \"%s\"\n", argv[i]);
+ if(xmlSecAppDecryptFile(utf8_argv[i]) < 0) {
+ fprintf(stderr, "Error: failed to decrypt file \"%s\"\n", utf8_argv[i]);
goto fail;
}
}
@@ -1111,6 +1208,18 @@ fail:
}
xmlSecAppShutdown();
xmlSecAppCmdLineParamsListClean(parameters);
+#if defined(WIN32)
+ if(utf8_argv != NULL) {
+ for(i = 0; i < argc; ++i) {
+ if(utf8_argv[i] != NULL) {
+ xmlFree(BAD_CAST utf8_argv[i]);
+ utf8_argv[i] = NULL;
+ }
+ }
+ xmlFree(BAD_CAST utf8_argv);
+ utf8_argv = NULL;
+ }
+#endif /* defined(WIN32) */
return(res);
}
@@ -1460,10 +1569,6 @@ xmlSecAppPrintDSigCtx(xmlSecDSigCtxPtr dsigCtx) {
return;
}
- if(xmlSecAppCmdLineParamIsSet(&printDebugParam) || xmlSecAppCmdLineParamIsSet(&printXmlDebugParam)) {
- print_debug = 0;
- }
-
/* print debug info if requested */
if((print_debug != 0) || xmlSecAppCmdLineParamIsSet(&printDebugParam)) {
xmlSecDSigCtxDebugDump(dsigCtx, stdout);
@@ -1638,7 +1743,7 @@ done:
#ifndef XMLSEC_NO_TMPL_TEST
static int
xmlSecAppEncryptTmpl(void) {
- const char* data = "Hello, World!";
+ const xmlChar data[] = "Hello, World!";
xmlSecEncCtx encCtx;
xmlDocPtr doc = NULL;
xmlNodePtr cur;
@@ -1688,7 +1793,7 @@ xmlSecAppEncryptTmpl(void) {
/* encrypt */
start_time = clock();
if(xmlSecEncCtxBinaryEncrypt(&encCtx, xmlDocGetRootElement(doc),
- (const xmlSecByte*)data, strlen(data)) < 0) {
+ (const xmlSecByte*)data, xmlStrlen(data)) < 0) {
fprintf(stderr, "Error: failed to encrypt data\n");
goto done;
}
@@ -1806,6 +1911,8 @@ static int
xmlSecAppPrepareKeyInfoReadCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
xmlSecAppCmdLineValuePtr value;
int ret;
+ xmlSecKeyDataId dataId;
+ const char* p;
if(keyInfoCtx == NULL) {
fprintf(stderr, "Error: key info context is null\n");
@@ -1822,6 +1929,9 @@ xmlSecAppPrepareKeyInfoReadCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
if(xmlSecAppCmdLineParamIsSet(&X509SkipStrictChecksParam)) {
keyInfoCtx->flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS;
}
+ if(xmlSecAppCmdLineParamIsSet(&X509DontVerifyCerts)) {
+ keyInfoCtx->flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
+ }
#endif /* XMLSEC_NO_X509 */
/* read enabled key data list */
@@ -1830,21 +1940,18 @@ xmlSecAppPrepareKeyInfoReadCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
fprintf(stderr, "Error: invalid value for option \"%s\".\n",
enabledKeyDataParam.fullName);
return(-1);
- } else {
- xmlSecKeyDataId dataId;
- const char* p;
-
- for(p = value->strListValue; (p != NULL) && ((*p) != '\0'); p += strlen(p)) {
- dataId = xmlSecKeyDataIdListFindByName(xmlSecKeyDataIdsGet(), BAD_CAST p, xmlSecKeyDataUsageAny);
- if(dataId == xmlSecKeyDataIdUnknown) {
- fprintf(stderr, "Error: key data \"%s\" is unknown.\n", p);
- return(-1);
- }
- ret = xmlSecPtrListAdd(&(keyInfoCtx->enabledKeyData), (const xmlSecPtr)dataId);
- if(ret < 0) {
- fprintf(stderr, "Error: failed to enable key data \"%s\".\n", p);
- return(-1);
- }
+ }
+
+ for(p = value->strListValue; (p != NULL) && ((*p) != '\0'); p += strlen(p)) {
+ dataId = xmlSecKeyDataIdListFindByName(xmlSecKeyDataIdsGet(), BAD_CAST p, xmlSecKeyDataUsageAny);
+ if(dataId == xmlSecKeyDataIdUnknown) {
+ fprintf(stderr, "Error: key data \"%s\" is unknown.\n", p);
+ return(-1);
+ }
+ ret = xmlSecPtrListAdd(&(keyInfoCtx->enabledKeyData), (const xmlSecPtr)dataId);
+ if(ret < 0) {
+ fprintf(stderr, "Error: failed to enable key data \"%s\".\n", p);
+ return(-1);
}
}
}
@@ -2053,6 +2160,9 @@ xmlSecAppLoadKeys(void) {
#ifndef XMLSEC_NO_X509
/* read all pkcs12 files */
+ if(xmlSecAppCmdLineParamIsSet(&pkcs12PersistParam)) {
+ xmlSecImportSetPersistKey();
+ }
for(value = pkcs12Param.value; value != NULL; value = value->next) {
if(value->strValue == NULL) {
fprintf(stderr, "Error: invalid value for option \"%s\".\n", pkcs12Param.fullName);
@@ -2159,6 +2269,123 @@ xmlSecAppLoadKeys(void) {
return(0);
}
+/**
+ * Callbacks for supporting mapping URLs to files
+ */
+static int
+xmlSecAppInputMatchCallback(char const* filename) {
+ xmlSecAppCmdLineValuePtr value;
+
+ if(filename == NULL) {
+ return(0);
+ }
+
+ for(value = urlMapParam.value; value != NULL; value = value->next) {
+ if((value->strValue == NULL) || (value->paramNameValue == NULL)) {
+ continue;
+ }
+ if(strcmp(filename, value->paramNameValue) == 0) {
+ if(print_verbose_debug != 0) {
+ fprintf(stderr, "Debug: found mapped file \"%s\" for url \"%s\"\n", value->strValue, filename);
+ }
+ return(1);
+ }
+ }
+
+ if(block_network_io != 0) {
+ static const xmlChar http[] = "http://";
+ static const xmlChar https[] = "https://";
+ static const xmlChar ftp[] = "ftp://";
+ if(xmlStrncasecmp(BAD_CAST filename, http, xmlStrlen(http)) == 0) {
+ if(print_verbose_debug != 0) {
+ fprintf(stderr, "Debug: blocking access to \"%s\"\n", filename);
+ }
+ return(1);
+ }
+ if(xmlStrncasecmp(BAD_CAST filename, https, xmlStrlen(https)) == 0) {
+ if(print_verbose_debug != 0) {
+ fprintf(stderr, "Debug: blocking access to \"%s\"\n", filename);
+ }
+ return(1);
+ }
+ if(xmlStrncasecmp(BAD_CAST filename, ftp, xmlStrlen(ftp)) == 0) {
+ if(print_verbose_debug != 0) {
+ fprintf(stderr, "Debug: blocking access to \"%s\"\n", filename);
+ }
+ return(1);
+ }
+ }
+ return(0);
+}
+
+static void*
+xmlSecAppInputOpenCallback(char const* filename) {
+ xmlSecAppCmdLineValuePtr value;
+
+ if(filename == NULL) {
+ return(NULL);
+ }
+
+ for(value = urlMapParam.value; value != NULL; value = value->next) {
+ if((value->strValue == NULL) || (value->paramNameValue == NULL)) {
+ continue;
+ }
+ if(strcmp(filename, value->paramNameValue) == 0) {
+ FILE * f = NULL;
+#ifdef WIN32
+ fopen_s(&f, value->strValue, "rb");
+#else /* WIN32 */
+ f = fopen(value->strValue, "rb");
+#endif /* WIN32 */
+ if(f == NULL) {
+ fprintf(stdout, "Error: can not open file \"%s\" for url \"%s\"\n", value->strValue, filename);
+ return(NULL);
+ }
+ if(print_verbose_debug != 0) {
+ fprintf(stdout, "Debug: opened file \"%s\" for url \"%s\"\n", value->strValue, filename);
+ }
+ return(f);
+ }
+ }
+ return(NULL);
+}
+
+static int
+xmlSecAppInputReadCallback(void* context, char* buffer, int len) {
+ FILE* f = (FILE*)context;
+ size_t res;
+
+ if(f == NULL) {
+ return(-1);
+ }
+ if(feof(f)) {
+ return(0);
+ }
+ res = fread(buffer, 1, len, f);
+ if(ferror(f)) {
+ return(-1);
+ }
+ return((int)res);
+}
+
+static int xmlSecAppInputCloseCallback(void* context) {
+ FILE* f = (FILE*)context;
+ int ret;
+
+ if(f == NULL) {
+ return(-1);
+ }
+ ret = fclose(f);
+ if(ret != 0) {
+ return(-1);
+ }
+ if(print_verbose_debug != 0) {
+ fprintf(stdout, "Debug: closed file\n");
+ }
+ return(0);
+}
+
+
static int intialized = 0;
#ifndef XMLSEC_NO_XSLT
@@ -2167,6 +2394,8 @@ static xsltSecurityPrefsPtr xsltSecPrefs = NULL;
static int
xmlSecAppInit(void) {
+ int ret;
+
if(intialized != 0) {
return(0);
}
@@ -2194,7 +2423,8 @@ xmlSecAppInit(void) {
#endif /* XMLSEC_NO_XSLT */
/* Init xmlsec */
- if(xmlSecInit() < 0) {
+ ret = xmlSecInit();
+ if(ret < 0) {
fprintf(stderr, "Error: xmlsec intialization failed.\n");
return(-1);
}
@@ -2203,11 +2433,21 @@ xmlSecAppInit(void) {
return(-1);
}
+ /* Setup IO callbacks */
+ ret = xmlSecIORegisterCallbacks(xmlSecAppInputMatchCallback,
+ xmlSecAppInputOpenCallback,
+ xmlSecAppInputReadCallback,
+ xmlSecAppInputCloseCallback);
+ if(ret < 0) {
+ fprintf(stderr, "Error: xmlsec IO callbacks intialization failed.\n");
+ return(-1);
+ }
+
#if !defined(XMLSEC_NO_CRYPTO_DYNAMIC_LOADING) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING)
if(xmlSecCryptoDLLoadLibrary(BAD_CAST xmlsec_crypto) < 0) {
fprintf(stderr, "Error: unable to load xmlsec-%s library. Make sure that you have\n"
"this it installed, check shared libraries path (LD_LIBRARY_PATH)\n"
- "envornment variable or use \"--crypto\" option to specify different\n"
+ "environment variable or use \"--crypto\" option to specify different\n"
"crypto engine.\n",
((xmlsec_crypto != NULL) ? BAD_CAST xmlsec_crypto : xmlSecGetDefaultCrypto())
);
@@ -2252,6 +2492,11 @@ xmlSecAppXmlDataCreate(const char* filename, const xmlChar* defStartNodeName, co
xmlSecAppCmdLineValuePtr value;
xmlSecAppXmlDataPtr data;
xmlNodePtr cur = NULL;
+
+ xmlChar* attrName;
+ xmlChar* nodeName;
+ xmlChar* nsHref;
+ xmlChar* buf;
if(filename == NULL) {
fprintf(stderr, "Error: xml filename is null\n");
@@ -2299,41 +2544,37 @@ xmlSecAppXmlDataCreate(const char* filename, const xmlChar* defStartNodeName, co
idAttrParam.fullName);
xmlSecAppXmlDataDestroy(data);
return(NULL);
+ }
+ attrName = (value->paramNameValue != NULL) ? BAD_CAST value->paramNameValue : BAD_CAST "id";
+
+ buf = xmlStrdup(BAD_CAST value->strValue);
+ if(buf == NULL) {
+ fprintf(stderr, "Error: failed to duplicate string \"%s\"\n", value->strValue);
+ xmlSecAppXmlDataDestroy(data);
+ return(NULL);
+ }
+ nodeName = (xmlChar*)strrchr((char*)buf, ':');
+ if(nodeName != NULL) {
+ (*(nodeName++)) = '\0';
+ nsHref = buf;
} else {
- xmlChar* attrName = (value->paramNameValue != NULL) ? BAD_CAST value->paramNameValue : BAD_CAST "id";
- xmlChar* nodeName;
- xmlChar* nsHref;
- xmlChar* buf;
-
- buf = xmlStrdup(BAD_CAST value->strValue);
- if(buf == NULL) {
- fprintf(stderr, "Error: failed to duplicate string \"%s\"\n", value->strValue);
+ nodeName = buf;
+ nsHref = NULL;
+ }
+
+ /* process children first because it does not matter much but does simplify code */
+ cur = xmlSecGetNextElementNode(data->doc->children);
+ while(cur != NULL) {
+ if(xmlSecAppAddIDAttr(cur, attrName, nodeName, nsHref) < 0) {
+ fprintf(stderr, "Error: failed to add ID attribute \"%s\" for node \"%s\"\n", attrName, value->strValue);
+ xmlFree(buf);
xmlSecAppXmlDataDestroy(data);
return(NULL);
}
- nodeName = (xmlChar*)strrchr((char*)buf, ':');
- if(nodeName != NULL) {
- (*(nodeName++)) = '\0';
- nsHref = buf;
- } else {
- nodeName = buf;
- nsHref = NULL;
- }
-
- /* process children first because it does not matter much but does simplify code */
- cur = xmlSecGetNextElementNode(data->doc->children);
- while(cur != NULL) {
- if(xmlSecAppAddIDAttr(cur, attrName, nodeName, nsHref) < 0) {
- fprintf(stderr, "Error: failed to add ID attribute \"%s\" for node \"%s\"\n", attrName, value->strValue);
- xmlFree(buf);
- xmlSecAppXmlDataDestroy(data);
- return(NULL);
- }
- cur = xmlSecGetNextElementNode(cur->next);
- }
-
- xmlFree(buf);
+ cur = xmlSecGetNextElementNode(cur->next);
}
+
+ xmlFree(buf);
}
@@ -2350,7 +2591,6 @@ xmlSecAppXmlDataCreate(const char* filename, const xmlChar* defStartNodeName, co
}
cur = attr->parent;
} else if(xmlSecAppCmdLineParamGetString(&nodeNameParam) != NULL) {
- xmlChar* buf;
xmlChar* name;
xmlChar* ns;
@@ -2621,6 +2861,9 @@ static void
xmlSecAppPrintHelp(xmlSecAppCommand command, xmlSecAppCmdLineParamTopic topics) {
switch(command) {
case xmlSecAppCommandUnknown:
+ fprintf(stderr, "Unknown command\n");
+ fprintf(stdout, "%s%s\n", helpCommands1, helpCommands2);
+ break;
case xmlSecAppCommandHelp:
fprintf(stdout, "%s%s\n", helpCommands1, helpCommands2);
break;
@@ -2694,12 +2937,16 @@ xmlSecAppGetUriType(const char* string) {
static FILE*
xmlSecAppOpenFile(const char* filename) {
- FILE* file;
+ FILE* file = NULL;
- if((filename == NULL) || (strcmp(filename, "-") == 0)) {
+ if((filename == NULL) || (strcmp(filename, XMLSEC_STDOUT_FILENAME) == 0)) {
return(stdout);
}
+#ifdef WIN32
+ fopen_s(&file, filename, "wb");
+#else /* WIN32 */
file = fopen(filename, "wb");
+#endif /* WIN32 */
if(file == NULL) {
fprintf(stderr, "Error: failed to open file \"%s\"\n", filename);
return(NULL);
diff --git a/configure.ac b/configure.ac
index ab69e164..8e01f84f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,15 +1,16 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([xmlsec1],[1.2.22],[http://www.aleksey.com/xmlsec])
+AC_INIT([xmlsec1],[1.2.28],[http://www.aleksey.com/xmlsec])
XMLSEC_PACKAGE=xmlsec1
XMLSEC_VERSION_MAJOR=1
XMLSEC_VERSION_MINOR=2
-XMLSEC_VERSION_SUBMINOR=22
+XMLSEC_VERSION_SUBMINOR=28
XMLSEC_VERSION="$XMLSEC_VERSION_MAJOR.$XMLSEC_VERSION_MINOR.$XMLSEC_VERSION_SUBMINOR"
XMLSEC_VERSION_INFO=`echo $XMLSEC_VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
XMLSEC_VERSION_SAFE=`echo $XMLSEC_VERSION | sed 's/\./_/g'`
AC_PREREQ([2.52g])
+AC_LANG(C)
AC_CANONICAL_HOST
AC_SUBST(XMLSEC_VERSION)
@@ -21,7 +22,7 @@ AC_SUBST(XMLSEC_VERSION_SUBMINOR)
AC_SUBST(XMLSEC_VERSION_INFO)
AC_CONFIG_MACRO_DIR(m4)
-AM_INIT_AUTOMAKE([1.7 tar-ustar subdir-objects -Wno-portability])
+AM_INIT_AUTOMAKE([1.7 tar-ustar subdir-objects -Wno-portability foreign])
AC_CONFIG_HEADERS([config.h])
AM_MAINTAINER_MODE
@@ -43,7 +44,7 @@ LT_INIT
dnl
dnl Find programs
dnl
-if test "z$RM" == "z" ; then
+if test "z$RM" = "z" ; then
AC_PATH_PROG(RM, rm, /bin/rm)
fi
AC_PATH_PROG(CP, cp, /bin/cp)
@@ -51,6 +52,16 @@ AC_PATH_PROG(MV, mv, /bin/mv)
AC_PATH_PROG(TAR, tar, /bin/tar)
AC_PATH_PROG(PERL, perl)
+dnl Programs for man pahes and html docs
+AC_PATH_PROG(HELP2MAN, help2man)
+AC_PATH_PROG(XSLTPROC, xsltproc)
+AC_PATH_PROG(MAN2HTML, man2html)
+AC_PATH_PROG(GTKDOC_MKHTML, gtkdoc-mkhtml)
+AC_PATH_PROG(GTKDOC_MKDB, gtkdoc-mkdb)
+AC_PATH_PROG(GTKDOC_SCAN, gtkdoc-scan)
+AM_CONDITIONAL(HAS_HELP2MAN, [test x"$HELP2MAN" != x])
+AM_CONDITIONAL(HAS_MAN2HTML, [test x"$MAN2HTML" != x])
+AM_CONDITIONAL(HAS_XSLTPROC, [test x"$XSLTPROC" != x])
dnl Checks for header files.
AC_HEADER_DIRENT
@@ -67,67 +78,65 @@ AC_CHECK_FUNCS(strchr strrchr printf sprintf fprintf snprintf vfprintf vsprintf
XMLSEC_DEFINES=""
dnl ==========================================================================
-dnl Specific setup for Aleksey's development environment:
+dnl Detect windows
+dnl ==========================================================================
+build_windows=no
+case "${host_os}" in
+ cygwin*|mingw*)
+ build_windows=yes
+ ;;
+esac
+
+dnl ==========================================================================
+dnl Specific setup for Aleksey's development environment:
dnl - with debug
dnl - with pedantic compiler flags
dnl - with docs build
dnl - with static binaries
dnl - without dynamic xmlsec-crypto loading
dnl ==========================================================================
-AC_MSG_CHECKING(for development environment)
-AC_ARG_ENABLE(development, [ --enable-development enable development environment (no)])
+AC_MSG_CHECKING(for development environment)
+AC_ARG_ENABLE([development], [AC_HELP_STRING([--enable-development], [enable development environment (no)])])
if test "z$enable_development" = "zyes" ; then
enable_debugging="yes"
enable_pedantic="yes"
enable_static_linking="yes"
- enable_manpages_build="yes"
- enable_docs_build="yes"
+ enable_manpages_build="no"
+ enable_docs_build="no"
enable_crypto_dl="no"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
fi
dnl ==========================================================================
dnl Do we want to build manpages?
dnl ==========================================================================
-AC_MSG_CHECKING(for man pages build)
-AC_ARG_ENABLE(manpages_build,[ --enable-manpages-build man pages build (no)])
+AC_MSG_CHECKING(for man pages build)
+AC_ARG_ENABLE([manpages_build], [AC_HELP_STRING([--enable-manpages-build], [man pages build (no)])])
if test "z$enable_manpages_build" = "zyes" ; then
- AC_PATH_PROG(HELP2MAN, help2man)
-
- AC_MSG_RESULT(yes)
+ AM_CONDITIONAL(BUILD_MANPAGES, [test x"$HELP2MAN" != x])
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
+ AM_CONDITIONAL(BUILD_MANPAGES, [test "x" = "y"])
+ AC_MSG_RESULT([disabled])
fi
-AM_CONDITIONAL(HAS_HELP2MAN, [test x"$HELP2MAN" != x])
-AM_CONDITIONAL(BUILD_MANPAGES, [test x"$HELP2MAN" != x])
-
dnl ==========================================================================
dnl Do we want to build docs?
dnl ==========================================================================
-AC_MSG_CHECKING(for docs build)
-AC_ARG_ENABLE(docs_build, [ --enable-docs-build docs build (no)])
+AC_MSG_CHECKING(for docs build)
+AC_ARG_ENABLE([docs_build], [AC_HELP_STRING([--enable-docs-build], [docs build (no)])])
if test "z$enable_docs_build" = "zyes" ; then
- AC_PATH_PROG(XSLTPROC, xsltproc)
- AC_PATH_PROG(MAN2HTML, man2html)
- AC_PATH_PROG(GTKDOC_MKHTML, gtkdoc-mkhtml)
- AC_PATH_PROG(GTKDOC_MKTMPL, gtkdoc-mktmpl)
- AC_PATH_PROG(GTKDOC_MKDB, gtkdoc-mkdb)
- AC_PATH_PROG(GTKDOC_SCAN, gtkdoc-scan)
-
- AC_MSG_RESULT(yes)
+ AM_CONDITIONAL(BUILD_MAN_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$MAN2HTML" != x])
+ AM_CONDITIONAL(BUILD_API_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$GTKDOC_MKHTML" != x && test x"$GTKDOC_MKDB" != x && test x"$GTKDOC_SCAN" != x])
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
+ AM_CONDITIONAL(BUILD_MAN_DOCS, [test "x" = "y"])
+ AM_CONDITIONAL(BUILD_API_DOCS, [test "x" = "y"])
+ AC_MSG_RESULT([disabled])
fi
-AM_CONDITIONAL(HAS_MAN2HTML, [test x"$MAN2HTML" != x])
-AM_CONDITIONAL(HAS_XSLTPROC, [test x"$XSLTPROC" != x])
-
-AM_CONDITIONAL(BUILD_MAN_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$MAN2HTML" != x])
-AM_CONDITIONAL(BUILD_API_DOCS, [test x"$PERL" != x && test x"$XSLTPROC" != x && test x"$GTKDOC_MKHTML" != x && test x"$GTKDOC_MKTMPL" != x && test x"$GTKDOC_MKDB" != x && test x"$GTKDOC_SCAN" != x])
-
dnl ==========================================================================
dnl Perform host specific configuration
dnl ==========================================================================
@@ -135,8 +144,6 @@ XMLSEC_EXTRA_LDFLAGS=
XMLSEC_CRYPTO_EXTRA_LDFLAGS=
dnl should separate extra LDFLAGS for xmlsec and crypto libs ?
dnl should --enable-runtime-pseudo-reloc for mingw and cygwin ?
-
-xmlsec_sharedlib_hack="no"
if test -n "$shrext"; then
XMLSEC_SHLIBSFX="$shrext"
else
@@ -154,28 +161,24 @@ case "${host}" in
XMLSEC_EXTRA_LDFLAGS="-no-undefined -avoid-version"
XMLSEC_CRYPTO_EXTRA_LDFLAGS="-no-undefined -avoid-version"
XMLSEC_SHLIBSFX=".dll.a"
- xmlsec_sharedlib_hack="yes"
;;
*-*-cygwin*)
XMLSEC_EXTRA_LDFLAGS="-no-undefined"
XMLSEC_CRYPTO_EXTRA_LDFLAGS="-no-undefined"
;;
*-*-darwin*)
- XMLSEC_SHLIBSFX=".dylib"
- ;;
+ XMLSEC_SHLIBSFX=".dylib"
+ ;;
esac
-# To avoid problem with loading of a shared library (dlopen or equivalent)
-# at run time on some platforms we need to link crypto modules with extra
-# source. It's work without hack on 9x and under emulation.
-# On nt 5.x (w2k,xp) the error is 998("Invalid access to memory location").
-AM_CONDITIONAL(SHAREDLIB_HACK, [test "z$xmlsec_sharedlib_hack" = "zyes"])
-
dnl ==========================================================================
dnl Hack for autoconf version mismatch
dnl ==========================================================================
-if test "z$shrext" == "z" ; then
- shrext=$shrext_cmds
+if test "z$shrext" = "z" ; then
+ AC_MSG_CHECKING(for shared library suffix)
+ module=no
+ eval shrext=$shrext_cmds
+ AC_MSG_RESULT($shrext)
fi
dnl ==========================================================================
@@ -190,19 +193,19 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
[[char *foo = __func__;]])],
[ac_func_exists=yes],
[ac_func_exists=no])
-if test "z$ac_func_exists" = "zyes" ; then
- AC_MSG_RESULT(__func__)
+if test "z$ac_func_exists" = "zyes" ; then
+ AC_MSG_RESULT([__func__])
XMLSEC_DEFINES="$XMLSEC_DEFINES -D__XMLSEC_FUNCTION__=__func__"
elif test "z$ac_function_exists" = "zyes" ; then
- AC_MSG_RESULT(__FUNCTION__)
+ AC_MSG_RESULT([__FUNCTION__])
XMLSEC_DEFINES="$XMLSEC_DEFINES -D__XMLSEC_FUNCTION__=__FUNCTION__"
-else
- AC_MSG_RESULT("no")
+else
+ AC_MSG_RESULT("no")
fi
dnl ==========================================================================
-dnl check do we have size_t and its size,
-dnl TODO: will need to replace this and the xmlSecSize define with
+dnl check do we have size_t and its size,
+dnl TODO: will need to replace this and the xmlSecSize define with
dnl typedef on next ABI refresh
dnl ==========================================================================
AC_CHECK_SIZEOF(size_t)
@@ -211,83 +214,232 @@ if test "$ac_cv_sizeof_size_t" -ne "4" ; then
fi
dnl ==========================================================================
-dnl Check if pkg-config enabled and installed
+dnl Check if pkg-config is enabled and installed
dnl ==========================================================================
-PKG_CONFIG="pkg-config"
PKGCONFIG_FOUND="no"
-AC_ARG_ENABLE(pkgconfig, [ --enable-pkgconfig enable pkgconfig for configuration (yes)])
+AC_ARG_ENABLE([pkgconfig], [AC_HELP_STRING([--enable-pkgconfig], [enable pkgconfig for configuration (yes)])])
if test "z$enable_pkgconfig" != "zno" ; then
- AC_CHECK_PROG(PKGCONFIG_PRESENT, $PKG_CONFIG, yes, no)
- if test "z$PKGCONFIG_PRESENT" = "zyes" ; then
- if $PKG_CONFIG --atleast-pkgconfig-version 0.9 ; then
- PKGCONFIG_FOUND="yes"
- fi
- fi
+ PKG_PROG_PKG_CONFIG
+ PKGCONFIG_FOUND="yes"
+else
+ PKGCONFIG_FOUND="no"
fi
dnl ==========================================================================
+dnl Check if packages custom config scripts are enabled
+dnl ==========================================================================
+ENABLE_CUSTOM_CONFIGS="no"
+AC_ARG_ENABLE([custom-configs], [AC_HELP_STRING([--enable-custom-configs], [enable package-specific custom scripts for configuration (yes)])])
+if test "z$enable_custom_configs" != "zno" ; then
+ ENABLE_CUSTOM_CONFIGS="yes"
+else
+ ENABLE_CUSTOM_CONFIGS="no"
+fi
+
+dnl ==========================================================================
+dnl Check searching for typical packages folders is enabled
+dnl ==========================================================================
+ENABLE_FOLDERS_SEARCH="no"
+AC_ARG_ENABLE([folders-search], [AC_HELP_STRING([--enable-folders-search], [enable searching for package installation in typical folders (yes)])])
+if test "z$enable_folders_search" != "zno" ; then
+ ENABLE_FOLDERS_SEARCH="yes"
+else
+ ENABLE_FOLDERS_SEARCH="no"
+fi
+
+dnl ==========================================================================
+dnl Common installation locations
+dnl ==========================================================================
+COMMON_INCLUDE_DIR="/usr/include /usr/local/include"
+COMMON_LIB_DIR="/usr/lib /usr/lib64 /usr/local/lib"
+case $host in
+ i*86-*-linux-gnu) COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/i386-linux-gnu" ;;
+ x86_64-*-linux-gnu) COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/x86_64-linux-gnu" ;;
+ *) COMMON_LIB_DIR="$COMMON_LIB_DIR /usr/lib/$host" ;;
+esac
+
+dnl Macro to help find the folder that contains marker file.
+dnl Usage: AX_FIND_FOLDER(RESULT_VARIABLE, MARKER_FILE, FOLDERS_LIST)
+AC_DEFUN([AX_FIND_FOLDER],[
+ for dir in $3 ; do
+ if test -f "$dir/$2" ; then
+ $1="$dir"
+ break;
+ fi
+ done
+])
+
+dnl ==========================================================================
dnl find libxml
dnl ==========================================================================
-LIBXML_MIN_VERSION="2.7.4"
+LIBXML_MIN_VERSION="2.8.0"
+LIBXML_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/include/libxml2 /usr/local/include/libxml2 /usr/local/libxml2/include"
+LIBXML_LIB_DIR="$COMMON_LIB_DIR /usr/local/libxml2/lib"
+LIBXML_INCLUDE_MARKER="libxml/xmlversion.h"
+LIBXML_SHARED_LIB_MARKER="libxml2$shrext"
+LIBXML_STATIC_LIB_MARKER="libxml2.$libext"
+LIBXML_LIBS_LIST="-lxml2"
LIBXML_CONFIG="xml2-config"
-LIBXML_CFLAGS=""
-LIBXML_LIBS=""
+
+LIBXML_INCLUDE_PATH=
+LIBXML_LIB_PATH=
+LIBXML_CONFIG_PATH=
LIBXML_FOUND="no"
-AC_ARG_WITH(libxml,
- [ --with-libxml=[PFX] libxml2 location]
-)
-AC_ARG_WITH(libxml-src,
- [ --with-libxml-src=[PFX] not installed yet libxml2 location]
-)
-
-if test "z$with_libxml" = "zno" -o "z$with_libxml_src" = "zno"; then
- AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION)
- AC_MSG_ERROR(libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE)
-elif test "z$with_libxml_src" != "z" ; then
- AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION)
- CWD=`pwd`
- if cd "$with_libxml_src" ; then
- SRC_DIR=`pwd`
- LIBXML_CONFIG=${SRC_DIR}/xml2-config
- LIBXML_LIBS="-L${SRC_DIR}/.libs -lxml2"
- LIBXML_CFLAGS="-I${SRC_DIR}/include"
- LIBXML_FOUND="yes"
- cd $CWD
- AC_MSG_RESULT([yes (source)])
- else
- AC_MSG_ERROR([libxml source dir not found (${with_libxml_src}), typo?])
- fi
-elif test "z$with_libxml" = "z" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
+AC_ARG_WITH([libxml], [AC_HELP_STRING([--with-libxml@<:@=PFX@:>@], [libxml2 location])])
+AC_ARG_WITH([libxml-src], [AC_HELP_STRING([--with-libxml-src@<:@=PFX@:>@], [libxml2 source tree location])])
+
+dnl Priority 0: LibXML2 is disabled: hard error.
+if test "z$with_libxml" = "zno" -o "z$with_libxml_src" = "zno"; then
+ LIBXML_FOUND="disabled"
+fi
+
+dnl Priority 1: User specifies the path to source code
+if test "z$LIBXML_FOUND" = "zno" -a "z$with_libxml_src" != "z" -a "z$with_libxml_src" != "zyes" ; then
+ AC_MSG_CHECKING(for libxml2 library source tree in "$with_libxml_src" folder)
+ if test [ -f "$with_libxml_src/include/$LIBXML_INCLUDE_MARKER" ] -a [ -f "$with_libxml_src/.libs/$LIBXML_SHARED_LIB_MARKER" -o -f "$with_libxml_src/.libs/$LIBXML_STATIC_LIB_MARKER"] ; then
+ LIBXML_INCLUDE_PATH="$with_libxml_src/include"
+ LIBXML_LIB_PATH="$with_libxml_src/.libs"
+ LIBXML_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_libxml_src/include/$LIBXML_INCLUDE_MARKER" or "$with_libxml_src/.libs/$LIBXML_SHARED_LIB_MARKER" or "$with_libxml_src/.libs/$LIBXML_STATIC_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 2: User specifies path to installation
+if test "z$LIBXML_FOUND" = "zno" -a "z$with_libxml" != "z" -a "z$with_libxml" != "zyes" ; then
+ AC_MSG_CHECKING(for libxml2 library installation in "$with_libxml" folder)
+ if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_libxml/bin/$LIBXML_CONFIG" ; then
+ LIBXML_CONFIG_PATH="$with_libxml/bin/$LIBXML_CONFIG"
+ LIBXML_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ elif test [ -f "$with_libxml/include/libxml2/$LIBXML_INCLUDE_MARKER" ] -a [ -f "$with_libxml/lib/$LIBXML_SHARED_LIB_MARKER" -o -f "$with_libxml/lib/$LIBXML_STATIC_LIB_MARKER" ] ; then
+ LIBXML_INCLUDE_PATH="$with_libxml/include/libxml2"
+ LIBXSLT_LIB_PATH="$with_libxml/lib"
+ LIBXML_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_libxml/bin/$LIBXML_CONFIG" tool, or "$with_libxml/include/libxml2/$LIBXML_INCLUDE_MARKER" and/or "$with_libxml/lib/$LIBXML_SHARED_LIB_MARKER" or "$with_libxml/lib/$LIBXML_STATIC_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 3: User sets both CFLAGS and LIBS flags
+if test "z$LIBXML_FOUND" = "zno" -a "z$LIBXML_CFLAGS" != "z" -a "z$LIBXML_LIBS" != "z" ; then
+ LIBXML_FOUND="yes"
+fi
+
+dnl Priority 4: Guess with pkg_config
+if test "z$LIBXML_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_MIN_VERSION,
- [LIBXML_FOUND=yes],
- [LIBXML_FOUND=no])
+ [LIBXML_FOUND=yes],
+ [LIBXML_FOUND=no])
+fi
+
+dnl Priority 5: Guess the config tool location
+if test "z$LIBXML_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ AC_PATH_PROG(LIBXML_CONFIG_PATH, [$LIBXML_CONFIG], [], [$PATH])
+ if test "z$LIBXML_CONFIG_PATH" != "z" ; then
+ LIBXML_FOUND="yes"
+ fi
+fi
+
+dnl Priority 6: Guess using a list of folders.
+if test "z$LIBXML_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for libxml2 library installation in the typical folders)
+ if test "z$LIBXML_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXML_INCLUDE_PATH, $LIBXML_INCLUDE_MARKER, $LIBXML_INCLUDE_DIR)
+ fi
+ if test "z$LIBXML_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXML_LIB_PATH, $LIBXML_SHARED_LIB_MARKER, $LIBXML_LIB_DIR)
+ fi
+ if test "z$LIBXML_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXML_LIB_PATH, $LIBXML_STATIC_LIB_MARKER, $LIBXML_LIB_DIR)
+ fi
+ if test "z$LIBXML_INCLUDE_PATH" != "z" -a "z$LIBXML_LIB_PATH" != "z" ; then
+ LIBXML_FOUND="yes"
+ AC_MSG_RESULT([yes ("-I$LIBXML_INCLUDE_PATH -L$LIBXML_LIB_PATH")])
+ else
+ AC_MSG_RESULT([not found])
+ fi
fi
+
+dnl Priority 7: Just try to compile/link and hope for the best
if test "z$LIBXML_FOUND" = "zno" ; then
- if test "z$with_libxml" != "zyes" ; then
- if test "z$with_libxml" != "z" ; then
- AC_PATH_PROG([LIBXML_CONFIG], [$LIBXML_CONFIG], [],
- [$with_libxml/bin:$PATH])
- else
- AC_PATH_PROG([LIBXML_CONFIG], [$LIBXML_CONFIG], [],
- [$PATH])
- fi
- fi
- AC_MSG_CHECKING([libxml2 $LIBXML_CONFIG ])
- if ! LIBXML_VERSION=`$LIBXML_CONFIG --version 2>/dev/null`; then
- AC_MSG_ERROR(Could not find libxml2 anywhere.)
- fi
- vers=`echo $LIBXML_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- minvers=`echo $LIBXML_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test "$vers" -ge "$minvers" ; then
- LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
- LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
- LIBXML_FOUND="yes"
- AC_MSG_RESULT([yes ('$LIBXML_VERSION')])
+ AC_MSG_CHECKING(for libxml2 library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $LIBXML_LIBS $LIBXML_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <libxml/xmlversion.h>
+ ]],[[
+ int main () { xmlCheckVersion(0);; return(0); }
+ ]])
+ ],[
+ LIBXML_FOUND=yes
+ LIBXML_LIBS="$LIBXML_LIBS $LIBXML_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ LIBXML_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
+
+dnl Set CFLAGS/LIBS flags
+if test "z$LIBXML_FOUND" = "zyes" ; then
+ if test "z$LIBXML_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
+ if test "z$LIBXML_CFLAGS" = "z" ; then
+ LIBXML_CFLAGS="`$LIBXML_CONFIG_PATH --cflags`"
+ fi
+ if test "z$LIBXML_LIBS" = "z"; then
+ LIBXML_LIBS="`$LIBXML_CONFIG_PATH --libs`"
+ fi
+ LIBXML_CONFIG=$LIBXML_CONFIG_PATH
+ LIBXML_FOUND="yes"
else
- AC_MSG_ERROR(You need at least libxml2 $LIBXML_MIN_VERSION for this version of $XMLSEC_PACKAGE)
+ dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
+ if test "z$LIBXML_INCLUDE_PATH" != "z" ; then
+ LIBXML_CFLAGS="$LIBXML_CFLAGS -I$LIBXML_INCLUDE_PATH"
+ fi
+ if test "z$LIBXML_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ LIBXML_LIBS="$LIBXML_LIBS -Wl,-rpath-link -Wl,$LIBXML_LIB_PATH"
+ fi
+ LIBXML_LIBS="$LIBXML_LIBS -L$LIBXML_LIB_PATH $LIBXML_LIBS_LIST"
+ fi
fi
fi
+dnl Verify the version.
+AC_MSG_CHECKING(for libxml2 library >= $LIBXML_MIN_VERSION)
+if test "z$LIBXML_FOUND" = "zyes" ; then
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS"
+ minvers=`echo $LIBXML_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <libxml/xmlversion.h>
+ #if LIBXML_VERSION >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ LIBXML_FOUND=yes
+ ],[
+ LIBXML_FOUND=no
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+fi
+AC_MSG_RESULT([$LIBXML_FOUND])
+
+dnl LibXML2 is required so if we didn't find it then it is a fatal error.
+if test "z$LIBXML_FOUND" != "zyes" ; then
+ AC_MSG_ERROR([libxml2 library >= $LIBXML_MIN_VERSION is required for this version of $XMLSEC_PACKAGE])
+fi
+
+dnl Finally set variables
AC_SUBST(LIBXML_CFLAGS)
AC_SUBST(LIBXML_LIBS)
AC_SUBST(LIBXML_CONFIG)
@@ -296,82 +448,178 @@ AC_SUBST(LIBXML_MIN_VERSION)
dnl ==========================================================================
dnl find libxslt
dnl ==========================================================================
-XMLSEC_NO_LIBXSLT="1"
LIBXSLT_MIN_VERSION=1.0.20
-LIBXSLT_PC_FILE_COND="libxslt >= $LIBXSLT_MIN_VERSION"
+LIBXSLT_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/libxslt/include"
+LIBXSLT_LIB_DIR="$COMMON_LIB_DIR /usr/local/libxslt/lib"
LIBXSLT_CONFIG="xslt-config"
-LIBXSLT_CFLAGS=""
-LIBXSLT_LIBS=""
+LIBXSLT_INCLUDE_MARKER="libxslt/xsltconfig.h"
+LIBXSLT_SHARED_LIB_MARKER="libxslt$shrext"
+LIBXSLT_STATIC_LIB_MARKER="libxslt.$libext"
+LIBXSLT_LIBS_LIST="-lxslt"
+
+XMLSEC_NO_LIBXSLT="1"
+LIBXSLT_INCLUDE_PATH=
+LIBXSLT_LIB_PATH=
+LIBXSLT_CONFIG_PATH=
LIBXSLT_FOUND="no"
-AC_ARG_WITH(libxslt,
- [ --with-libxslt=[PFX] libxslt location]
-)
-AC_ARG_WITH(libxslt-src,
- [ --with-libxslt-src=[PFX] not installed yet libxslt location]
-)
+AC_ARG_WITH([libxslt], [AC_HELP_STRING([--with-libxslt@<:@=PFX@:>@], [libxslt location])])
+AC_ARG_WITH([libxslt-src], [AC_HELP_STRING([--with-libxslt-src@<:@=PFX@:>@],[libxslt source tree location])])
+
+dnl Priority 0: Check if library is not needed
if test "z$with_libxslt" = "zno" -o "z$with_libxslt_src" = "zno" ; then
- AC_MSG_CHECKING(for libxslt libraries >= $LIBXSLT_MIN_VERSION)
- AC_MSG_RESULT(no)
- LIBXSLT_FOUND="without"
-elif test "z$with_libxslt_src" != "z" ; then
- AC_MSG_CHECKING(for libxslt libraries >= $LIBXSLT_MIN_VERSION)
- CWD=`pwd`
- if cd "$with_libxslt_src" ; then
- SRC_DIR=`pwd`
- LIBXSLT_CONFIG=${SRC_DIR}/xslt-config
- LIBXSLT_LIBS="-L${SRC_DIR}/libxslt/.libs -lxslt"
- LIBXSLT_CFLAGS="-I${SRC_DIR}"
- LIBXSLT_FOUND="yes"
- cd $CWD
- AC_MSG_RESULT([yes (source)])
- else
- AC_MSG_ERROR([libxslt source dir not found (${with_libxslt_src}), typo?])
- fi
-elif test "z$with_libxslt" = "z" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
+ LIBXSLT_FOUND="disabled"
+fi
+
+dnl Priority 1: User specifies the path to source code
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$with_libxslt_src" != "z" -a "z$with_libxslt_src" != "zyes" ; then
+ AC_MSG_CHECKING(for libxslt library source tree in "$with_libxslt_src" folder)
+ if test [ -f "$with_libxslt_src/$LIBXSLT_INCLUDE_MARKER" ] -a [ -f "$with_libxslt_src/libxslt/.libs/$LIBXSLT_SHARED_LIB_MARKER" -o -f "$with_libxslt_src/libxslt/.libs/$LIBXSLT_STATIC_LIB_MARKER" ] ; then
+ LIBXSLT_INCLUDE_PATH="$with_libxslt_src"
+ LIBXSLT_LIB_PATH="$with_libxslt_src/libxslt/.libs"
+ LIBXSLT_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_libxslt_src/$LIBXSLT_INCLUDE_MARKER" and/or "$with_libxslt_src/libxslt/.libs/$LIBXSLT_SHARED_LIB_MARKER" or "$with_libxslt_src/libxslt/.libs/$LIBXSLT_STATIC_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 2: User specifies path to installation
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$with_libxslt" != "z" -a "z$with_libxslt" != "zyes" ; then
+ AC_MSG_CHECKING(for libxslt library installation in "$with_libxslt" folder)
+ if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_libxslt/bin/$LIBXSLT_CONFIG" ; then
+ LIBXSLT_CONFIG_PATH="$with_libxslt/bin/$LIBXSLT_CONFIG"
+ LIBXSLT_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ elif test [ -f "$with_libxslt/include/$LIBXSLT_INCLUDE_MARKER" ] -a [ -f "$with_libxslt/lib/$LIBXSLT_SHARED_LIB_MARKER" -o -f "$with_libxslt/lib/$LIBXSLT_STATIC_LIB_MARKER" ] ; then
+ LIBXSLT_INCLUDE_PATH="$with_libxslt/include"
+ LIBXSLT_LIB_PATH="$with_libxslt/lib"
+ LIBXSLT_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_libxslt/bin/$LIBXSLT_CONFIG" tool, or "$with_libxslt/include/$LIBXSLT_INCLUDE_MARKER" and/or "$with_libxslt/lib/$LIBXSLT_SHARED_LIB_MARKER" or "$with_libxslt/lib/$LIBXSLT_STATIC_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 3: User sets both CFLAGS and LIBS flags
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$LIBXSLT_CFLAGS" != "z" -a "z$LIBXSLT_LIBS" != "z" ; then
+ LIBXSLT_FOUND="yes"
+fi
+
+dnl Priority 4: Guess with pkg_config
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
PKG_CHECK_MODULES(LIBXSLT, libxslt >= $LIBXSLT_MIN_VERSION,
- [LIBXSLT_FOUND=yes],
- [LIBXSLT_FOUND=no])
+ [LIBXSLT_FOUND=yes],
+ [LIBXSLT_FOUND=no])
+fi
+
+dnl Priority 5: Guess the config tool location
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ AC_PATH_PROG(LIBXSLT_CONFIG_PATH, [$LIBXSLT_CONFIG], [], [$PATH])
+ if test "z$LIBXSLT_CONFIG_PATH" != "z" ; then
+ LIBXSLT_FOUND="yes"
+ fi
+fi
+
+dnl Priority 6: Guess using a list of folders.
+if test "z$LIBXSLT_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for libxslt library installation in the typical folders)
+ if test "z$LIBXSLT_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXSLT_INCLUDE_PATH, $LIBXSLT_INCLUDE_MARKER, $LIBXSLT_INCLUDE_DIR)
+ fi
+ if test "z$LIBXSLT_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXSLT_LIB_PATH, $LIBXSLT_SHARED_LIB_MARKER, $LIBXSLT_LIB_DIR)
+ fi
+ if test "z$LIBXSLT_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(LIBXSLT_LIB_PATH, $LIBXSLT_STATIC_LIB_MARKER, $LIBXSLT_LIB_DIR)
+ fi
+ if test "z$LIBXSLT_INCLUDE_PATH" != "z" -a "z$LIBXSLT_LIB_PATH" != "z" ; then
+ LIBXSLT_FOUND="yes"
+ AC_MSG_RESULT([yes ("-I$LIBXSLT_INCLUDE_PATH -L$LIBXSLT_LIB_PATH")])
+ else
+ AC_MSG_RESULT([not found])
+ fi
fi
+dnl Priority 7: Just try to compile/link and hope for the best
if test "z$LIBXSLT_FOUND" = "zno" ; then
- if test "z$with_libxslt" != "zyes" ; then
- if test "z$with_libxslt" != "z" ; then
- AC_PATH_PROG([LIBXSLT_CONFIG], [$LIBXSLT_CONFIG], [],
- [$with_libxslt/bin:$PATH])
- else
- AC_PATH_PROG([LIBXSLT_CONFIG], [$LIBXSLT_CONFIG], [],
- [$PATH])
+ AC_MSG_CHECKING(for libxslt library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $LIBXML_CFLAGS $LIBXSLT_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $LIBXML_LIBS $LIBXSLT_LIBS $LIBXSLT_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <libxslt/xslt.h>
+ ]],[[
+ int main () { xsltInit(); return(0); }
+ ]])
+ ],[
+ LIBXSLT_FOUND=yes
+ LIBXSLT_LIBS="$LIBXSLT_LIBS $LIBXSLT_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ LIBXSLT_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
+
+dnl Set CFLAGS/LIBS flags
+if test "z$LIBXSLT_FOUND" = "zyes" ; then
+ if test "z$LIBXSLT_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
+ if test "z$LIBXSLT_CFLAGS" = "z" ; then
+ LIBXSLT_CFLAGS="`$LIBXSLT_CONFIG_PATH --cflags`"
fi
- fi
- AC_MSG_CHECKING(for libxslt libraries >= $LIBXSLT_MIN_VERSION)
- if ! LIBXSLT_VERSION=`$LIBXSLT_CONFIG --version 2>/dev/null`; then
- if test "z$with_libxslt" != "zyes" ; then
- AC_MSG_ERROR(Unable to find libxslt at '$with_libxslt')
- else
- AC_MSG_RESULT(no)
- fi
+ if test "z$LIBXSLT_LIBS" = "z"; then
+ LIBXSLT_LIBS="`$LIBXSLT_CONFIG_PATH --libs`"
+ fi
+ LIBXSLT_CONFIG=$LIBXSLT_CONFIG_PATH
+ LIBXSLT_FOUND="yes"
else
- vers=`echo $LIBXSLT_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- minvers=`echo $LIBXSLT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test "$vers" -ge "$minvers" ; then
- LIBXSLT_LIBS="`$LIBXSLT_CONFIG --libs`"
- LIBXSLT_CFLAGS="`$LIBXSLT_CONFIG --cflags`"
- LIBXSLT_FOUND="yes"
- AC_MSG_RESULT([yes ('$LIBXSLT_VERSION')])
- else
- AC_MSG_ERROR(You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $XMLSEC_PACKAGE)
- fi
+ dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
+ if test "z$LIBXSLT_INCLUDE_PATH" != "z" ; then
+ LIBXSLT_CFLAGS="$LIBXSLT_CFLAGS -I$LIBXSLT_INCLUDE_PATH"
+ fi
+ if test "z$LIBXSLT_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ LIBXSLT_LIBS="$LIBXSLT_LIBS -Wl,-rpath-link -Wl,$LIBXSLT_LIB_PATH"
+ fi
+ LIBXSLT_LIBS="$LIBXSLT_LIBS -L$LIBXSLT_LIB_PATH $LIBXSLT_LIBS_LIST"
+ fi
fi
fi
+dnl Verify the version
+AC_MSG_CHECKING(for libxslt library >= $LIBXSLT_MIN_VERSION)
+if test "z$LIBXSLT_FOUND" = "zyes" ; then
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $LIBXSLT_CFLAGS"
+ minvers=`echo $LIBXSLT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <libxslt/xsltconfig.h>
+ #if LIBXSLT_VERSION >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ LIBXSLT_FOUND=yes
+ ],[
+ LIBXSLT_FOUND=no
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+fi
+AC_MSG_RESULT([$LIBXSLT_FOUND])
+
+dnl Finally set variables
if test "z$LIBXSLT_FOUND" = "zyes" ; then
XMLSEC_NO_LIBXSLT="0"
+ LIBXSLT_PC_FILE_COND="libxslt >= $LIBXSLT_MIN_VERSION"
else
+ XMLSEC_NO_LIBXSLT="1"
LIBXSLT_PC_FILE_COND=""
- LIBXSLT_MIN_VERSION=""
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XSLT=1"
fi
-
AC_SUBST(XMLSEC_NO_LIBXSLT)
AC_SUBST(LIBXSLT_CFLAGS)
AC_SUBST(LIBXSLT_LIBS)
@@ -388,192 +636,231 @@ XMLSEC_CRYPTO_DISABLED_LIST=""
dnl ==========================================================================
dnl OpenSSL
dnl ==========================================================================
-ac_openssl_lib_dir="/usr/local/lib /usr/lib /usr/lib64 /usr/local /usr/local/ssl /usr/local/ssl/lib /usr/pkg"
-ac_openssl_inc_dir="/usr/local/include /usr/include /usr/local /usr/local/ssl /usr/pkg /usr/local/ssl/include"
+OPENSSL_MIN_VERSION="1.0.0"
+OPENSSL_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/ssl/include"
+OPENSSL_LIB_DIR="$COMMON_LIB_DIR /usr/local/ssl/lib"
+OPENSSL_CRYPTO_LIB="$XMLSEC_PACKAGE-openssl"
+OPENSSL_INCLUDE_MARKER="openssl/opensslv.h"
+OPENSSL_LIB_SHARED_MARKER="libcrypto$shrext"
+OPENSSL_LIB_STATIC_MARKER="libcrypto.a"
+OPENSSL_LIBS_LIST="-lcrypto"
+case $host in
+ *-*-mingw*) OPENSSL_EXTRA_LIBS=;;
+ *-*-osf5*) OPENSSL_EXTRA_LIBS=;;
+ *-*-openbsd*) OPENSSL_EXTRA_LIBS=;;
+ *-*-netbsd*) OPENSSL_EXTRA_LIBS=;;
+ *-*-freebsd*|*-*-dragonfly*) OPENSSL_EXTRA_LIBS=;;
+ *-*-darwin*) OPENSSL_EXTRA_LIBS=;;
+ #FIXME: check if lib "dl" is required
+ *) OPENSSL_EXTRA_LIBS=-ldl;;
+esac
XMLSEC_NO_OPENSSL="1"
-OPENSSL_MIN_VERSION="0.9.8"
OPENSSL_VERSION=""
-OPENSSL_CFLAGS=""
-OPENSSL_LIBS=""
-OPENSSL_CRYPTO_LIB="$XMLSEC_PACKAGE-openssl"
+OPENSSL_INCLUDE_PATH=
+OPENSSL_LIB_PATH=
OPENSSL_FOUND=no
-AC_ARG_WITH(openssl, [ --with-openssl=[PFX] openssl location])
+AC_ARG_WITH([openssl], [AC_HELP_STRING([--with-openssl@<:@=PFX@:>@], [openssl location])])
+
+dnl Priority 0: Check if library is disabled
if test "z$with_openssl" = "zno" ; then
- OPENSSL_FOUND=without
- AC_MSG_CHECKING(for openssl libraries >= $OPENSSL_MIN_VERSION)
- AC_MSG_RESULT(no)
-elif test "z$with_openssl" != "z" ; then
- case $host in
- *-*-mingw*) openssl_exlibs=;;
- *-*-osf5*) openssl_exlibs=;;
- *-*-openbsd*) openssl_exlibs=;;
- *-*-netbsd*) openssl_exlibs=;;
- #FIXME: check if lib "dl" is required
- *) openssl_exlibs=-ldl;;
- esac
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$with_openssl/include"
- if test -f "$with_openssl/lib/libcrypto${XMLSEC_SHLIBSFX}" ; then
- OPENSSL_LIBS="-L$with_openssl/lib -lcrypto $openssl_exlibs"
+ OPENSSL_FOUND=disabled
+fi
+
+dnl Priority 1: User specifies the path to installation
+if test "z$OPENSSL_FOUND" = "zno" -a "z$with_openssl" != "z" -a "z$with_openssl" != "zyes" ; then
+ AC_MSG_CHECKING(for openssl library installation in "$with_openssl" folder)
+ if test -f "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" -a -f "$with_openssl/lib/$OPENSSL_LIB_SHARED_MARKER" ; then
+ OPENSSL_INCLUDE_PATH="$with_openssl/include"
+ OPENSSL_LIB_PATH="$with_openssl/lib"
+ OPENSSL_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ elif test -f "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" -a -f "$with_openssl/lib/$OPENSSL_LIB_STATIC_MARKER" ; then
+ OPENSSL_INCLUDE_PATH="$with_openssl/include"
+ OPENSSL_LIB_PATH="$with_openssl/lib"
+ OPENSSL_FOUND="yes"
+ AC_MSG_RESULT([yes])
else
- OPENSSL_LIBS="$with_openssl/lib/libcrypto.a $openssl_exlibs"
+ AC_MSG_ERROR([not found: "$with_openssl/include/$OPENSSL_INCLUDE_MARKER" or "$with_openssl/lib/$OPENSSL_LIB_SHARED_MARKER" or "$with_openssl/lib/$OPENSSL_LIB_STATIC_MARKER" files don't exist), typo?])
fi
+fi
+
+dnl Priority 2: User sets both CFLAGS and LIBS flags
+if test "z$OPENSSL_FOUND" = "zno" -a "z$OPENSSL_CFLAGS" != "z" -a "z$OPENSSL_LIBS" != "z" ; then
OPENSSL_FOUND="yes"
-elif test "z$PKGCONFIG_FOUND" = "zyes" ; then
- if test "z$OPENSSL_VERSION" = "z" ; then
- PKG_CHECK_MODULES(OPENSSL, openssl >= 1.1.0,
- [OPENSSL_VERSION="1.1.0"],
- [OPENSSL_VERSION=""])
- fi
+fi
- if test "z$OPENSSL_VERSION" = "z" ; then
- PKG_CHECK_MODULES(OPENSSL, openssl >= 1.0.0,
- [OPENSSL_VERSION="1.0.0"],
- [OPENSSL_VERSION=""])
- fi
+dnl Priority 3: Guess with pkg_config
+if test "z$OPENSSL_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
+ PKG_CHECK_MODULES(OPENSSL, openssl >= $OPENSSL_MIN_VERSION,
+ [OPENSSL_FOUND=yes],
+ [OPENSSL_FOUND=no])
+fi
- if test "z$OPENSSL_VERSION" = "z" ; then
- PKG_CHECK_MODULES(OPENSSL, openssl >= 0.9.8,
- [OPENSSL_VERSION="0.9.8"],
- [OPENSSL_VERSION=""])
+dnl Priority 4: Guess using a list of folders (do not overwrite CFLAGS/LIBS flags).
+if test "z$OPENSSL_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for openssl library installation in the typical folders)
+ if test "z$OPENSSL_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(OPENSSL_INCLUDE_PATH, $OPENSSL_INCLUDE_MARKER, $OPENSSL_INCLUDE_DIR)
fi
-
- if test "z$OPENSSL_VERSION" = "z" ; then
- PKG_CHECK_MODULES(OPENSSL, openssl >= $OPENSSL_MIN_VERSION,
- [OPENSSL_VERSION="$OPENSSL_MIN_VERSION"],
- [OPENSSL_VERSION=""])
+ if test "z$OPENSSL_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(OPENSSL_LIB_PATH, $OPENSSL_LIB_SHARED_MARKER, $OPENSSL_LIB_DIR)
fi
-
- if test "z$OPENSSL_VERSION" != "z" ; then
+ if test "z$OPENSSL_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(OPENSSL_LIB_PATH, $OPENSSL_LIB_STATIC_MARKER, $OPENSSL_LIB_DIR)
+ fi
+ if test "z$OPENSSL_INCLUDE_PATH" != "z" -a "z$OPENSSL_LIB_PATH" != "z" ; then
OPENSSL_FOUND="yes"
+ AC_MSG_RESULT([yes ("-I$OPENSSL_INCLUDE_PATH -L$OPENSSL_LIB_PATH")])
+ else
+ AC_MSG_RESULT([not found])
fi
fi
+dnl Priority 5: Just try to compile/link and hope for the best
if test "z$OPENSSL_FOUND" = "zno" ; then
- OPENSSL_INCLUDES_FOUND="no"
- OPENSSL_LIBS_FOUND="no"
-
- for dir in $ac_openssl_inc_dir ; do
- if test -f $dir/openssl/ssl.h ; then
- dnl do not add -I/usr/include because compiler does it anyway
- if test "z$dir" = "z/usr/include" ; then
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS "
- else
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$dir"
- fi
- OPENSSL_INCLUDES_FOUND="yes"
- break
- fi
- done
+ AC_MSG_CHECKING(for openssl library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $OPENSSL_LIBS $OPENSSL_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <openssl/opensslv.h>
+ ]],[[
+ int main () {
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
+ SSL_library_init();
+ #else
+ OPENSSL_init_ssl(0, NULL);
+ #endif
+ return(0);
+ }
+ ]])
+ ],[
+ OPENSSL_FOUND=yes
+ OPENSSL_LIBS="$OPENSSL_LIBS $OPENSSL_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ OPENSSL_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
- for dir in $ac_openssl_lib_dir ; do
- if test -f $dir/libcrypto.a ; then
- dnl do not add -L/usr/lib because compiler does it anyway
- if test "z$dir" = "z/usr/lib" ; then
- OPENSSL_LIBS="-lcrypto -ldl"
- else
- OPENSSL_LIBS="-L$dir -lcrypto -ldl"
- fi
- OPENSSL_LIBS_FOUND="yes"
- ac_found_openssl_lib_dir=$dir
- break;
- fi
- done
-
- if test "z$OPENSSL_INCLUDES_FOUND" = "zyes" -a "z$OPENSSL_LIBS_FOUND" = "zyes" ; then
- OPENSSL_FOUND="yes"
+dnl Set flags if INCLUDE_PATH or LIB_PATH are set
+if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_INCLUDE_PATH" != "z" ; then
+ OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$OPENSSL_INCLUDE_PATH -I$OPENSSL_INCLUDE_PATH/openssl"
+fi
+if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_LIB_PATH" != "z" ; then
+ if test -f "$OPENSSL_LIB_PATH/$OPENSSL_LIB_SHARED_MARKER" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ OPENSSL_LIBS="$OPENSSL_LIBS -Wl,-rpath-link -Wl,$OPENSSL_LIB_PATH"
+ fi
fi
+ OPENSSL_LIBS="$OPENSSL_LIBS -L$OPENSSL_LIB_PATH $OPENSSL_LIBS_LIST $OPENSSL_EXTRA_LIBS"
fi
-if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_VERSION" = "z" ; then
- AC_MSG_CHECKING(for openssl libraries >= $OPENSSL_MIN_VERSION)
-
- dnl Check the OpenSSL version
+dnl Check the OpenSSL version; if you change this code then you probably want to
+dnl change include/xmlsec/openssl/crypto.h as well.
+AC_MSG_CHECKING(for openssl library >= $OPENSSL_MIN_VERSION)
+if test "z$OPENSSL_FOUND" = "zyes" ; then
OLD_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$OPENSSL_CFLAGS"
+ CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
+ if test "z$OPENSSL_VERSION" = "z" ; then
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <openssl/opensslv.h>
+ #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L
+ greater-than-minvers
+ #endif
+ ],[
+ OPENSSL_VERSION="1.0.0 (LibreSSL < 2.7)"
+ ],[
+ OPENSSL_VERSION=""
+ ])
+ fi
if test "z$OPENSSL_VERSION" = "z" ; then
- AC_EGREP_CPP(yes,[
+ AC_EGREP_CPP(greater-than-minvers, [
#include <openssl/opensslv.h>
- #if OPENSSL_VERSION_NUMBER >= 0x10100000L
- yes
- #endif
- ],[
- OPENSSL_VERSION="1.1.0"
- ],[
- OPENSSL_VERSION=""
- ])
+ #if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+ greater-than-minvers
+ #endif
+ ],[
+ OPENSSL_VERSION="1.1.0 (LibreSSL >= 2.7)"
+ ],[
+ OPENSSL_VERSION=""
+ ])
fi
if test "z$OPENSSL_VERSION" = "z" ; then
- AC_EGREP_CPP(yes,[
- #include <openssl/opensslv.h>
- #if OPENSSL_VERSION_NUMBER >= 0x10000000L
- yes
- #endif
- ],[
- OPENSSL_VERSION="1.0.0"
- ],[
- OPENSSL_VERSION=""
- ])
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <openssl/opensslv.h>
+ #include <openssl/crypto.h>
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ #ifdef OPENSSL_IS_BORINGSSL
+ greater-than-minvers
+ #endif
+ #endif
+ ],[
+ OPENSSL_VERSION="1.1.0 (BoringSSL)"
+ enable_ripemd160=no
+ enable_dsa=no
+ ],[
+ OPENSSL_VERSION=""
+ ])
fi
if test "z$OPENSSL_VERSION" = "z" ; then
- AC_EGREP_CPP(yes,[
- #include <openssl/opensslv.h>
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
- yes
- #endif
- ],[
- OPENSSL_VERSION="0.9.8"
- ],[
- OPENSSL_VERSION=""
- ])
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <openssl/opensslv.h>
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ greater-than-minvers
+ #endif
+ ],[
+ OPENSSL_VERSION="1.1.0"
+ ],[
+ OPENSSL_VERSION=""
+ ])
fi
if test "z$OPENSSL_VERSION" = "z" ; then
- AC_MSG_RESULT(no)
- else
- AC_MSG_RESULT([yes ('$OPENSSL_VERSION')])
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <openssl/opensslv.h>
+ #if OPENSSL_VERSION_NUMBER >= 0x10000000L
+ greater-than-minvers
+ #endif
+ ],[
+ OPENSSL_VERSION="1.0.0"
+ ],[
+ OPENSSL_VERSION=""
+ ])
fi
-
CPPFLAGS=$OLD_CPPFLAGS
-fi
+ if test "z$OPENSSL_VERSION" != "z" ; then
+ OPENSSL_FOUND=yes
+ else
+ OPENSSL_FOUND=no
+ fi
+fi
if test "z$OPENSSL_FOUND" = "zyes" ; then
- dnl Check availability of ECDSA
- OLD_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$OPENSSL_CFLAGS"
-
- AC_EGREP_CPP(yes,[
- #include <openssl/opensslconf.h>
- #ifdef OPENSSL_NO_ECDSA
- yes
- #endif
- ],[
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_NO_ECDSA=1"
- ])
- CPPFLAGS=$OLD_CPPFLAGS
+ AC_MSG_RESULT([yes (openssl version '$OPENSSL_VERSION')])
+else
+ AC_MSG_RESULT([$OPENSSL_FOUND])
fi
+dnl Finally set all the flags
if test "z$OPENSSL_FOUND" = "zyes" ; then
XMLSEC_NO_OPENSSL="0"
- if test "z$OPENSSL_VERSION" = "z0.9.8" ; then
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_098=1 -DXMLSEC_NO_ECDSA=1 -DXMLSEC_NO_SHA256=1"
- fi
- if test "z$OPENSSL_VERSION" = "z1.0.0" ; then
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_100=1"
- fi
- if test "z$OPENSSL_VERSION" = "z1.1.0" ; then
- OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_110=1"
- fi
OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_CRYPTO_OPENSSL=1"
XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST openssl"
else
XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST openssl"
fi
-AM_CONDITIONAL(XMLSEC_NO_OPENSSL, test "z$XMLSEC_NO_OPENSSL" == "z1")
+AM_CONDITIONAL(XMLSEC_NO_OPENSSL, test "z$XMLSEC_NO_OPENSSL" = "z1")
AC_SUBST(XMLSEC_NO_OPENSSL)
AC_SUBST(OPENSSL_CFLAGS)
AC_SUBST(OPENSSL_LIBS)
@@ -594,232 +881,291 @@ dnl AND / OR
dnl
dnl 2. separate NSS & NSPR distributions
dnl options: [--with-nss=<PFX>] [--with-nspr=<PFX>]
-dnl
+dnl
dnl 2 overrides 1
dnl
dnl ==========================================================================
-XMLSEC_NO_NSS="1"
+NSS_MIN_VERSION="3.11.1"
+NSPR_MIN_VERSION="4.4.1"
SEAMONKEY_MIN_VERSION="1.0"
MOZILLA_MIN_VERSION="1.4"
-NSS_MIN_VERSION="3.9"
-NSPR_MIN_VERSION="4.4.1"
-NSS_CFLAGS=""
-NSS_LIBS=""
-NSS_LIBS_LIST="-lnss3 -lsmime3"
-NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
-NSS_FOUND="no"
NSPR_PACKAGE=mozilla-nspr
NSS_PACKAGE=mozilla-nss
+NSPR_INCLUDE_MARKER="nspr/nspr.h"
+NSPR_LIB_MARKER="libnspr4$shrext"
+NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
+NSS_INCLUDE_MARKER="nss/nss.h"
+NSS_LIB_MARKER="libnss3$shrext"
+NSS_LIBS_LIST="-lnss3 -lsmime3"
+XMLSEC_NO_NSS="1"
+NSPR_INCLUDE_PATH=
+NSPR_LIB_PATH=
+NSS_INCLUDE_PATH=
+NSS_LIB_PATH=
+NSS_FOUND="no"
+NSPR_FOUND="no"
+AC_ARG_WITH([nss], [AC_HELP_STRING([--with-nss@<:@=PFX@:>@], [nss location])])
+AC_ARG_WITH([nspr], [AC_HELP_STRING([--with-nspr@<:@=PFX@:>@], [nspr location (needed for NSS)])])
+AC_ARG_WITH([seamonkey_ver], [AC_HELP_STRING([--with-seamonkey-ver@<:@=VER@:>@], [mozilla version (alt to --with-nss, --with-nspr)])])
+AC_ARG_WITH([mozilla_ver], [AC_HELP_STRING([--with-mozilla-ver@<:@=VER@:>@], [mozilla version (alt to --with-nss, --with-nspr)])])
-dnl if nss is disabled, bail out early
-AC_ARG_WITH(nss, [ --with-nss=[PFX] nss location])
-AC_ARG_WITH(nspr, [ --with-nspr=[PFX] nspr location (needed for NSS)])
-AC_ARG_WITH(seamonkey_ver, [ --with-seamonkey-ver=[VER] mozilla version (alt to --with-nss, --with-nspr)])
-AC_ARG_WITH(mozilla_ver, [ --with-mozilla-ver=[VER] mozilla version (alt to --with-nss, --with-nspr)])
+dnl Priority 0: Check if library is disabled
if test "z$with_nss" = "zno" -o "z$with_nspr" = "zno" ; then
- AC_MSG_CHECKING(for NSS libraries)
- AC_MSG_RESULT(no)
- NSS_FOUND="without"
-elif test "z$with_nss" = "z" -a "z$with_nspr" = "z" -a "z$with_mozilla_ver" = "z" -a "z$with_seamonkey_ver" = "z" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
- dnl
- dnl Mozilla's NSS/NSPR are distributed under different names
- dnl in different distribution:
- dnl seamonkey-nspr and seamonkey-nss
- dnl mozilla-nspr and mozilla-nss
- dnl xulrunner-nspr and xulrunner-nss
- dnl nspr and nss
- dnl We are going to try all options
- dnl
+ NSS_FOUND="disabled"
+ NSPR_FOUND="disabled"
+fi
+
+dnl Priority 1: User specifies the path to installation
+if test "z$NSPR_FOUND" = "zno" -a "z$with_nspr" != "z" -a "z$with_nspr" != "zyes" ; then
+ AC_MSG_CHECKING(for nspr library installation in "$with_nspr" folder)
+ if test -f "$with_nspr/include/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/lib/$NSPR_LIB_MARKER" ; then
+ NSPR_INCLUDE_PATH="$with_nspr/include"
+ NSPR_LIB_PATH="$with_nspr/lib"
+ NSPR_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_nspr/include/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/lib/$NSPR_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+if test "z$NSS_FOUND" = "zno" -a "z$with_nss" != "z" -a "z$with_nss" != "zyes" ; then
+ AC_MSG_CHECKING(for nss library installation in "$with_nss" folder)
+ if test -f "$with_nss/include/$NSS_INCLUDE_MARKER" -a -f "$with_nss/lib/$NSS_LIB_MARKER" ; then
+ NSS_INCLUDE_PATH="$with_nss/include"
+ NSS_LIB_PATH="$with_nss/lib"
+ NSS_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_nss/include/$NSS_INCLUDE_MARKER" and/or "$with_nss/lib/$NSS_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 2: User sets both CFLAGS and LIBS flags
+if test "z$NSPR_FOUND" = "zno" -a "z$NSPR_CFLAGS" != "z" -a "z$NSPR_LIBS" != "z" ; then
+ NSPR_FOUND="yes"
+fi
+if test "z$NSS_FOUND" = "zno" -a "z$NSS_CFLAGS" != "z" -a "z$NSS_LIBS" != "z" ; then
+ NSS_FOUND="yes"
+fi
+
+dnl Priority 3: Guess with pkg_config
+dnl
+dnl Mozilla's NSS/NSPR are distributed under different names in different distribution,
+dnl we are going to try all options:
+dnl seamonkey-nspr and seamonkey-nss
+dnl mozilla-nspr and mozilla-nss
+dnl xulrunner-nspr and xulrunner-nss
+dnl nspr and nss
+if test "z$NSPR_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" -a "z$with_mozilla_ver" = "z" -a "z$with_seamonkey_ver" ; then
+ if test "z$NSPR_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(NSPR, seamonkey-nspr >= $NSPR_MIN_VERSION,
+ [NSPR_FOUND=yes NSPR_PACKAGE=seamonkey-nspr],
+ [NSPR_FOUND=no])
+ fi
+ if test "z$NSPR_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(NSPR, mozilla-nspr >= $MOZILLA_MIN_VERSION,
+ [NSPR_FOUND=yes NSPR_PACKAGE=mozilla-nspr],
+ [NSPR_FOUND=no])
+ fi
+ if test "z$NSPR_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(NSPR, xulrunner-nspr >= $NSPR_MIN_VERSION,
+ [NSPR_FOUND=yes NSPR_PACKAGE=xulrunner-nspr],
+ [NSPR_FOUND=no])
+ fi
+ if test "z$NSPR_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(NSPR, nspr >= $NSPR_MIN_VERSION,
+ [NSPR_FOUND=yes NSPR_PACKAGE=nspr],
+ [NSPR_FOUND=no])
+ fi
+fi
+if test "z$NSS_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" -a "z$with_mozilla_ver" = "z" -a "z$with_seamonkey_ver" ; then
if test "z$NSS_FOUND" = "zno" ; then
- PKG_CHECK_MODULES(NSS, seamonkey-nspr >= $NSPR_MIN_VERSION seamonkey-nss >= $SEAMONKEY_MIN_VERSION,
- [NSS_FOUND=yes NSPR_PACKAGE=seamonkey-nspr NSS_PACKAGE=seamonkey-nss],
- [NSS_FOUND=no])
+ PKG_CHECK_MODULES(NSS, seamonkey-nss >= $SEAMONKEY_MIN_VERSION,
+ [NSS_FOUND=yes NSS_PACKAGE=seamonkey-nss],
+ [NSS_FOUND=no])
fi
if test "z$NSS_FOUND" = "zno" ; then
- PKG_CHECK_MODULES(NSS, mozilla-nspr >= $MOZILLA_MIN_VERSION mozilla-nss >= $MOZILLA_MIN_VERSION,
- [NSS_FOUND=yes NSPR_PACKAGE=mozilla-nspr NSS_PACKAGE=mozilla-nss],
- [NSS_FOUND=no])
+ PKG_CHECK_MODULES(NSS, mozilla-nss >= $MOZILLA_MIN_VERSION,
+ [NSS_FOUND=yes NSS_PACKAGE=mozilla-nss],
+ [NSS_FOUND=no])
fi
if test "z$NSS_FOUND" = "zno" ; then
- PKG_CHECK_MODULES(NSS, xulrunner-nspr >= $NSPR_MIN_VERSION xulrunner-nss >= $NSS_MIN_VERSION,
- [NSS_FOUND=yes NSPR_PACKAGE=xulrunner-nspr NSS_PACKAGE=xulrunner-nss],
- [NSS_FOUND=no])
+ PKG_CHECK_MODULES(NSS, xulrunner-nss >= $NSS_MIN_VERSION,
+ [NSS_FOUND=yes NSS_PACKAGE=xulrunner-nss],
+ [NSS_FOUND=no])
fi
if test "z$NSS_FOUND" = "zno" ; then
- PKG_CHECK_MODULES(NSS, nspr >= $NSPR_MIN_VERSION nss >= $NSS_MIN_VERSION,
- [NSS_FOUND=yes NSPR_PACKAGE=nspr NSS_PACKAGE=nss],
- [NSS_FOUND=no])
+ PKG_CHECK_MODULES(NSS, nss >= $NSS_MIN_VERSION,
+ [NSS_FOUND=yes NSS_PACKAGE=nss],
+ [NSS_FOUND=no])
fi
fi
-if test "z$NSS_FOUND" = "zno" ; then
- dnl process the mozilla options if any
- if test "z$with_seamonkey_ver" != "z" ; then
- ac_mozilla_name=seamonkey-$with_seamonkey_ver
- elif test "z$with_mozilla_ver" != "z" ; then
- ac_mozilla_name=mozilla-$with_mozilla_ver
- else
- ac_mozilla_name=mozilla-$MOZILLA_MIN_VERSION
- fi
-
- ac_nss_lib_dir="/usr/lib /usr/lib64 /usr/local/lib /usr/lib/$ac_mozilla_name /usr/local/lib/$ac_mozilla_name"
- ac_nss_inc_dir="/usr/include /usr/include/mozilla /usr/local/include /usr/local/include/mozilla /usr/include/$ac_mozilla_name /usr/local/include/$ac_mozilla_name"
-
- AC_MSG_CHECKING(for nspr libraries >= $NSPR_MIN_VERSION)
- NSPR_INCLUDES_FOUND="no"
- NSPR_LIBS_FOUND="no"
- NSPR_FOUND="no"
- NSPR_PRINIT_H=""
-
- if test "z$with_nspr" != "z" ; then
- NSPR_PREFIX="$with_nspr"
- NSPR_CFLAGS="-I$with_nspr/include -I$with_nspr/include/nspr"
- if test "z$with_gnu_ld" = "zyes" ; then
- NSPR_LIBS="-Wl,-rpath-link -Wl,$with_nspr/lib -L$with_nspr/lib $NSPR_LIBS_LIST"
- else
- NSPR_LIBS="-L$with_nspr/lib $NSPR_LIBS_LIST"
- fi
- NSPR_INCLUDES_FOUND="yes"
- NSPR_LIBS_FOUND="yes"
- NSPR_PRINIT_H="$with_nspr/include/prinit.h"
+dnl Priority 4: Guess using a list of folders using mozilla/seamonkey version hints (if any)
+if test "z$with_seamonkey_ver" != "z" ; then
+ NSS_MOZILLA_NAME=seamonkey-$with_seamonkey_ver
+elif test "z$with_mozilla_ver" != "z" ; then
+ NSS_MOZILLA_NAME=mozilla-$with_mozilla_ver
+else
+ NSS_MOZILLA_NAME=mozilla-$MOZILLA_MIN_VERSION
+fi
+NSS_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/include/mozilla /usr/local/include/mozilla /usr/include/$NSS_MOZILLA_NAME /usr/local/include/$NSS_MOZILLA_NAME"
+NSS_LIB_DIR="$COMMON_LIB_DIR /usr/lib/$NSS_MOZILLA_NAME /usr/local/lib/$NSS_MOZILLA_NAME"
+if test "z$NSPR_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for nspr library installation in the typical folders)
+ if test "z$NSPR_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(NSPR_INCLUDE_PATH, $NSPR_INCLUDE_MARKER, $NSS_INCLUDE_DIR)
+ fi
+ if test "z$NSPR_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(NSPR_LIB_PATH, $NSPR_LIB_MARKER, $NSS_LIB_DIR)
+ fi
+ if test "z$NSPR_INCLUDE_PATH" != "z" -a "z$NSPR_LIB_PATH" != "z" ; then
+ NSPR_FOUND=yes
+ AC_MSG_RESULT([yes ("-I$NSPR_INCLUDE_PATH -L$NSPR_LIB_PATH")])
else
- for dir in $ac_nss_inc_dir ; do
- if test -f $dir/nspr/prinit.h ; then
- dnl do not add -I/usr/include because compiler does it anyway
- if test "z$dir" = "z/usr/include" ; then
- NSPR_CFLAGS=""
- else
- NSPR_CFLAGS="-I$dir/nspr"
- fi
- NSPR_INCLUDES_FOUND="yes"
- NSPR_PRINIT_H="$dir/nspr/prinit.h"
- break
- fi
- done
-
- for dir in $ac_nss_lib_dir ; do
- if test -f $dir/libnspr4$shrext ; then
- dnl do not add -L/usr/lib because compiler does it anyway
- if test "z$dir" = "z/usr/lib" ; then
- NSPR_LIBS="$NSPR_LIBS_LIST"
- else
- if test "z$with_gnu_ld" = "zyes" ; then
- NSPR_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSPR_LIBS_LIST"
- else
- NSPR_LIBS="-L$dir $NSPR_LIBS_LIST"
- fi
- fi
- NSPR_LIBS_FOUND="yes"
- break
- fi
- done
- fi
-
- if test "z$NSPR_INCLUDES_FOUND" = "zyes" -a "z$NSPR_LIBS_FOUND" = "zyes" ; then
- OLD_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$NSPR_CFLAGS"
- AC_EGREP_CPP(yes,[
- #include <prinit.h>
- #if PR_VMAJOR >= 4
- yes
- #endif
- ],[
- NSPR_FOUND=yes
- ],[
- NSPR_FOUND=no
- ])
- CPPFLAGS="$OLD_CPPFLAGS"
- fi
-
- if test "z$NSPR_FOUND" = "zyes" ; then
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([not found])
+ fi
+fi
+if test "z$NSS_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for nss library installation in the typical folders)
+ if test "z$NSS_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(NSS_INCLUDE_PATH, $NSS_INCLUDE_MARKER, $NSS_INCLUDE_DIR)
+ fi
+ if test "z$NSS_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(NSS_LIB_PATH, $NSS_LIB_MARKER, $NSS_LIB_DIR)
+ fi
+ if test "z$NSS_INCLUDE_PATH" != "z" -a "z$NSS_LIB_PATH" != "z" ; then
+ NSS_FOUND=yes
+ AC_MSG_RESULT([yes ("-I$NSS_INCLUDE_PATH -L$NSS_LIB_PATH")])
else
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([not found])
fi
+fi
- dnl look for nss
- AC_MSG_CHECKING(for nss libraries >= $NSS_MIN_VERSION)
- NSS_INCLUDES_FOUND="no"
- NSS_LIBS_FOUND="no"
- NSS_NSS_H=""
+dnl Priority 5 (NSPR): Just try to compile/link and hope for the best
+if test "z$NSPR_FOUND" = "zno" ; then
+ AC_MSG_CHECKING(for nspr library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $NSPR_LIBS $NSPR_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <stdio.h>
+ #include <nspr/nspr.h>
+ ]],[[
+ int main () { printf("v=%s\n", PR_GetVersion()); return(0); }
+ ]])
+ ],[
+ NSPR_FOUND=yes
+ NSPR_LIBS="$NSPR_LIBS $NSPR_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ NSPR_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
- if test "z$with_nss" != "z" ; then
- NSS_CFLAGS="$NSS_CFLAGS -I$with_nss/include -I$with_nss/include/nss"
- if test "z$with_gnu_ld" = "zyes" ; then
- NSS_LIBS="$NSS_LIBS -Wl,-rpath-link -Wl,$with_nss/lib -L$with_nss/lib $NSS_LIBS_LIST"
- else
- NSS_LIBS="$NSS_LIBS -L$with_nss/lib $NSS_LIBS_LIST"
- fi
- NSS_INCLUDES_FOUND="yes"
- NSS_LIBS_FOUND="yes"
- NSS_NSS_H="$with_nss/include/nss.h"
- else
- for dir in $ac_nss_inc_dir ; do
- if test -f $dir/nss/nss.h ; then
- dnl do not add -I/usr/include because compiler does it anyway
- if test "z$dir" = "z/usr/include" ; then
- NSS_CFLAGS="$NSS_CFLAGS"
- else
- NSS_CFLAGS="$NSS_CFLAGS -I$dir/nss"
- fi
- NSS_INCLUDES_FOUND="yes"
- NSS_NSS_H="$dir/nss/nss.h"
- break
- fi
- done
-
- for dir in $ac_nss_lib_dir ; do
- if test -f $dir/libnss3$shrext ; then
- dnl do not add -L/usr/lib because compiler does it anyway
- if test "z$dir" = "z/usr/lib" ; then
- NSS_LIBS="$NSS_LIBS_LIST"
- else
- if test "z$with_gnu_ld" = "zyes" ; then
- NSS_LIBS="-Wl,-rpath-link -Wl,$dir -L$dir $NSS_LIBS_LIST"
- else
- NSS_LIBS="-L$dir $NSS_LIBS_LIST"
- fi
- fi
- NSS_LIBS_FOUND="yes"
- break
- fi
- done
- fi
-
- if test "z$NSS_INCLUDES_FOUND" = "zyes" -a "z$NSS_LIBS_FOUND" = "zyes" ; then
- OLD_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$NSPR_CFLAGS $NSS_CFLAGS"
- AC_EGREP_CPP(yes,[
- #include <nss.h>
- #if NSS_VMAJOR >= 3 && NSS_VMINOR >= 2
- yes
- #endif
- ],[
- NSS_FOUND=yes
- ],[
- NSS_FOUND=no
- ])
- CPPFLAGS="$OLD_CPPFLAGS"
- fi
-
- if test "z$NSS_FOUND" = "zyes" ; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
+dnl NSRP: Set flags if INCLUDE_PATH or LIB_PATH are set (need to do it before we try to find NSS)
+if test "z$NSPR_FOUND" = "zyes" -a "z$NSPR_INCLUDE_PATH" != "z" ; then
+ NSPR_CFLAGS="$NSPR_CFLAGS -I$NSPR_INCLUDE_PATH -I$NSPR_INCLUDE_PATH/nspr"
+fi
+if test "z$NSPR_FOUND" = "zyes" -a "z$NSPR_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ NSPR_LIBS="$NSPR_LIBS -Wl,-rpath-link -Wl,$NSPR_LIB_PATH"
fi
+ NSPR_LIBS="$NSPR_LIBS -L$NSPR_LIB_PATH/lib $NSPR_LIBS_LIST"
+fi
+
+dnl Priority 5 (NSS): Just try to compile/link and hope for the best
+if test "z$NSS_FOUND" = "zno" ; then
+ AC_MSG_CHECKING(for nss library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS $NSS_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $NSS_LIBS $NSPR_LIBS $NSS_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <stdio.h>
+ #include <nss/nss.h>
+ ]],[[
+ int main () { printf("v=%s\n", NSS_GetVersion()); return(0); }
+ ]])
+ ],[
+ NSS_FOUND=yes
+ NSS_LIBS="$NSS_LIBS $NSS_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ NSS_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
- dnl check that we have found both NSS and NSPR
- if test "z$NSPR_FOUND" = "zyes" -a "z$NSS_FOUND" = "zyes" ; then
- NSS_CFLAGS="$NSS_CFLAGS $NSPR_CFLAGS"
- NSS_LIBS="$NSS_LIBS $NSPR_LIBS"
- elif test "z$NSPR_FOUND" != "zyes" -a "z$NSS_FOUND" = "zyes" ; then
- NSS_FOUND="no"
- AC_MSG_RESULT(NSPR library is required for NSS, ignoring NSS library we have found)
+dnl NSS: Set flags if INCLUDE_PATH or LIB_PATH are set
+if test "z$NSS_FOUND" = "zyes" -a "z$NSS_INCLUDE_PATH" != "z" ; then
+ NSS_CFLAGS="$NSS_CFLAGS -I$NSS_INCLUDE_PATH -I$NSS_INCLUDE_PATH/nss"
+fi
+if test "z$NSS_FOUND" = "zyes" -a "z$NSS_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ NSS_LIBS="$NSS_LIBS -Wl,-rpath-link -Wl,$NSS_LIB_PATH"
fi
+ NSS_LIBS="$NSS_LIBS -L$NSS_LIB_PATH/lib $NSS_LIBS_LIST"
fi
+dnl Check NSS and NSPR versions
+AC_MSG_CHECKING(for nspr library >= $NSPR_MIN_VERSION)
+if test "z$NSPR_FOUND" = "zyes" ; then
+ minvers=`echo $NSPR_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <prinit.h>
+ #if ((PR_VMAJOR * 100 + PR_VMINOR) * 100 + PR_VPATCH) >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ NSPR_FOUND=yes
+ ],[
+ NSPR_FOUND=no
+ ])
+ CPPFLAGS="$OLD_CPPFLAGS"
+fi
+AC_MSG_RESULT([$NSPR_FOUND])
+
+AC_MSG_CHECKING(for nss library >= $NSS_MIN_VERSION)
+if test "z$NSS_FOUND" = "zyes" ; then
+ minvers=`echo $NSS_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 100 + $2) * 100 + $3;}'`
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS $NSS_CFLAGS"
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <nss.h>
+ #if ((NSS_VMAJOR * 100 + NSS_VMINOR) * 100 + NSS_VPATCH) >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ NSS_FOUND=yes
+ ],[
+ NSS_FOUND=no
+ ])
+ CPPFLAGS="$OLD_CPPFLAGS"
+fi
+AC_MSG_RESULT([$NSS_FOUND])
+
+dnl Check that we have found both NSS and NSPR
+if test "z$NSPR_FOUND" = "zyes" -a "z$NSS_FOUND" = "zyes" ; then
+ NSS_CFLAGS="$NSS_CFLAGS $NSPR_CFLAGS"
+ NSS_LIBS="$NSS_LIBS $NSPR_LIBS"
+elif test "z$NSPR_FOUND" != "zyes" -a "z$NSS_FOUND" = "zyes" ; then
+ NSS_FOUND="no"
+ AC_MSG_RESULT([NSPR library is required for NSS, ignoring NSS library we have found])
+fi
+
+dnl Finally set all the flags
if test "z$NSS_FOUND" = "zyes" ; then
XMLSEC_NO_NSS="0"
NSS_CFLAGS="$NSS_CFLAGS -DXMLSEC_CRYPTO_NSS=1"
@@ -839,66 +1185,175 @@ AC_SUBST(NSS_MIN_VERSION)
AC_SUBST(NSPR_MIN_VERSION)
AC_SUBST(MOZILLA_MIN_VERSION)
-
dnl ==========================================================================
dnl See if we can find GCrypt
dnl ==========================================================================
-GCRYPT_CONFIG="libgcrypt-config"
-XMLSEC_NO_GCRYPT="1"
GCRYPT_MIN_VERSION="1.4.0"
-GCRYPT_VERSION=""
-GCRYPT_CFLAGS=""
-GCRYPT_LIBS=""
+GCRYPT_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/gcrypt/include"
+GCRYPT_LIB_DIR="$COMMON_LIB_DIR /usr/local/gcrypt/lib"
+GCRYPT_CONFIG="libgcrypt-config"
+GCRYPT_INCLUDE_MARKER="gcrypt.h"
+GCRYPT_LIB_MARKER="libgcrypt$shrext"
GCRYPT_CRYPTO_LIB="$XMLSEC_PACKAGE-gcrypt"
+GCRYPT_LIBS_LIST="-lgcrypt"
+
+XMLSEC_NO_GCRYPT="1"
+GCRYPT_VERSION=
+GCRYPT_INCLUDE_PATH=
+GCRYPT_LIB_PATH=
GCRYPT_FOUND="no"
-AC_ARG_WITH(gcrypt, [ --with-gcrypt=[PFX] gcrypt location])
+AC_ARG_WITH([gcrypt], [AC_HELP_STRING([--with-gcrypt@<:@=PFX@:>@], [gcrypt location])])
+
+dnl Priority 0: Check if library is not needed
if test "z$with_gcrypt" = "zno" ; then
- AC_MSG_CHECKING(for gcrypt libraries >= $GCRYPT_MIN_VERSION)
- AC_MSG_RESULT(no)
- GCRYPT_FOUND="without"
-elif test "z$with_gcrypt" = "z" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
- PKG_CHECK_MODULES(GCRYPT, gcrypt >= $GCRYPT_MIN_VERSION,
- [GCRYPT_FOUND=yes],
- [GCRYPT_FOUND=no])
+ GCRYPT_FOUND="disabled"
+fi
- if test "z$GCRYPT_FOUND" = "zno" ; then
- PKG_CHECK_MODULES(GCRYPT, libgcrypt >= $GCRYPT_MIN_VERSION,
- [GCRYPT_FOUND=yes],
- [GCRYPT_FOUND=no])
+dnl Priority 1: User specifies the path to installation
+if test "z$GCRYPT_FOUND" = "zno" -a "z$with_gcrypt" != "z" -a "z$with_gcrypt" != "zyes" ; then
+ AC_MSG_CHECKING(for libgcrypt library installation in "$with_gcrypt" folder)
+ if test "z$ENABLE_CUSTOM_CONFIGS" = "zyes" -a -f "$with_gcrypt/bin/$GCRYPT_CONFIG" ; then
+ GCRYPT_CONFIG_PATH="$with_gcrypt/bin/$GCRYPT_CONFIG"
+ GCRYPT_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ elif test -f "$with_gcrypt/include/$GCRYPT_INCLUDE_MARKER" -a -f "$with_gcrypt/lib/$GCRYPT_LIB_MARKER" ; then
+ GCRYPT_INCLUDE_PATH="$with_gcrypt/include"
+ GCRYPT_LIB_PATH="$with_gcrypt/lib"
+ GCRYPT_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_gcrypt/bin/$GCRYPT_CONFIG" tool, or "$with_gcrypt/include/$GCRYPT_INCLUDE_MARKER" and/or "$with_gcrypt/lib/$GCRYPT_LIB_MARKER" files don't exist), typo?])
fi
+fi
+
+dnl Priority 2: User sets both CFLAGS and LIBS flags
+if test "z$GCRYPT_FOUND" = "zno" -a "z$GCRYPT_CFLAGS" != "z" -a "z$GCRYPT_LIBS" != "z" ; then
+ GCRYPT_FOUND="yes"
+fi
+dnl Priority 3: Guess with pkg_config
+if test "z$GCRYPT_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
+ if test "z$GCRYPT_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(GCRYPT, gcrypt >= $GCRYPT_MIN_VERSION,
+ [GCRYPT_FOUND=yes],
+ [GCRYPT_FOUND=no])
+ fi
+ if test "z$GCRYPT_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(GCRYPT, libgcrypt20 >= $GCRYPT_MIN_VERSION,
+ [GCRYPT_FOUND=yes],
+ [GCRYPT_FOUND=no])
+ fi
if test "z$GCRYPT_FOUND" = "zno" ; then
PKG_CHECK_MODULES(GCRYPT, libgcrypt11 >= $GCRYPT_MIN_VERSION,
- [GCRYPT_FOUND=yes],
- [GCRYPT_FOUND=no])
+ [GCRYPT_FOUND=yes],
+ [GCRYPT_FOUND=no])
+ fi
+ if test "z$GCRYPT_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(GCRYPT, libgcrypt >= $GCRYPT_MIN_VERSION,
+ [GCRYPT_FOUND=yes],
+ [GCRYPT_FOUND=no])
fi
fi
+dnl Priority 4: Guess the config tool location
+if test "z$GCRYPT_FOUND" = "zno" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ AC_PATH_PROG(GCRYPT_CONFIG_PATH, [$GCRYPT_CONFIG], [], [$PATH])
+ if test "z$GCRYPT_CONFIG_PATH" != "z" ; then
+ GCRYPT_FOUND="yes"
+ fi
+fi
+
+dnl Priority 5: Guess using a list of folders.
+if test "z$GCRYPT_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for libgcrypt library installation in the typical folders)
+ if test "z$GCRYPT_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(GCRYPT_INCLUDE_PATH, $GCRYPT_INCLUDE_MARKER, $GCRYPT_INCLUDE_DIR)
+ fi
+ if test "z$GCRYPT_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(GCRYPT_LIB_PATH, $GCRYPT_LIB_MARKER, $GCRYPT_LIB_DIR)
+ fi
+ if test "z$GCRYPT_INCLUDE_PATH" != "z" -a "z$GCRYPT_LIB_PATH" != "z" ; then
+ GCRYPT_FOUND="yes"
+ AC_MSG_RESULT([yes ("-I$GCRYPT_INCLUDE_PATH -L$GCRYPT_LIB_PATH")])
+ else
+ AC_MSG_RESULT([not found])
+ fi
+fi
+
+dnl Priority 6: Just try to compile/link and hope for the best
if test "z$GCRYPT_FOUND" = "zno" ; then
- AC_MSG_CHECKING(for gcrypt libraries >= $GCRYPT_MIN_VERSION)
- if test "z$with_gcrypt" != "z" ; then
- GCRYPT_CONFIG=$with_gcrypt/bin/$GCRYPT_CONFIG
- fi
- if ! $GCRYPT_CONFIG --version > /dev/null 2>&1 ; then
- if test "z$with_gcrypt" != "z" ; then
- AC_MSG_ERROR(Unable to find gcrypt at '$with_gcrypt')
- else
- AC_MSG_RESULT(no)
- fi
+ AC_MSG_CHECKING(for gcrypt library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $GCRYPT_LIBS $GCRYPT_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <gcrypt.h>
+ ]],[[
+ int main () { printf("v=%s\n", gcry_check_version("0")); return(0); }
+ ]])
+ ],[
+ GCRYPT_FOUND=yes
+ GCRYPT_LIBS="$GCRYPT_LIBS $GCRYPT_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ GCRYPT_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
+
+dnl Set CFLAGS/LIBS flags
+if test "z$GCRYPT_FOUND" = "zyes" ; then
+ if test "z$GCRYPT_CONFIG_PATH" != "z" -a "z$ENABLE_CUSTOM_CONFIGS" = "zyes" ; then
+ dnl Get the values using config tool (overwrite CFLAGS/LIBS!)
+ if test "z$GCRYPT_CFLAGS" = "z" ; then
+ GCRYPT_CFLAGS="`$GCRYPT_CONFIG_PATH --cflags`"
+ fi
+ if test "z$GCRYPT_LIBS" = "z"; then
+ GCRYPT_LIBS="`$GCRYPT_CONFIG_PATH --libs`"
+ fi
+ GCRYPT_CONFIG=$GCRYPT_CONFIG_PATH
+ GCRYPT_FOUND="yes"
else
- vers=`$GCRYPT_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- minvers=`echo $GCRYPT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test "$vers" -ge "$minvers" ; then
- GCRYPT_CFLAGS="$GCRYPT_CFLAGS `$GCRYPT_CONFIG --cflags`"
- GCRYPT_LIBS="$GCRYPT_LIBS `$GCRYPT_CONFIG --libs`"
- GCRYPT_FOUND=yes
- else
- AC_MSG_ERROR(You need at least gcrypt $GCRYPT_MIN_VERSION for this version of $XMLSEC_PACKAGE)
- fi
+ dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
+ if test "z$GCRYPT_INCLUDE_PATH" != "z" ; then
+ GCRYPT_CFLAGS="$GCRYPT_CFLAGS -I$GCRYPT_INCLUDE_PATH"
+ fi
+ if test "z$GCRYPT_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ GCRYPT_LIBS="$GCRYPT_LIBS -Wl,-rpath-link -Wl,$GCRYPT_LIB_PATH"
+ fi
+ GCRYPT_LIBS="$GCRYPT_LIBS -L$GCRYPT_LIB_PATH $GCRYPT_LIBS_LIST"
+ fi
fi
fi
-if test "z$GCRYPT_FOUND" = "zyes" ; then
+dnl Verify the version
+AC_MSG_CHECKING(for libgcrypt library >= $GCRYPT_MIN_VERSION)
+if test "z$GCRYPT_FOUND" = "zyes" ; then
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS"
+ dnl gcrypt uses hex digits for version number
+ minvers=`echo $GCRYPT_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 256 + $2) * 256 + $3;}'`
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <gcrypt.h>
+ #if GCRYPT_VERSION_NUMBER >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ GCRYPT_FOUND=yes
+ ], [
+ GCRYPT_FOUND=no
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+fi
+AC_MSG_RESULT([$GCRYPT_FOUND])
+
+dnl Finally set variables
+if test "z$GCRYPT_FOUND" = "zyes" ; then
XMLSEC_NO_GCRYPT="0"
GCRYPT_CFLAGS="$GCRYPT_CFLAGS -DXMLSEC_CRYPTO_GCRYPT=1"
XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST gcrypt"
@@ -913,68 +1368,148 @@ AC_SUBST(GCRYPT_LIBS)
AC_SUBST(GCRYPT_CRYPTO_LIB)
AC_SUBST(GCRYPT_MIN_VERSION)
-
dnl ==========================================================================
dnl See if we can find GnuTLS
dnl ==========================================================================
-GNUTLS_CONFIG="libgnutls-config"
-XMLSEC_NO_GNUTLS="1"
GNUTLS_MIN_VERSION="2.8.0"
-GNUTLS_VERSION=""
-GNUTLS_CFLAGS=""
-GNUTLS_LIBS=""
+GNUTLS_INCLUDE_DIR="$COMMON_INCLUDE_DIR /usr/local/gnutls/include"
+GNUTLS_LIB_DIR="$COMMON_LIB_DIR /usr/local/gnutls/lib"
+GNUTLS_INCLUDE_MARKER="gnutls/gnutls.h"
+GNUTLS_LIB_MARKER="libgnutls$shrext"
GNUTLS_CRYPTO_LIB="$XMLSEC_PACKAGE-gnutls"
+GNUTLS_LIBS_LIST="-lgnutls"
+
+XMLSEC_NO_GNUTLS="1"
+GNUTLS_INCLUDE_PATH=
+GNUTLS_LIB_PATH=
GNUTLS_FOUND="no"
-AC_ARG_WITH(gnutls, [ --with-gnutls=[PFX] gnutls location])
+AC_ARG_WITH([gnutls], [AC_HELP_STRING([--with-gnutls@<:@=PFX@:>@], [gnutls location])])
+
+dnl Priority 0: Check if library is not needed
if test "z$with_gnutls" = "zno" ; then
- AC_MSG_CHECKING(for gnutls libraries >= $GNUTLS_MIN_VERSION)
- AC_MSG_RESULT(no)
- GNUTLS_FOUND="without"
-elif test "z$with_gnutls" = "z" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
- PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_MIN_VERSION,
- [GNUTLS_FOUND=yes],
- [GNUTLS_FOUND=no])
- if test "z$GNUTLS_FOUND" = "zno" ; then
+ GNUTLS_FOUND="disabled"
+fi
+
+dnl Priority 1: User specifies the path to installation
+if test "z$GNUTLS_FOUND" = "zno" -a "z$with_gnutls" != "z" -a "z$with_gnutls" != "zyes" ; then
+ AC_MSG_CHECKING(for libgnutls library installation in "$with_gnutls" folder)
+ if test -f "$with_gnutls/include/$GNUTLS_INCLUDE_MARKER" -a -f "$with_gnutls/lib/$GNUTLS_LIB_MARKER" ; then
+ GNUTLS_INCLUDE_PATH="$with_gnutls/include"
+ GNUTLS_LIB_PATH="$with_gnutls/lib"
+ GNUTLS_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_ERROR([not found: "$with_gnutls/bin/$GNUTLS_CONFIG" tool, or "$with_gnutls/include/$GNUTLS_INCLUDE_MARKER" and/or "$with_gnutls/lib/$GNUTLS_LIB_MARKER" files don't exist), typo?])
+ fi
+fi
+
+dnl Priority 2: User sets both CFLAGS and LIBS flags
+if test "z$GNUTLS_FOUND" = "zno" -a "z$GNUTLS_CFLAGS" != "z" -a "z$GNUTLS_LIBS" != "z" ; then
+ GNUTLS_FOUND="yes"
+fi
+
+dnl Priority 3: Guess with pkg_config
+if test "z$GNUTLS_FOUND" = "zno" -a "z$PKGCONFIG_FOUND" = "zyes" ; then
+ if test "z$GNUTLS_FOUND" = "zno" ; then
+ PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_MIN_VERSION,
+ [GNUTLS_FOUND=yes],
+ [GNUTLS_FOUND=no])
+ fi
+ if test "z$GNUTLS_FOUND" = "zno" ; then
PKG_CHECK_MODULES(GNUTLS, libgnutls >= $GNUTLS_MIN_VERSION,
- [GNUTLS_FOUND=yes],
- [GNUTLS_FOUND=no])
+ [GNUTLS_FOUND=yes],
+ [GNUTLS_FOUND=no])
fi
fi
-if test "z$GNUTLS_FOUND" = "zno" ; then
- AC_MSG_CHECKING(for gnutls libraries >= $GNUTLS_MIN_VERSION)
- if test "z$with_gnutls" != "z" ; then
- GNUTLS_CONFIG=$with_gnutls/bin/$GNUTLS_CONFIG
- fi
- if ! $GNUTLS_CONFIG --version > /dev/null 2>&1 ; then
- if test "z$with_gnutls" != "z" ; then
- AC_MSG_ERROR(Unable to find gnutls at '$with_gnutls')
- else
- AC_MSG_RESULT(no)
- fi
+dnl Priority 4: Guess using a list of folders.
+if test "z$GNUTLS_FOUND" = "zno" -a "z$ENABLE_FOLDERS_SEARCH" = "zyes" ; then
+ AC_MSG_CHECKING(for libgnutls library installation in the typical folders)
+ if test "z$GNUTLS_INCLUDE_PATH" = "z" ; then
+ AX_FIND_FOLDER(GNUTLS_INCLUDE_PATH, $GNUTLS_INCLUDE_MARKER, $GNUTLS_INCLUDE_DIR)
+ fi
+ if test "z$GNUTLS_LIB_PATH" = "z" ; then
+ AX_FIND_FOLDER(GNUTLS_LIB_PATH, $GNUTLS_LIB_MARKER, $GNUTLS_LIB_DIR)
+ fi
+ if test "z$GNUTLS_INCLUDE_PATH" != "z" -a "z$GNUTLS_LIB_PATH" != "z" ; then
+ GNUTLS_FOUND="yes"
+ AC_MSG_RESULT([yes ("-I$GNUTLS_INCLUDE_PATH -L$GNUTLS_LIB_PATH")])
else
- vers=`$GNUTLS_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- minvers=`echo $GNUTLS_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
- if test "$vers" -ge "$minvers" ; then
- GNUTLS_CFLAGS="$GNUTLS_CFLAGS `$GNUTLS_CONFIG --cflags`"
- GNUTLS_LIBS="$GNUTLS_LIBS `$GNUTLS_CONFIG --libs`"
- GNUTLS_FOUND=yes
- else
- AC_MSG_ERROR(You need at least gnutls $GNUTLS_MIN_VERSION for this version of $XMLSEC_PACKAGE)
- fi
+ AC_MSG_RESULT([not found])
fi
fi
-if test "z$GNUTLS_FOUND" = "zyes" ; then
- XMLSEC_NO_GNUTLS="0"
- GNUTLS_CFLAGS="$GNUTLS_CFLAGS -DXMLSEC_CRYPTO_GNUTLS=1"
- XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST gnutls"
+dnl Priority 5: Just try to compile/link and hope for the best
+if test "z$GNUTLS_FOUND" = "zno" ; then
+ AC_MSG_CHECKING(for gnutls library installation)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $GCRYPT_CFLAGS $GNUTLS_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $GNUTLS_LIBS $GCRYPT_LIBS $GNUTLS_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <gnutls/gnutls.h>
+ ]],[[
+ int main () { gnutls_global_init(); return(0); }
+ ]])
+ ],[
+ GNUTLS_FOUND=yes
+ GNUTLS_LIBS="$GNUTLS_LIBS $GNUTLS_LIBS_LIST"
+ AC_MSG_RESULT([yes])
+ ],[
+ GNUTLS_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
- dnl xmlsec-gnutls is using xmlsec-gcrypt
- if test "z$GCRYPT_FOUND" != "zyes" ; then
- AC_MSG_ERROR(xmlsec-gnutls library requires xmlsec-gcrypt library which is disabled or missing)
+dnl Set CFLAGS/LIBS flags
+if test "z$GNUTLS_FOUND" = "zyes" ; then
+ dnl Set flags if INCLUDE_PATH or LIB_PATH are set (do NOT overwrite CFLAGS/LIBS!)
+ if test "z$GNUTLS_INCLUDE_PATH" != "z" ; then
+ GNUTLS_CFLAGS="$GNUTLS_CFLAGS -I$GNUTLS_INCLUDE_PATH"
fi
+ if test "z$GNUTLS_LIB_PATH" != "z" ; then
+ if test "z$with_gnu_ld" = "zyes" ; then
+ GNUTLS_LIBS="$GNUTLS_LIBS -Wl,-rpath-link -Wl,$GNUTLS_LIB_PATH"
+ fi
+ GNUTLS_LIBS="$GNUTLS_LIBS -L$GNUTLS_LIB_PATH $GNUTLS_LIBS_LIST"
+ fi
+fi
+dnl Verify the version
+AC_MSG_CHECKING(for libgnutls library >= $GNUTLS_MIN_VERSION)
+if test "z$GNUTLS_FOUND" = "zyes" ; then
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
+ dnl gnutls uses hex digits for version number
+ minvers=`echo $GNUTLS_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 256 + $2) * 256 + $3;}'`
+ AC_EGREP_CPP(greater-than-minvers, [
+ #include <gnutls/gnutls.h>
+ #if GNUTLS_VERSION_NUMBER >= $minvers
+ greater-than-minvers
+ #endif
+ ],[
+ GNUTLS_FOUND=yes
+ ],[
+ GNUTLS_FOUND=no
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+fi
+AC_MSG_RESULT([$GNUTLS_FOUND])
+
+dnl Check that we have found gcrypt
+if test "z$GNUTLS_FOUND" = "zyes" -a "z$GCRYPT_FOUND" != "zyes" ; then
+ GNUTLS_FOUND="no"
+ AC_MSG_RESULT([xmlsec-gnutls library requires xmlsec-gcrypt library which is disabled or missing, ignoring libgnutls library we have found])
+fi
+
+dnl Finally set all the flags
+if test "z$GNUTLS_FOUND" = "zyes" ; then
+ XMLSEC_NO_GNUTLS="0"
+ GNUTLS_CFLAGS="$GNUTLS_CFLAGS -DXMLSEC_CRYPTO_GNUTLS=1"
+ XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST gnutls"
else
XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST gnutls"
fi
@@ -990,47 +1525,75 @@ AC_SUBST(GNUTLS_MIN_VERSION)
dnl ==========================================================================
dnl See if we can find MSCrypto
dnl ==========================================================================
-XMLSEC_NO_MSCRYPTO="1"
-MSCRYPTO_CFLAGS=""
-MSCRYPTO_LIBS=""
MSCRYPTO_CRYPTO_LIB="$XMLSEC_PACKAGE-mscrypto"
-MSCRYPTO_ENABLE='none'
-AC_ARG_ENABLE(mscrypto,
- [ --enable-mscrypto enable mscrypto (no)],
- [MSCRYPTO_ENABLE=$enableval])
-if test "z$MSCRYPTO_ENABLE" != "zyes" ; then
- AC_MSG_CHECKING(for mscrypto libraries)
- AC_MSG_RESULT([$MSCRYPTO_ENABLE])
-else
-dnl cannot detect __stdcall functions
-dnl AC_CHECK_LIB(crypt32, CertOpenStore, ....
- LIBS_SAVE="$LIBS"
- LIBS="$LIBS -lcrypt32"
- AC_MSG_CHECKING(for mscrypto libraries)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([
- #include <windows.h>
- #include <wincrypt.h>],[
- int main () { CertOpenStore(0,0,0,0,0);; return(0); }
- ])],
- [],
- [MSCRYPTO_ENABLE="no"])
- AC_MSG_RESULT([$MSCRYPTO_ENABLE])
- LIBS="$LIBS_SAVE"
-fi
-
-if test "z$MSCRYPTO_ENABLE" = "zyes" ; then
- XMLSEC_NO_MSCRYPTO="0"
+case $host in
+*-w64-mingw*)
+ MSCRYPTO_XMLSEC_DEFINES=
+ MSCRYPTO_LIBS_LIST="-lcrypt32"
+ ;;
+*-*-mingw*)
+ dnl use own def-file and header as mingw.org crypt32
+ dnl is limited (library and header)
+ MSCRYPTO_XMLSEC_DEFINES="-DXMLSEC_CUSTOM_CRYPT32=1"
+ MSCRYPTO_LIBS_LIST="-Wl,$(srcdir)/mingw-crypt32.def"
+ ;;
+*)
+ MSCRYPTO_XMLSEC_DEFINES=
+ MSCRYPTO_LIBS_LIST="-lcrypt32"
+ ;;
+esac
- MSCRYPTO_CFLAGS="$MSCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MSCRYPTO=1"
- case $host in
- *-*-mingw*)
- dnl since mingw crypt32 library is limited
- dnl we use own def-file
- MSCRYPTO_LIBS='-Wl,$(srcdir)/mingw-crypt32.def';;
- *)
- MSCRYPTO_LIBS="-lcrypt32";;
- esac
+XMLSEC_NO_MSCRYPTO="1"
+MSCRYPTO_FOUND="no"
+AC_ARG_ENABLE([mscrypto], [AC_HELP_STRING([--enable-mscrypto], [enable mscrypto (no)])])
+
+dnl Priority 0: Check if library is not needed
+if test "z$enable_mscrypto" = "zno" ; then
+ MSCRYPTO_FOUND="disabled"
+fi
+
+dnl Priority 1: User sets both CFLAGS and LIBS flags
+if test "z$MSCRYPTO_FOUND" = "zno" -a "z$MSCRYPTO_CFLAGS" != "z" -a "z$MSCRYPTO_LIBS" != "z" ; then
+ MSCRYPTO_FOUND=yes
+fi
+dnl Priority 2: Just try to compile/link and hope for the best
+if test "z$MSCRYPTO_FOUND" = "zno" ; then
+ AC_MSG_CHECKING(for mscrypto)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $MSCRYPTO_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $MSCRYPTO_LIBS $MSCRYPTO_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <windows.h>
+ #include <wincrypt.h>
+ ]],[[
+ int main () { CertOpenStore(0,0,0,0,0);; return(0); }
+ ]])
+ ],[
+ MSCRYPTO_FOUND=yes
+ AC_MSG_RESULT([yes])
+ ],[
+ MSCRYPTO_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
+
+dnl Set CFLAGS/LIBS flags, do not change CFLAGS/LIBS if both are set
+if test "z$MSCRYPTO_FOUND" = "zyes" ; then
+ if test "z$MSCRYPTO_CFLAGS" = "z" -o "z$MSCRYPTO_LIBS" = "z" ; then
+ XMLSEC_DEFINES="$XMLSEC_DEFINES $MSCRYPTO_XMLSEC_DEFINES"
+ MSCRYPTO_LIBS="$MSCRYPTO_LIBS $MSCRYPTO_LIBS_LIST"
+ fi
+fi
+
+dnl Finally set all the flags
+if test "z$MSCRYPTO_FOUND" = "zyes" ; then
+ XMLSEC_NO_MSCRYPTO="0"
+ MSCRYPTO_CFLAGS="$MSCRYPTO_CFLAGS -DXMLSEC_CRYPTO_MSCRYPTO=1"
XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST mscrypto"
else
XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mscrypto"
@@ -1044,6 +1607,81 @@ AC_SUBST(MSCRYPTO_CRYPTO_LIB)
dnl ==========================================================================
+dnl See if we can find MSCng
+dnl ==========================================================================
+MSCNG_CRYPTO_LIB="$XMLSEC_PACKAGE-mscng"
+dnl This is tested on w64-mingw only so far.
+MSCNG_XMLSEC_DEFINES=
+MSCNG_LIBS_LIST="-lcrypt32 -lbcrypt -lncrypt"
+
+XMLSEC_NO_MSCNG="1"
+MSCNG_FOUND="no"
+AC_ARG_ENABLE([mscng], [AC_HELP_STRING([--enable-mscng], [enable mscng (no)])])
+
+dnl Priority 0: Check if library is not needed
+if test "z$enable_mscng" = "zno" ; then
+ MSCNG_FOUND="disabled"
+fi
+
+dnl Priority 1: User sets both CFLAGS and LIBS flags
+if test "z$MSCNG_FOUND" = "zno" -a "z$MSCNG_CFLAGS" != "z" -a "z$MSCNG_LIBS" != "z" ; then
+ MSCNG_FOUND=yes
+fi
+
+dnl Priority 2: Just try to compile/link and hope for the best
+if test "z$MSCNG_FOUND" = "zno" ; then
+ AC_MSG_CHECKING(for mscng)
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $MSCNG_CFLAGS"
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $MSCNG_LIBS $MSCNG_LIBS_LIST"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include <windows.h>
+ #include <wincrypt.h>
+ ]],[[
+ int main () {
+ BCRYPT_ALG_HANDLE hAlg;
+ BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_SHA256_ALGORITHM, NULL, 0);
+ return(0);
+ }
+ ]])
+ ],[
+ MSCNG_FOUND=yes
+ AC_MSG_RESULT([yes])
+ ],[
+ MSCNG_FOUND=no
+ AC_MSG_RESULT([not found])
+ ])
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
+fi
+
+dnl Set CFLAGS/LIBS flags, do not change CFLAGS/LIBS if both are set
+if test "z$MSCNG_FOUND" = "zyes" ; then
+ if test "z$MSCNG_CFLAGS" = "z" -o "z$MSCNG_LIBS" = "z" ; then
+ XMLSEC_DEFINES="$XMLSEC_DEFINES $MSCNG_XMLSEC_DEFINES"
+ MSCNG_LIBS="$MSCNG_LIBS $MSCNG_LIBS_LIST"
+ fi
+fi
+
+dnl Finally set all the flags
+if test "z$MSCNG_FOUND" = "zyes" ; then
+ XMLSEC_NO_MSCNG="0"
+ MSCNG_CFLAGS="$MSCNG_CFLAGS -DXMLSEC_CRYPTO_MSCNG=1"
+ XMLSEC_CRYPTO_LIST="$XMLSEC_CRYPTO_LIST mscng"
+else
+ XMLSEC_CRYPTO_DISABLED_LIST="$XMLSEC_CRYPTO_DISABLED_LIST mscng"
+fi
+
+AM_CONDITIONAL(XMLSEC_NO_MSCNG, [test "z$XMLSEC_NO_MSCNG" = "z1"])
+AC_SUBST(XMLSEC_NO_MSCNG)
+AC_SUBST(MSCNG_CFLAGS)
+AC_SUBST(MSCNG_LIBS)
+AC_SUBST(MSCNG_CRYPTO_LIB)
+
+
+dnl ==========================================================================
dnl Figure out the default crypt - the first crypto library wins
dnl ==========================================================================
XMLSEC_DEFAULT_CRYPTO=""
@@ -1051,7 +1689,7 @@ XMLSEC_CRYPTO_LIB=""
XMLSEC_CRYPTO_CFLAGS=""
XMLSEC_CRYPTO_LIBS=""
AC_MSG_CHECKING(for default crypto library)
-AC_ARG_WITH(default_crypto, [ --with-default-crypto=name default crypto name])
+AC_ARG_WITH([default_crypto], [AC_HELP_STRING([--with-default-crypto=name], [default crypto name])])
# check the argument
case "z$with_default_crypto" in
@@ -1062,6 +1700,13 @@ case "z$with_default_crypto" in
AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
fi
;;
+ 'zmscng')
+ if test "z$XMLSEC_NO_MSCNG" != "z1" ; then
+ XMLSEC_DEFAULT_CRYPTO="mscng"
+ else
+ AC_MSG_ERROR('$with_default_crypto' is specified as default crypto library but it is not configured or found)
+ fi
+ ;;
'zopenssl')
if test "z$XMLSEC_NO_OPENSSL" != "z1" ; then
XMLSEC_DEFAULT_CRYPTO="openssl"
@@ -1094,6 +1739,8 @@ case "z$with_default_crypto" in
dnl The first crypto library wins
if test "z$XMLSEC_NO_MSCRYPTO" != "z1" ; then
XMLSEC_DEFAULT_CRYPTO="mscrypto"
+ elif test "z$XMLSEC_NO_MSCNG" != "z1" ; then
+ XMLSEC_DEFAULT_CRYPTO="mscng"
elif test "z$XMLSEC_NO_OPENSSL" != "z1" ; then
XMLSEC_DEFAULT_CRYPTO="openssl"
elif test "z$XMLSEC_NO_NSS" != "z1" ; then
@@ -1118,6 +1765,11 @@ case "$XMLSEC_DEFAULT_CRYPTO" in
XMLSEC_CRYPTO_CFLAGS="$MSCRYPTO_CFLAGS"
XMLSEC_CRYPTO_LIBS="$MSCRYPTO_LIBS"
;;
+ 'mscng')
+ XMLSEC_CRYPTO_LIB="$MSCNG_CRYPTO_LIB"
+ XMLSEC_CRYPTO_CFLAGS="$MSCNG_CFLAGS"
+ XMLSEC_CRYPTO_LIBS="$MSCNG_LIBS"
+ ;;
'openssl')
XMLSEC_CRYPTO_LIB="$OPENSSL_CRYPTO_LIB"
XMLSEC_CRYPTO_CFLAGS="$OPENSSL_CFLAGS"
@@ -1142,117 +1794,131 @@ case "$XMLSEC_DEFAULT_CRYPTO" in
AC_MSG_ERROR(The value \"$XMLSEC_DEFAULT_CRYPTO\" is not a recongnized crypto library name)
;;
esac
-AC_MSG_RESULT(yes ('$XMLSEC_DEFAULT_CRYPTO'))
+AC_MSG_RESULT([yes ("$XMLSEC_DEFAULT_CRYPTO")])
+
+dnl ==========================================================================
+dnl Do we need to use Unicode (Windows build only)
+dnl ==========================================================================
+if test "z$build_windows" = "zyes" ; then
+ AC_MSG_CHECKING(for Unicode support)
+ AC_ARG_ENABLE([unicode], [AC_HELP_STRING([--enable-unicode], [enable Unicode support on Windows (yes)])])
+ if test "z$enable_unicode" = "zyes" ; then
+ XMLSEC_DEFINES="$XMLSEC_DEFINES -DUNICODE=1"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+fi
dnl ==========================================================================
dnl See do we need MD5 support
dnl ==========================================================================
-AC_MSG_CHECKING(for MD5 support)
-AC_ARG_ENABLE(md5, [ --enable-md5 enable MD5 support (yes)])
+AC_MSG_CHECKING(for MD5 support)
+AC_ARG_ENABLE([md5], [AC_HELP_STRING([--enable-md5], [enable MD5 support (yes)])])
if test "z$enable_md5" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_MD5=1"
XMLSEC_NO_MD5="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_MD5="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_MD5, test "z$XMLSEC_NO_MD5" = "z1")
AC_SUBST(XMLSEC_NO_MD5)
dnl ==========================================================================
dnl See do we need RIPEMD-160 support
dnl ==========================================================================
-AC_MSG_CHECKING(for RIPEMD-160 support)
-AC_ARG_ENABLE(ripemd160, [ --enable-ripemd160 enable RIPEMD-160 support (yes)])
+AC_MSG_CHECKING(for RIPEMD-160 support)
+AC_ARG_ENABLE([ripemd160], [AC_HELP_STRING([--enable-ripemd160], [enable RIPEMD-160 support (yes)])])
if test "z$enable_ripemd160" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RIPEMD160=1"
XMLSEC_NO_RIPEMD160="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_RIPEMD160="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_RIPEMD160, test "z$XMLSEC_NO_RIPEMD160" = "z1")
AC_SUBST(XMLSEC_NO_RIPEMD160)
dnl ==========================================================================
dnl See do we need SHA1 support
dnl ==========================================================================
-AC_MSG_CHECKING(for SHA1 support)
-AC_ARG_ENABLE(sha1, [ --enable-sha1 enable SHA1 support (yes)])
+AC_MSG_CHECKING(for SHA1 support)
+AC_ARG_ENABLE([sha1], [AC_HELP_STRING([--enable-sha1], [enable SHA1 support (yes)])])
if test "z$enable_sha1" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA1=1"
XMLSEC_NO_SHA1="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_SHA1="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_SHA1, test "z$XMLSEC_NO_SHA1" = "z1")
AC_SUBST(XMLSEC_NO_SHA1)
dnl ==========================================================================
dnl See do we need SHA224 support
dnl ==========================================================================
-AC_MSG_CHECKING(for SHA224 support)
-AC_ARG_ENABLE(sha224, [ --enable-sha224 enable SHA224 support (yes)])
+AC_MSG_CHECKING(for SHA224 support)
+AC_ARG_ENABLE([sha224], [AC_HELP_STRING([--enable-sha224], [enable SHA224 support (yes)])])
if test "z$enable_sha224" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA224=1"
XMLSEC_NO_SHA224="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_SHA224="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_SHA224, test "z$XMLSEC_NO_SHA224" = "z1")
AC_SUBST(XMLSEC_NO_SHA224)
dnl ==========================================================================
dnl See do we need SHA256 support
dnl ==========================================================================
-AC_MSG_CHECKING(for SHA256 support)
-AC_ARG_ENABLE(sha256, [ --enable-sha256 enable SHA256 support (yes)])
+AC_MSG_CHECKING(for SHA256 support)
+AC_ARG_ENABLE([sha256], [AC_HELP_STRING([--enable-sha256], [enable SHA256 support (yes)])])
if test "z$enable_sha256" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA256=1"
XMLSEC_NO_SHA256="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_SHA256="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_SHA256, test "z$XMLSEC_NO_SHA256" = "z1")
AC_SUBST(XMLSEC_NO_SHA256)
dnl ==========================================================================
dnl See do we need SHA384 support
dnl ==========================================================================
-AC_MSG_CHECKING(for SHA384 support)
-AC_ARG_ENABLE(sha384, [ --enable-sha384 enable SHA384 support (yes)])
+AC_MSG_CHECKING(for SHA384 support)
+AC_ARG_ENABLE([sha384], [AC_HELP_STRING([--enable-sha384], [enable SHA384 support (yes)])])
if test "z$enable_sha384" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA384=1"
XMLSEC_NO_SHA384="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_SHA384="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_SHA384, test "z$XMLSEC_NO_SHA384" = "z1")
AC_SUBST(XMLSEC_NO_SHA384)
dnl ==========================================================================
dnl See do we need SHA512 support
dnl ==========================================================================
-AC_MSG_CHECKING(for SHA512 support)
-AC_ARG_ENABLE(sha512, [ --enable-sha512 enable SHA512 support (yes)])
+AC_MSG_CHECKING(for SHA512 support)
+AC_ARG_ENABLE([sha512], [AC_HELP_STRING([--enable-sha512], [enable SHA512 support (yes)])])
if test "z$enable_sha512" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA512=1"
XMLSEC_NO_SHA512="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_SHA512="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_SHA512, test "z$XMLSEC_NO_SHA512" = "z1")
AC_SUBST(XMLSEC_NO_SHA512)
@@ -1260,96 +1926,96 @@ AC_SUBST(XMLSEC_NO_SHA512)
dnl ==========================================================================
dnl See do we need HMAC support
dnl ==========================================================================
-AC_MSG_CHECKING(for HMAC support)
-AC_ARG_ENABLE(hmac, [ --enable-hmac enable HMAC support (yes)])
+AC_MSG_CHECKING(for HMAC support)
+AC_ARG_ENABLE([hmac], [AC_HELP_STRING([--enable-hmac], [enable HMAC support (yes)])])
if test "z$enable_hmac" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_HMAC=1"
XMLSEC_NO_HMAC="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_HMAC="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_HMAC, test "z$XMLSEC_NO_HMAC" = "z1")
AC_SUBST(XMLSEC_NO_HMAC)
dnl ==========================================================================
dnl See do we need DSA support
dnl ==========================================================================
-AC_MSG_CHECKING(for DSA support)
-AC_ARG_ENABLE(dsa, [ --enable-dsa enable DSA support (yes)])
+AC_MSG_CHECKING(for DSA support)
+AC_ARG_ENABLE([dsa], [AC_HELP_STRING([--enable-dsa], [enable DSA support (yes)])])
if test "z$enable_dsa" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_DSA=1"
XMLSEC_NO_DSA="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_DSA="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_DSA, test "z$XMLSEC_NO_DSA" = "z1")
AC_SUBST(XMLSEC_NO_DSA)
dnl ==========================================================================
dnl See do we need RSA support
dnl ==========================================================================
-AC_MSG_CHECKING(for RSA support)
-AC_ARG_ENABLE(rsa, [ --enable-rsa enable RSA support (yes)])
+AC_MSG_CHECKING(for RSA support)
+AC_ARG_ENABLE([rsa], [AC_HELP_STRING([--enable-rsa], [enable RSA support (yes)])])
if test "z$enable_rsa" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RSA=1"
XMLSEC_NO_RSA="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_RSA="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_RSA, test "z$XMLSEC_NO_RSA" = "z1")
AC_SUBST(XMLSEC_NO_RSA)
dnl ==========================================================================
dnl See do we need x509 support
dnl ==========================================================================
-AC_MSG_CHECKING(for x509 support)
-AC_ARG_ENABLE(x509, [ --enable-x509 enable x509 support (yes)])
+AC_MSG_CHECKING(for x509 support)
+AC_ARG_ENABLE([x509], [AC_HELP_STRING([--enable-x509], [enable x509 support (yes)])])
if test "z$enable_x509" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_X509=1"
XMLSEC_NO_X509="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_X509="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_X509, test "z$XMLSEC_NO_X509" = "z1")
AC_SUBST(XMLSEC_NO_X509)
dnl ==========================================================================
dnl See do we need DES support
dnl ==========================================================================
-AC_MSG_CHECKING(for DES support)
-AC_ARG_ENABLE(des, [ --enable-des enable DES support (yes)])
+AC_MSG_CHECKING(for DES support)
+AC_ARG_ENABLE([des], [AC_HELP_STRING([--enable-des], [enable DES support (yes)])])
if test "z$enable_des" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_DES=1"
XMLSEC_NO_DES="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_DES="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_DES, test "z$XMLSEC_NO_DES" = "z1")
AC_SUBST(XMLSEC_NO_DES)
dnl ==========================================================================
dnl See do we need AES support
dnl ==========================================================================
-AC_MSG_CHECKING(for AES support)
-AC_ARG_ENABLE(aes, [ --enable-aes enable AES support])
+AC_MSG_CHECKING(for AES support)
+AC_ARG_ENABLE([aes], [AC_HELP_STRING([--enable-aes], [enable AES support])])
if test "z$enable_aes" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_AES=1"
XMLSEC_NO_AES="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_AES="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_AES, test "z$XMLSEC_NO_AES" = "z1")
AC_SUBST(XMLSEC_NO_AES)
@@ -1357,14 +2023,14 @@ dnl ==========================================================================
dnl See do we need GOST support
dnl ==========================================================================
AC_MSG_CHECKING(for GOST support)
-AC_ARG_ENABLE(gost, [ --enable-gost enable GOST support (no)])
+AC_ARG_ENABLE([gost], [AC_HELP_STRING([--enable-gost], [enable GOST support (no)])])
if test "z$enable_gost" != "zyes" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST=1"
XMLSEC_NO_GOST="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_GOST="0"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
fi
AM_CONDITIONAL(XMLSEC_NO_GOST, test "z$XMLSEC_NO_GOST" = "z1")
AC_SUBST(XMLSEC_NO_GOST)
@@ -1374,14 +2040,14 @@ dnl ==========================================================================
dnl See do we need GOST2012 support
dnl ==========================================================================
AC_MSG_CHECKING(for EXPERMIENTAL GOST2012 support)
-AC_ARG_ENABLE(gost, [ --enable-gost2012 enable EXPERMIENTAL GOST2012 support (no)])
+AC_ARG_ENABLE([gost2012], [AC_HELP_STRING([--enable-gost2012], [enable EXPERMIENTAL GOST2012 support (no)])])
if test "z$enable_gost2012" != "zyes" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_GOST2012=1"
XMLSEC_NO_GOST2012="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_GOST2012="0"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
fi
AM_CONDITIONAL(XMLSEC_NO_GOST2012, test "z$XMLSEC_NO_GOST2012" = "z1")
AC_SUBST(XMLSEC_NO_GOST2012)
@@ -1390,66 +2056,142 @@ AC_SUBST(XMLSEC_NO_GOST2012)
dnl ==========================================================================
dnl See do we need XMLDSig support
dnl ==========================================================================
-AC_MSG_CHECKING(for XMLDSig support)
-AC_ARG_ENABLE(xmldsig, [ --enable-xmldsig enable XMLDSig support (yes)])
+AC_MSG_CHECKING(for XMLDSig support)
+AC_ARG_ENABLE([xmldsig], [AC_HELP_STRING([--enable-xmldsig], [enable XMLDSig support (yes)])])
if test "z$enable_xmldsig" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XMLDSIG=1"
XMLSEC_NO_XMLDSIG="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_XMLDSIG="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_XMLDSIG, test "z$XMLSEC_NO_XMLDSIG" = "z1")
AC_SUBST(XMLSEC_NO_XMLDSIG)
dnl ==========================================================================
dnl See do we need XMLEnc support
dnl ==========================================================================
-AC_MSG_CHECKING(for XMLEnc support)
-AC_ARG_ENABLE(xmlenc, [ --enable-xmlenc enable XMLEnc support (yes)])
+AC_MSG_CHECKING(for XMLEnc support)
+AC_ARG_ENABLE([xmlenc], [AC_HELP_STRING([--enable-xmlenc], [enable XMLEnc support (yes)])])
if test "z$enable_xmlenc" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_XMLENC=1"
XMLSEC_NO_XMLENC="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
XMLSEC_NO_XMLENC="0"
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
AM_CONDITIONAL(XMLSEC_NO_XMLENC, test "z$XMLSEC_NO_XMLENC" = "z1")
AC_SUBST(XMLSEC_NO_XMLENC)
dnl ==========================================================================
+dnl See do we need soap support (deprecated)
+dnl ==========================================================================
+AC_MSG_CHECKING(for soap support)
+AC_ARG_ENABLE([soap], [AC_HELP_STRING([--enable-soap], [enable soap support (no)])])
+if test "z$enable_soap" = "zyes" ; then
+ XMLSEC_ENABLE_SOAP="1"
+ AC_MSG_RESULT([yes])
+else
+ XMLSEC_ENABLE_SOAP="0"
+ AC_MSG_RESULT([disabled])
+fi
+AM_CONDITIONAL(XMLSEC_ENABLE_SOAP, test "z$XMLSEC_ENABLE_SOAP" = "z1")
+
+dnl ==========================================================================
+dnl See do we need mans
+dnl ==========================================================================
+AC_MSG_CHECKING(for mans)
+AC_ARG_ENABLE([mans], [AC_HELP_STRING([--enable-mans], [enable manual pages (yes)])])
+if test "z$enable_mans" = "zno" ; then
+ XMLSEC_MANS="0"
+ AC_MSG_RESULT([disabled])
+else
+ XMLSEC_MANS="1"
+ AC_MSG_RESULT([yes])
+fi
+AM_CONDITIONAL(XMLSEC_MANS, test "z$XMLSEC_MANS" = "z1")
+AC_SUBST(XMLSEC_MANS)
+
+dnl ==========================================================================
+dnl See do we need docs
+dnl ==========================================================================
+AC_MSG_CHECKING(for docs)
+AC_ARG_ENABLE([docs], [AC_HELP_STRING([--enable-docs], [enable documentation (yes)])])
+if test "z$enable_docs" = "zno" ; then
+ XMLSEC_DOCS="0"
+ AC_MSG_RESULT([disabled])
+else
+ XMLSEC_DOCS="1"
+ AC_MSG_RESULT([yes])
+fi
+AM_CONDITIONAL(XMLSEC_DOCS, test "z$XMLSEC_DOCS" = "z1")
+AC_SUBST(XMLSEC_DOCS)
+
+dnl ==========================================================================
+dnl See if we need apps
+dnl ==========================================================================
+AC_MSG_CHECKING(for apps)
+AC_ARG_ENABLE([apps], [AC_HELP_STRING([--enable-apps], [enable applications (yes)])])
+if test "z$enable_apps" = "zno" ; then
+ XMLSEC_APPS="0"
+ AC_MSG_RESULT([disabled])
+else
+ XMLSEC_APPS="1"
+ AC_MSG_RESULT([yes])
+fi
+AM_CONDITIONAL(XMLSEC_APPS, test "z$XMLSEC_APPS" = "z1")
+AC_SUBST(XMLSEC_APPS)
+
+dnl ==========================================================================
+dnl Static linking (implies enable_crypto_dl="no")
+dnl ==========================================================================
+XMLSEC_STATIC_BINARIES=""
+AC_MSG_CHECKING(for static linking)
+AC_ARG_ENABLE([static_linking], [AC_HELP_STRING([--enable-static-linking], [enable static linking (no)])])
+if test "z$enable_static_linking" = "zyes" ; then
+ XMLSEC_STATIC_BINARIES="-static"
+ XMLSEC_APP_DEFINES="$XMLSEC_APP_DEFINES -DXMLSEC_STATIC=1"
+ enable_crypto_dl="no"
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([disabled])
+fi
+AC_SUBST(XMLSEC_STATIC_BINARIES)
+
+dnl ==========================================================================
dnl check if we need dynamic loading support
dnl ==========================================================================
XMLSEC_DL_INCLUDES=""
XMLSEC_DL_LIBS=""
-AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support)
-AC_ARG_ENABLE(crypto_dl, [ --enable-crypto-dl enable dynamic loading support for xmlsec-crypto libraries (yes)])
+AC_ARG_ENABLE([crypto_dl], [AC_HELP_STRING([--enable-crypto-dl], [enable dynamic loading support for xmlsec-crypto libraries (yes)])])
if test "z$enable_crypto_dl" = "zno" ; then
+ AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support)
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1"
XMLSEC_NO_CRYPTO_DYNAMIC_LOADING="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
- AC_CHECK_HEADER([ltdl.h],
- [
- XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_DL_LIBLTDL=1"
- AC_CHECK_LIB(
- [ltdl],
- [lt_dlopenext],
- [LIBLTDL=-lltdl],
- [LIBLTDL=]
- )],
- [LIBLTDL=]
- )
+ AC_CHECK_HEADER([ltdl.h], [
+ XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_DL_LIBLTDL=1"
+ AC_CHECK_LIB(
+ [ltdl],
+ [lt_dlopenext],
+ [LIBLTDL=-lltdl],
+ [LIBLTDL=]
+ )
+ ], [
+ LIBLTDL=
+ ])
+ AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support)
if test "z$LIBLTDL" != "z" ; then
- XMLSEC_DL_INCLUDES="$INCLTDL"
- XMLSEC_DL_LIBS="$LIBLTDL"
- XMLSEC_NO_CRYPTO_DYNAMIC_LOADING="0"
- AC_MSG_RESULT(yes)
+ XMLSEC_DL_INCLUDES="$INCLTDL"
+ XMLSEC_DL_LIBS="$LIBLTDL"
+ XMLSEC_NO_CRYPTO_DYNAMIC_LOADING="0"
+ AC_MSG_RESULT([yes])
else
- AC_MSG_ERROR([libltdl is required for xmlsec-crypto dynamic loading])
+ AC_MSG_ERROR([libltdl is required for xmlsec-crypto dynamic loading])
fi
fi
AM_CONDITIONAL(XMLSEC_NO_CRYPTO_DYNAMIC_LOADING, test "z$XMLSEC_NO_CRYPTO_DYNAMIC_LOADING" = "z1")
@@ -1460,114 +2202,114 @@ AC_SUBST(XMLSEC_DL_LIBS)
dnl ==========================================================================
dnl check if we need dynamic loading in the xmlsec apps
dnl ==========================================================================
-AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support in command line tool)
-AC_ARG_ENABLE(apps_crypto_dl, [ --enable-apps-crypto-dl enable dynamic loading support for xmlsec-crypto libraries in xmlsec command line tool (yes)])
+AC_MSG_CHECKING(for xmlsec-crypto dynamic loading support in command line tool)
+AC_ARG_ENABLE([apps_crypto_dl], [AC_HELP_STRING([--enable-apps-crypto-dl], [ enable dynamic loading support for xmlsec-crypto libraries in xmlsec command line tool (yes)])])
if test "z$enable_apps_crypto_dl" = "z" ; then
enable_apps_crypto_dl="$enable_crypto_dl"
fi
if test "z$enable_apps_crypto_dl" = "zno" ; then
XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING="1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
elif test "z$enable_crypto_dl" = "zno" ; then
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
AC_MSG_ERROR(xmlsec-crypto libraries dynamic loading support in xmlsec command line tool is requested but no dynamic loading in xmlsec itself is disabled)
else
XMLSEC_APP_DEFINES="$XMLSEC_APP_DEFINES -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1"
XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING="0"
- AC_MSG_RESULT(yes)
-fi
-AM_CONDITIONAL(XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING,
+ AC_MSG_RESULT([yes])
+fi
+AM_CONDITIONAL(XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING,
test "z$XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING" = "z1")
AC_SUBST(XMLSEC_NO_APPS_CRYPTO_DYNAMIC_LOADING)
dnl ==========================================================================
dnl Where do we want to install docs
dnl ==========================================================================
-AC_MSG_CHECKING(for docs folder)
-AC_ARG_WITH(html-dir, [ --with-html-dir=PATH path to installed docs ])
+AC_MSG_CHECKING(for docs folder)
+AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs])])
if test "z$with_html_dir" != "z" ; then
- XMLSEC_DOCDIR=$with_html_dir
+ XMLSEC_DOCDIR="$with_html_dir"
+elif test "z$htmldir" != "z" ; then
+ XMLSEC_DOCDIR='$(htmldir)'
else
XMLSEC_DOCDIR='$(datadir)/doc/xmlsec1'
fi
-AC_MSG_RESULT($XMLSEC_DOCDIR)
+AC_MSG_RESULT([$XMLSEC_DOCDIR])
AC_SUBST(XMLSEC_DOCDIR)
dnl ==========================================================================
-dnl See do we need Simple Keys Manager
+dnl See do we need Simple Keys Manager
dnl ==========================================================================
-AC_MSG_CHECKING(for Simple Keys Manager testing)
-AC_ARG_ENABLE(skm, [ --enable-skm enable Simple Keys Manager testing (yes)])
+AC_MSG_CHECKING(for Simple Keys Manager testing)
+AC_ARG_ENABLE([skm], [AC_HELP_STRING([--enable-skm], [enable Simple Keys Manager testing (yes)])])
if test "z$enable_skm" = "zno" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SKM_TEST=1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
fi
dnl ==========================================================================
dnl See do we need templates tests
dnl ==========================================================================
-AC_MSG_CHECKING(for templates testing)
-AC_ARG_ENABLE(tmpl_tests, [ --enable-tmpl-tests enable templates testing in xmlsec utility (yes)])
+AC_MSG_CHECKING(for templates testing)
+AC_ARG_ENABLE([tmpl_tests], [AC_HELP_STRING([--enable-tmpl-tests], [enable templates testing in xmlsec utility (yes)])])
if test "z$enable_tmpl_tests" = "zyes" ; then
XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_TMPL_TEST=1"
- AC_MSG_RESULT(no)
+ AC_MSG_RESULT([disabled])
else
- AC_MSG_RESULT(yes)
-fi
+ AC_MSG_RESULT([yes])
+fi
dnl ==========================================================================
-dnl Debug
+dnl Debug
dnl ==========================================================================
AC_MSG_CHECKING(for debugging)
-AC_ARG_ENABLE(debugging, [ --enable-debugging enable debugging compilation flags (no)])
+AC_ARG_ENABLE([debugging], [AC_HELP_STRING([--enable-debugging], [enable debugging compilation flags (no)])])
if test "z$enable_debugging" = "zyes" ; then
CFLAGS="$CFLAGS -g"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([disabled])
+fi
+
+dnl ==========================================================================
+dnl Warnings as errors
+dnl ==========================================================================
+AC_MSG_CHECKING(for warnings as errors)
+AC_ARG_ENABLE([werror], [AC_HELP_STRING([--enable-werror], [handle warnings as errors (no)])])
+if test "z$enable_werror" = "zyes" ; then
+ CFLAGS="$CFLAGS -Werror"
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
-fi
+ AC_MSG_RESULT([disabled])
+fi
dnl ==========================================================================
-dnl Profiling
+dnl Profiling
dnl ==========================================================================
-AC_MSG_CHECKING(for profiling)
-AC_ARG_ENABLE(profiling, [ --enable-profiling enable profiling compilation flags (no)])
+AC_MSG_CHECKING(for profiling)
+AC_ARG_ENABLE([profiling], [AC_HELP_STRING([--enable-profiling], [enable profiling compilation flags (no)])])
if test "z$enable_profiling" = "zyes" ; then
CFLAGS="$CFLAGS -pg"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
-fi
+ AC_MSG_RESULT([disabled])
+fi
dnl ==========================================================================
dnl Pedantic compilation
dnl ==========================================================================
-AC_MSG_CHECKING(for pedantic)
-AC_ARG_ENABLE(pedantic, [ --enable-pedantic enable pedantic compilation flags (no)])
+AC_MSG_CHECKING(for pedantic)
+AC_ARG_ENABLE([pedantic], [AC_HELP_STRING([--enable-pedantic], [enable pedantic compilation flags (no)])])
if test "z$enable_pedantic" = "zyes" ; then
dnl CFLAGS="$CFLAGS -pedantic -Wall -std=c99 -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wredundant-decls"
CFLAGS="$CFLAGS -O -pedantic -Wall -std=c99 -fno-inline -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wredundant-decls"
- AC_MSG_RESULT(yes)
+ AC_MSG_RESULT([yes])
else
- AC_MSG_RESULT(no)
-fi
-
-dnl ==========================================================================
-dnl Static linking
-dnl ==========================================================================
-XMLSEC_STATIC_BINARIES=""
-AC_MSG_CHECKING(for static linking)
-AC_ARG_ENABLE(static_linking, [ --enable-static-linking enable static linking (no)])
-if test "z$enable_static_linking" = "zyes" ; then
- XMLSEC_STATIC_BINARIES="-static"
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST(XMLSEC_STATIC_BINARIES)
+ AC_MSG_RESULT([disabled])
+fi
dnl ==========================================================================
dnl Final steps: xmlsec config
@@ -1608,6 +2350,12 @@ dnl XMLSEC_MSCRYPTO_LIBS="-L${libdir} -l$MSCRYPTO_CRYPTO_LIB $XMLSEC_CORE_LIBS $
dnl AC_SUBST(XMLSEC_MSCRYPTO_CFLAGS)
dnl AC_SUBST(XMLSEC_MSCRYPTO_LIBS)
+dnl No we will not generate pkg-config file for mscng.
+dnl XMLSEC_MSCNG_CFLAGS="$XMLSEC_CORE_CFLAGS $MSCNG_CFLAGS"
+dnl XMLSEC_MSCNG_LIBS="-L${libdir} -l$MSCNG_CRYPTO_LIB $XMLSEC_CORE_LIBS $MSCNG_LIBS";;
+dnl AC_SUBST(XMLSEC_MSCNG_CFLAGS)
+dnl AC_SUBST(XMLSEC_MSCNG_LIBS)
+
XMLSEC_CFLAGS="$XMLSEC_CORE_CFLAGS $LIBXML_CFLAGS $LIBXSLT_CFLAGS $XMLSEC_CRYPTO_CFLAGS"
XMLSEC_LIBS="-L${libdir} -l$XMLSEC_CRYPTO_LIB $XMLSEC_CORE_LIBS $LIBXML_LIBS $LIBXSLT_LIBS $XMLSEC_CRYPTO_LIBS"
AC_SUBST(XMLSEC_CFLAGS)
@@ -1630,8 +2378,9 @@ AC_SUBST(XMLSEC_CRYPTO_LIBS)
XMLSEC_CRYPTO_PC_FILES_LIST=""
for i in $XMLSEC_CRYPTO_LIST ; do
- dnl skip pkg-config file for mscrypto
+ dnl skip pkg-config file for mscrypto/mscng
test x$i = xmscrypto && continue
+ test x$i = xmscng && continue
XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $XMLSEC_PACKAGE-$i.pc"
done
AC_SUBST(XMLSEC_CRYPTO_PC_FILES_LIST)
@@ -1659,6 +2408,10 @@ if test "z$XMLSEC_NO_MSCRYPTO" != "z1" ; then
AC_CONFIG_FILES([include/xmlsec/mscrypto/Makefile src/mscrypto/Makefile])
fi
+if test "z$XMLSEC_NO_MSCNG" != "z1" ; then
+AC_CONFIG_FILES([include/xmlsec/mscng/Makefile src/mscng/Makefile])
+fi
+
if test "z$XMLSEC_NO_CRYPTO_DYNAMIC_LOADING" = "z1" ; then
(rm -f xmlsec1.pc && $LN_S xmlsec1-$XMLSEC_DEFAULT_CRYPTO.pc xmlsec1.pc)
else
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 32bf780c..a89ba76c 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -9,12 +9,14 @@ EXTRA_DIST=\
$(builddir)/*.html \
$(builddir)/*.ico \
$(builddir)/xmlsec.xsl \
+ $(builddir)/xmlsec-ga.xsl \
$(NULL)
XMLSEC1_MAN=$(top_builddir)/man/xmlsec1.1
XMLSEC_HTML=$(builddir)/xmlsec-man.html
-all: docs
+all:
+ @echo "======= Run 'make docs' in the xmlsec/docs folder to rebuild docs"
# docs is legacy
docs: docs-copy man-docs docs-format
@@ -22,7 +24,7 @@ docs: docs-copy man-docs docs-format
docs-copy:
@( \
echo "Copying docs..."; \
- if [ z"$(srcdir)" != z"$(builddir)" ]; \
+ if [ z"$(srcdir)" != z"$(builddir)" -a z"`uname`" != z"Darwin" ]; \
then \
$(CP) -ru $(srcdir)/*.html $(srcdir)/*.ico $(srcdir)/images $(builddir)/ ; \
chmod u+w $(builddir)/*.html ; \
@@ -70,6 +72,19 @@ docs-format:
sed 's/\xA0/ /g' $$i > $$i.tmp ; \
mv $$i.tmp $$i ; \
done)
+docs-format-ga:
+ @(echo "Formatting html documents to add Google Analytics"; \
+ for i in `find $(builddir) -name "*.html" -print`; \
+ do \
+ echo "Processing $$i"; \
+ $(XSLTPROC) --html --output $$i.tmp $(srcdir)/xmlsec-ga.xsl $$i; \
+ if [ $$? != 0 ]; \
+ then \
+ echo "ERROR: processing file $$i"; \
+ exit 1; \
+ fi; \
+ mv $$i.tmp $$i; \
+ done)
else
# do nothing
docs-format:
diff --git a/docs/api/Makefile.am b/docs/api/Makefile.am
index 2a3c329e..a1ffd3a7 100644
--- a/docs/api/Makefile.am
+++ b/docs/api/Makefile.am
@@ -11,17 +11,14 @@ INCLUDE_DIR2=$(top_builddir)/include
SCAN_DIR=$(builddir)
SGML_DIR=$(builddir)/sgml.tmp
-XML_DIR=$(builddir)/xml.tmp
EXAMPLES_DIR=$(SGML_DIR)/examples
SOURCE_CODE_DIR=$(builddir)/code
+GTKDOC_MKDB_OUTPUT_DIR=$(builddir)/xml
# We need to copy some files to make gkdoc happy that
# everything is in one folder
-TMPL_DIR=$(builddir)/tmpl
-TMPL_SRC_DIR=$(srcdir)/tmpl
-
-MAIN_SGML_FILE=$(SGML_DIR)/xmlsec-main.sgml
+MAIN_SGML_FILE=$(SGML_DIR)/xmlsec.sgml
MAIN_SGML_SRC_FILE=$(srcdir)/src/xmlsec.sgml
SGML_CHAPTERS_DIR=$(SGML_DIR)/chapters
@@ -29,18 +26,28 @@ SGML_CHAPTERS_SRC_DIR=$(srcdir)/src/chapters
EXTRA_DIST = \
- $(TMPL_DIR) \
$(srcdir)/src \
$(srcdir)/images \
+ $(srcdir)/style.css \
$(NULL)
SOURCE_FILES_TO_COPY = \
$(srcdir)/src \
$(srcdir)/images \
+ $(srcdir)/style.css \
$(srcdir)/*.html \
$(srcdir)/*.png \
$(NULL)
+CRYPTO_LIBS_LIST = \
+ openssl \
+ nss \
+ gnutls \
+ gcrypt \
+ mscrypto \
+ mscng \
+ $(NULL)
+
#
# We need to pre-process original source files
# because gtkdoc does not understand some C features
@@ -73,7 +80,7 @@ else
docs:
@( \
echo "Copying api-docs..."; \
- if [ z"$(srcdir)" != z"$(builddir)" ]; \
+ if [ z"$(srcdir)" != z"$(builddir)" -a z"`uname`" != z"Darwin" ]; \
then \
$(CP) -ru $(SOURCE_FILES_TO_COPY) $(builddir)/ ; \
fi \
@@ -81,7 +88,7 @@ docs:
endif
html-cleanup: html
- ( echo "Cleaning up result files"; \
+ @( echo "Cleaning up result files"; \
$(PERL) $(REMOVE_GTKDOCLINK) `find . -name "*.html" -print` \
)
@@ -103,7 +110,7 @@ $(MAIN_SGML_FILE): $(MAIN_SGML_SRC_FILE)
# We also fix a bunch of stupid errors from gtkdoc
#
sgml: sgml-base
- (for i in `find $(SGML_DIR) -name "*.sgml" -print` ; do \
+ (for i in `find $(SGML_DIR) -name "*.sgml" -or -name "*.xml" -print` ; do \
echo "Fixing up '$$i'" ; \
cat $$i | \
sed 's!\(<dsig:\)\([^/]*\)\(\/>\)!\&lt;dsig:\2\/\&gt;!g' | \
@@ -116,6 +123,7 @@ sgml: sgml-base
sed 's!linkend=\"\(.*\)Ptr\"!linkend=\"\1\"!g' | \
sed 's!<colspec [^/]*\/>!!g' | \
sed 's!<programlisting language="C"!<programlisting!g' | \
+ sed 's!\%gtkdocentities;!!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!title>\n!title>!g' | \
$(PERL) -pe 's!<\/title><\/refsect1>\n!<\/title><para><\/para><\/refsect1>!g' | \
@@ -124,97 +132,46 @@ sgml: sgml-base
mv -f $$i.tmp $$i; \
done);
-sgml-base: templates $(SGML_DIR)/.sentinel
- $(GTKDOC_MKDB) --module=xmlsec \
- --main-sgml-file=$(SGML_DIR)/xmlsec-base.sgml \
- --output-dir=$(SGML_DIR)/ \
- --tmpl-dir=$(TMPL_DIR)/base \
- --source-dir=$(SOURCE_CODE_DIR)/src/base \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
- $(GTKDOC_MKDB) --module=xmlsec-openssl \
- --main-sgml-file=$(SGML_DIR)/xmlsec-openssl.sgml \
- --tmpl-dir=$(TMPL_DIR)/openssl \
- --output-dir=$(SGML_DIR)/openssl \
- --source-dir=$(SOURCE_CODE_DIR)/src/openssl \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
- $(GTKDOC_MKDB) --module=xmlsec-gnutls \
- --main-sgml-file=$(SGML_DIR)/xmlsec-gnutls.sgml \
- --tmpl-dir=$(TMPL_DIR)/gnutls \
- --output-dir=$(SGML_DIR)/gnutls \
- --source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
- $(GTKDOC_MKDB) --module=xmlsec-gcrypt \
- --main-sgml-file=$(SGML_DIR)/xmlsec-gcrypt.sgml \
- --tmpl-dir=$(TMPL_DIR)/gcrypt \
- --output-dir=$(SGML_DIR)/gcrypt \
- --source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
- $(GTKDOC_MKDB) --module=xmlsec-nss \
- --main-sgml-file=$(SGML_DIR)/xmlsec-nss.sgml \
- --tmpl-dir=$(TMPL_DIR)/nss \
- --output-dir=$(SGML_DIR)/nss \
- --source-dir=$(SOURCE_CODE_DIR)/src/nss \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
- $(GTKDOC_MKDB) --module=xmlsec-mscrypto \
- --main-sgml-file=$(SGML_DIR)/xmlsec-mscrypto.sgml \
- --tmpl-dir=$(TMPL_DIR)/mscrypto \
- --output-dir=$(SGML_DIR)/mscrypto \
- --source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
-
-templates: scan templates-copy
- $(GTKDOC_MKTMPL) --module=xmlsec \
- --output-dir=$(TMPL_DIR)/base
- $(GTKDOC_MKTMPL) --module=xmlsec-openssl \
- --output-dir=$(TMPL_DIR)/openssl
- $(GTKDOC_MKTMPL) --module=xmlsec-gnutls \
- --output-dir=$(TMPL_DIR)/gnutls
- $(GTKDOC_MKTMPL) --module=xmlsec-gcrypt \
- --output-dir=$(TMPL_DIR)/gcrypt
- $(GTKDOC_MKTMPL) --module=xmlsec-nss \
- --output-dir=$(TMPL_DIR)/nss
- $(GTKDOC_MKTMPL) --module=xmlsec-mscrypto \
- --output-dir=$(TMPL_DIR)/mscrypto
-
-# make sure to run chmod since we will update templates
-templates-copy: $(TMPL_SRC_DIR) $(TMPL_DIR)/.sentinel
- @echo "Copying original template files into '$(TMPL_DIR)' ..."
- ( if [ z"$(TMPL_DIR)" != z"$(TMPL_SRC_DIR)" ] ; then \
- $(CP) -ru $(TMPL_SRC_DIR)/* $(TMPL_DIR)/ ; \
- fi ; )
- chmod -R u+w $(TMPL_DIR)
+# gtkdoc-mkdb doesn't support --output-dir thus we have to "hack" it a litle bit
+sgml-base: scan $(SGML_DIR)/.sentinel
+ @( \
+ echo "Create DocBook files for xmlsec-core" ; \
+ rm -rf $(GTKDOC_MKDB_OUTPUT_DIR) $(SGML_DIR)/base ; \
+ $(GTKDOC_MKDB) --module=xmlsec \
+ --xml-mode \
+ --main-sgml-file=$(SGML_DIR)/xmlsec-base.sgml \
+ --source-dir=$(SOURCE_CODE_DIR)/src/base \
+ --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base ; \
+ mv $(GTKDOC_MKDB_OUTPUT_DIR) $(SGML_DIR)/base ; \
+ );
+ @(for i in $(CRYPTO_LIBS_LIST) ; do \
+ echo "Create DocBook files for xmlsec-$$i" ; \
+ rm -rf $(GTKDOC_MKDB_OUTPUT_DIR) $(SGML_DIR)/$$i ; \
+ $(GTKDOC_MKDB) --module=xmlsec-$$i \
+ --xml-mode \
+ --main-sgml-file=$(SGML_DIR)/xmlsec-$$i.sgml \
+ --source-dir=$(SOURCE_CODE_DIR)/src/$$i \
+ --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/$$i ; \
+ mv $(GTKDOC_MKDB_OUTPUT_DIR) $(SGML_DIR)/$$i ; \
+ done);
scan: SOURCE_CODEs example_sources
- $(GTKDOC_SCAN) --module=xmlsec \
- --rebuild-sections \
+ @( \
+ echo "Scanning source code for xmlsec-core" ; \
+ $(GTKDOC_SCAN) --module=xmlsec \
+ --rebuild-sections \
--output-dir=$(SCAN_DIR) \
--source-dir=$(SOURCE_CODE_DIR)/src/base \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base
- $(GTKDOC_SCAN) --module=xmlsec-openssl \
- --rebuild-sections \
- --output-dir=$(SCAN_DIR) \
- --source-dir=$(SOURCE_CODE_DIR)/src/openssl \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/openssl
- $(GTKDOC_SCAN) --module=xmlsec-gnutls \
- --rebuild-sections \
- --output-dir=$(SCAN_DIR) \
- --source-dir=$(SOURCE_CODE_DIR)/src/gnutls \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gnutls
- $(GTKDOC_SCAN) --module=xmlsec-gcrypt \
- --rebuild-sections \
- --output-dir=$(SCAN_DIR) \
- --source-dir=$(SOURCE_CODE_DIR)/src/gcrypt \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/gcrypt
- $(GTKDOC_SCAN) --module=xmlsec-nss \
- --rebuild-sections \
+ --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/base ; \
+ );
+ @(for i in $(CRYPTO_LIBS_LIST) ; do \
+ echo "Scanning source code for xmlsec-$$i" ; \
+ $(GTKDOC_SCAN) --module=xmlsec-$$i \
+ --rebuild-sections \
--output-dir=$(SCAN_DIR) \
- --source-dir=$(SOURCE_CODE_DIR)/src/nss \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/nss
- $(GTKDOC_SCAN) --module=xmlsec-mscrypto \
- --rebuild-sections \
- --output-dir=$(SCAN_DIR) \
- --source-dir=$(SOURCE_CODE_DIR)/src/mscrypto \
- --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/mscrypto
+ --source-dir=$(SOURCE_CODE_DIR)/src/$$i \
+ --source-dir=$(SOURCE_CODE_DIR)/include/xmlsec/$$i ; \
+ done);
#
# Prepare source files by coping them to "code" folder and
@@ -308,12 +265,9 @@ dist-hook:
done ; )
clean-local:
- -rm -rf $(SOURCE_CODE_DIR) $(EXAMPLES_DIR) $(SCAN_DIR)/*.txt $(SGML_DIR) $(XML_DIR)
- -rm -f *.stamp *.types *.css index.sgml
- ( if [ z"$(TMPL_SRC_DIR)" != z"$(TMPL_DIR)" ] && [ -d "$(TMPL_DIR)" ] ; then \
- chmod -R u+w $(TMPL_DIR) && rm -rf $(TMPL_DIR) ; \
- fi ; )
- ( if [ z"$(builddir)" != z"$(srcdir)" ] ; then \
+ -rm -rf $(SOURCE_CODE_DIR) $(EXAMPLES_DIR) $(SCAN_DIR)/*.txt $(SGML_DIR) $(GTKDOC_MKDB_OUTPUT_DIR)
+ -rm -f *.stamp *.types index.sgml
+ @( if [ z"$(builddir)" != z"$(srcdir)" ] ; then \
chmod -R u+w $(builddir)/src && rm -rf $(builddir)/src ; \
chmod -R u+w $(builddir)/images && rm -rf $(builddir)/images ; \
chmod -R u+w $(builddir)/*.png && rm -rf $(builddir)/*.png ; \
diff --git a/docs/api/home.png b/docs/api/home.png
index 28c2e27c..b293af53 100644
--- a/docs/api/home.png
+++ b/docs/api/home.png
Binary files differ
diff --git a/docs/api/index.html b/docs/api/index.html
index 6260bf13..4d08d1b8 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -1,120 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library Reference Manual</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="NEXT" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library Reference Manual: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<meta name="description" content="This manual documents the interfaces of the xmlsec library and has some short notes to help get you up to speed with using the library.">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="next" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<div class="BOOK">
-<div class="TITLEPAGE">
-<table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th align="center" valign="MIDDLE"><p class="TITLE">XML Security Library Reference Manual<a name="AEN2"></a></p></th></tr></table>
-<h3 class="AUTHOR">
-<a name="AEN5"></a>Aleksey Sanin</h3>
-<div class="AFFILIATION"><div class="ADDRESS"><p class="ADDRESS"> <code class="EMAIL">&lt;<a href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a>&gt;</code><br>
- </p></div></div>
-<p class="COPYRIGHT">Copyright © 2002-2003 Aleksey Sanin</p>
-<div><div class="ABSTRACT">
-<p></p>
-<a name="AEN18"></a><p>This manual documents the interfaces of the xmlsec
- library and has some short notes to help get you up to speed
- with using the library.</p>
-<p></p>
-</div></div>
-<div class="LEGALNOTICE">
-<p></p>
-<a name="AEN14"></a><p>Permission is granted to make and distribute verbatim
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div>
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">XML Security Library Reference Manual</p></th></tr></table></div>
+<div><div class="authorgroup"><div class="author">
+<h3 class="author">
+<span class="firstname">Aleksey</span> <span class="surname">Sanin</span>
+</h3>
+<div class="affiliation"><div class="address"><p><br>
+     <code class="email">&lt;<a class="email" href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a>&gt;</code><br>
+   </p></div></div>
+</div></div></div>
+<div><p class="copyright">Copyright © 2002-2017 Aleksey Sanin</p></div>
+<div><div class="legalnotice">
+<a name="id-1.1.4"></a><p>Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and this
permission notice are preserved on all copies.</p>
<p>Permission is granted to copy and distribute modified
@@ -125,206 +36,314 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
<p>Permission is granted to copy and distribute translations
of this manual into another language, under the above conditions
for modified versions.</p>
-<p></p>
+</div></div>
+<div><div class="abstract">
+<p class="title"><b>Abstract</b></p>
+<p>This manual documents the interfaces of the xmlsec
+ library and has some short notes to help get you up to speed
+ with using the library.</p>
+</div></div>
</div>
+<hr>
</div>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt>I. <a href="xmlsec-notes.html">XML Security Library Tutorial</a>
-</dt>
+<div class="toc"><dl class="toc">
+<dt><span class="part"><a href="xmlsec-notes.html">I. XML Security Library Tutorial</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="xmlsec-notes-overview.html">Overview.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-structure.html">XML Security Library Structure.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-compiling.html">Building the application with XML Security Library.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling.html#xmlsec-notes-compiling-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-include-files.html">Include files.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-init-shutdown.html">Initialization and shutdown.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-sign-encrypt.html">Signing and encrypting documents.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-overview.html">Overview.</a></dt>
-<dt><a href="xmlsec-notes-structure.html">XML Security Library Structure.</a></dt>
-<dt><a href="xmlsec-notes-compiling.html">Building the application with XML Security Library.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign-encrypt.html#xmlsec-notes-sign-encrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign.html">Signing a document.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-templates.html">Creating dynamic templates.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-compiling.html#XMLSEC-NOTES-COMPILING-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-include-files.html">Include files.</a></dt>
-<dt><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></dt>
-<dt><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></dt>
-<dt><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-templates.html#xmlsec-notes-templates-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-init-shutdown.html">Initialization and shutdown.</a></dt>
-<dt><a href="xmlsec-notes-sign-encrypt.html">Signing and encrypting documents.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-verify-decrypt.html">Verifing and decrypting documents.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-sign-encrypt.html#XMLSEC-NOTES-SIGN-ENCRYPT-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-sign.html">Signing a document.</a></dt>
-<dt><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify-decrypt.html#xmlsec-notes-verify-decrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify.html">Verifying a signed document</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-templates.html">Creating dynamic templates.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-keys.html">Keys.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-keysmngr.html">Keys manager.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-templates.html#XMLSEC-NOTES-TEMPLATES-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></dt>
-<dt><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keysmngr.html#xmlsec-notes-keysmngr-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-verify-decrypt.html">Verifing and decrypting documents.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-x509.html">Using X509 Certificates.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-verify-decrypt.html#XMLSEC-NOTES-VERIFY-DECRYPT-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-verify.html">Verifying a signed document</a></dt>
-<dt><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-x509.html#xmlsec-notes-x509-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-keys.html">Keys.</a></dt>
-<dt><a href="xmlsec-notes-keysmngr.html">Keys manager.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-transforms.html">Transforms and transforms chain.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-contexts.html">Using context objects.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-new-crypto.html">Adding support for new cryptographic library.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-keysmngr.html#XMLSEC-NOTES-KEYSMNGR-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></dt>
-<dt><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></dt>
-<dt><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></dt>
-<dt><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto.html#xmlsec-notes-new-crypto-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-x509.html">Using X509 Certificates.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-examples.html">Examples.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-examples.html#xmlsec-examples-overview">XML Security Library Examples.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-x509.html#XMLSEC-NOTES-X509-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></dt>
-<dt><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1">sign1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-tmpl">sign1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-res">sign1-res.xml</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-notes-transforms.html">Transforms and transforms chain.</a></dt>
-<dt><a href="xmlsec-notes-contexts.html">Using context objects.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto.html">Adding support for new cryptographic library.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-notes-new-crypto.html#XMLSEC-NOTES-NEW-CRYPTO-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2">sign2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-doc">sign2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-res">sign2-res.xml</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-examples.html">Examples.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-examples.html#XMLSEC-EXAMPLES-OVERVIEW">XML Security Library Examples.</a></dt>
-<dt><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></dt>
-<dt><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></dt>
-<dt><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></dt>
-<dt><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></dt>
-<dt><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></dt>
-<dt><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></dt>
-<dt><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></dt>
-<dt><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></dt>
-<dt><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></dt>
-<dt><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></dt>
-<dt><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></dt>
-<dt><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></dt>
-<dt><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3">sign3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-doc">sign3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-res">sign3-res.xml</a></span></dt>
</dl></dd>
-<dt><a href="xmlsec-signature-klasses.html">APPENDIX A. XML Security Library Signature Klasses.</a></dt>
-<dt><a href="xmlsec-encryption-klasses.html">APPENDIX B. XML Security Library Encryption Klasses.</a></dt>
+<dt><span class="sect1"><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-key.html#xmlsec-example-verify1">verify1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-keys-mngr.html#xmlsec-example-verify2">verify2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-x509.html#xmlsec-example-verify3">verify3.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4">verify4.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-tmpl">verify4-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-res">verify4-res.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-tmpl">verify4-bad-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-res">verify4-bad-res.xml</a></span></dt>
</dl></dd>
-<dt>II. <a href="xmlsec-reference.html">XML Security Library API Reference.</a>
-</dt>
+<dt><span class="sect1"><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1">encrypt1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-tmpl">encrypt1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-res">encrypt1-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2">encrypt2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-doc">encrypt2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-res">encrypt2-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3">encrypt3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-doc">encrypt3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-res">encrypt3-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-signle-key.html#xmlsec-example-decrypt1">decrypt1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-keys-mngr.html#xmlsec-example-decrypt2">decrypt2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-custom-keys-manager.html#xmlsec-example-decrypt3">decrypt3.c</a></span></dt></dl></dd>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-signature-klasses.html">APPENDIX A. XML Security Library Signature Klasses.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-encryption-klasses.html">APPENDIX B. XML Security Library Encryption Klasses.</a></span></dt>
+</dl></dd>
+<dt><span class="part"><a href="xmlsec-reference.html">II. XML Security Library API Reference.</a></span></dt>
<dd><dl>
-<dt><a href="xmlsec-ref.html">XML Security Core Library API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-ref.html">XML Security Core Library API Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-app.html">app</a> -- Crypto-engine independent application support function.</dt>
+<span class="refentrytitle"><a href="xmlsec-app.html">app</a></span><span class="refpurpose"> — Crypto-engine independent application support functions.</span>
+</dt>
<dt>
-<a href="xmlsec-base64.html">base64</a> -- Base64 encoding/decoding functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-base64.html">base64</a></span><span class="refpurpose"> — Base64 encoding/decoding functions and base64 transform implementation.</span>
+</dt>
<dt>
-<a href="xmlsec-bn.html">bn</a> -- Big numbers support functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-bn.html">bn</a></span><span class="refpurpose"> — Big numbers support functions.</span>
+</dt>
<dt>
-<a href="xmlsec-buffer.html">buffer</a> -- Binary buffer implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-buffer.html">buffer</a></span><span class="refpurpose"> — Binary memory buffer functions.</span>
+</dt>
<dt>
-<a href="xmlsec-dl.html">dl</a> -- Dynamic crypto-engine library loading support.</dt>
+<span class="refentrytitle"><a href="xmlsec-dl.html">dl</a></span><span class="refpurpose"> — Dynamic crypto-engine library loading functions.</span>
+</dt>
<dt>
-<a href="xmlsec-errors.html">errors</a> -- Error/log messages support.</dt>
+<span class="refentrytitle"><a href="xmlsec-errors.html">errors</a></span><span class="refpurpose"> — Error reporting and logging functions.</span>
+</dt>
<dt>
-<a href="xmlsec-io.html">io</a> -- Input/output support.</dt>
+<span class="refentrytitle"><a href="xmlsec-io.html">io</a></span><span class="refpurpose"> — Input/output functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keyinfo.html">keyinfo</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser.</dt>
+<span class="refentrytitle"><a href="xmlsec-keyinfo.html">keyinfo</a></span><span class="refpurpose"> — &lt;dsig:KeyInfo/&gt; node parser functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keysdata.html">keysdata</a> -- Crypto key data object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-keysdata.html">keysdata</a></span><span class="refpurpose"> — Crypto key data object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keys.html">keys</a> -- Crypto key object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-keys.html">keys</a></span><span class="refpurpose"> — Crypto key object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keysmngr.html">keysmngr</a> -- Keys manager object support.</dt>
+<span class="refentrytitle"><a href="xmlsec-keysmngr.html">keysmngr</a></span><span class="refpurpose"> — Keys manager object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-list.html">list</a> -- Generic list structure implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-list.html">list</a></span><span class="refpurpose"> — Generic list structure functions.</span>
+</dt>
<dt>
-<a href="xmlsec-membuf.html">membuf</a> -- Memory buffer transform implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-membuf.html">membuf</a></span><span class="refpurpose"> — Memory buffer transform functions.</span>
+</dt>
<dt>
-<a href="xmlsec-nodeset.html">nodeset</a> -- Nodeset object implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-nodeset.html">nodeset</a></span><span class="refpurpose"> — XML nodes set functions</span>
+</dt>
<dt>
-<a href="xmlsec-parser.html">parser</a> -- Parser transform implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-parser.html">parser</a></span><span class="refpurpose"> — XML parser functions and the XML parser transform implementation.</span>
+</dt>
<dt>
-<a href="xmlsec-templates.html">templates</a> -- Dynamic templates creation functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-templates.html">templates</a></span><span class="refpurpose"> — XML signature and encryption template functions.</span>
+</dt>
<dt>
-<a href="xmlsec-transforms.html">transforms</a> -- Transform object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-transforms.html">transforms</a></span><span class="refpurpose"> — Transform object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-version.html">version</a> -- Version macros.</dt>
+<span class="refentrytitle"><a href="xmlsec-version.html">version</a></span><span class="refpurpose"> — Version macros.</span>
+</dt>
<dt>
-<a href="xmlsec-xmldsig.html">xmldsig</a> -- XML Digital Signature support.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmldsig.html">xmldsig</a></span><span class="refpurpose"> — XML Digital Signature functions.</span>
+</dt>
<dt>
-<a href="xmlsec-xmlenc.html">xmlenc</a> -- XML Encryption support.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmlenc.html">xmlenc</a></span><span class="refpurpose"> — XML Encryption support.</span>
+</dt>
<dt>
-<a href="xmlsec-xmlsec.html">xmlsec</a> -- Utility functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmlsec.html">xmlsec</a></span><span class="refpurpose"> — Utility functions.</span>
+</dt>
<dt>
-<a href="xmlsec-xmltree.html">xmltree</a> -- XML tree operations.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmltree.html">xmltree</a></span><span class="refpurpose"> — XML tree functions.</span>
+</dt>
<dt>
-<a href="xmlsec-x509.html">x509</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser.</dt>
+<span class="refentrytitle"><a href="xmlsec-x509.html">x509</a></span><span class="refpurpose"> — &lt;dsig:X509Certificate/&gt; node parser functions.</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-openssl-ref.html">XML Security Library for OpenSLL API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-openssl-ref.html">XML Security Library for OpenSLL API Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-openssl-app.html">app</a> -- Application functions implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-app.html">app</a></span><span class="refpurpose"> — Application support functions for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-bn.html">bn</a> -- Big numbers helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-bn.html">bn</a></span><span class="refpurpose"> — Big numbers (BIGNUM) support functions implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-crypto.html">crypto</a> -- Crypto transforms implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-evp.html">evp</a> -- EVP keys data implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-evp.html">evp</a></span><span class="refpurpose"> — Private/public (EVP) keys implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-x509.html">x509</a> -- X509 certificates support implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for OpenSSL.</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-gnutls-ref.html">XML Security Library for GnuTLS API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-gnutls-ref.html">XML Security Library for GnuTLS API Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-gnutls-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-app.html">app</a></span><span class="refpurpose"> — Application support functions for GnuTLS.</span>
+</dt>
<dt>
-<a href="xmlsec-gnutls-crypto.html">crypto</a> -- Crypto transforms implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GnuTLS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for GnuTLS.</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-gcrypt-ref.html">XML Security Library for GCrypt API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-gcrypt-ref.html">XML Security Library for GCrypt API Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-gcrypt-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-app.html">app</a></span><span class="refpurpose"> — Application support functions for GCrypt.</span>
+</dt>
<dt>
-<a href="xmlsec-gcrypt-crypto.html">crypto</a> -- Crypto transforms implementation for GCrypt.</dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GCrypt.</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-nss-ref.html">XML Security Library for NSS API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-nss-ref.html">XML Security Library for NSS API Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-nss-app.html">app</a> -- Application functions implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-app.html">app</a></span><span class="refpurpose"> — Application support functions for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-bignum.html">bignum</a></span><span class="refpurpose"> — Big numbers support functions implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-pkikeys.html">pkikeys</a></span><span class="refpurpose"> — Private/public keys implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for NSS.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-mscrypto-ref.html">XML Security Library for Microsoft Crypto API Reference.</a></span></dt>
+<dd><dl>
<dt>
-<a href="xmlsec-nss-bignum.html">bignum</a> -- Big numbers helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-crypto.html">crypto</a> -- Crypto transforms implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-keysstore.html">keysstore</a> -- Keys store implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-pkikeys.html">pkikeys</a> -- PKI keys data implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-x509.html">x509</a> -- X509 certificates support implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Crypto API.</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-mscrypto-ref.html">XML Security Library for MSCrypto API Reference.</a></dt>
+<dt><span class="chapter"><a href="xmlsec-msccng-ref.html">XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.</a></span></dt>
<dd><dl>
<dt>
-<a href="xmlsec-mscrypto-app.html">app</a> -- Application functions implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-certkeys.html">certkeys</a> -- MS Crypto certificates helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-crypto.html">crypto</a> -- Crypto transforms implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-keysstore.html">keysstore</a> -- Keys store implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-x509.html">x509</a> -- X509 certificates support implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
</dl></dd>
-<dt><a href="xmlsec-index.html">XML Security Library Reference Index</a></dt>
+<dt><span class="chapter"><a href="xmlsec-index.html">XML Security Library Reference Index</a></span></dt>
</dl></dd>
</dl></div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes.html"><b>XML Security Library Tutorial &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/left-insensitive.png b/docs/api/left-insensitive.png
new file mode 100644
index 00000000..903790a0
--- /dev/null
+++ b/docs/api/left-insensitive.png
Binary files differ
diff --git a/docs/api/left.png b/docs/api/left.png
index c518641e..21b31e32 100644
--- a/docs/api/left.png
+++ b/docs/api/left.png
Binary files differ
diff --git a/docs/api/right-insensitive.png b/docs/api/right-insensitive.png
new file mode 100644
index 00000000..a3696bf9
--- /dev/null
+++ b/docs/api/right-insensitive.png
Binary files differ
diff --git a/docs/api/right.png b/docs/api/right.png
index 78f5875a..73d25da4 100644
--- a/docs/api/right.png
+++ b/docs/api/right.png
Binary files differ
diff --git a/docs/api/src/chapters/new-crypto.sgml b/docs/api/src/chapters/new-crypto.sgml
index 35cbd145..d0d14c05 100644
--- a/docs/api/src/chapters/new-crypto.sgml
+++ b/docs/api/src/chapters/new-crypto.sgml
@@ -410,7 +410,7 @@ struct _xmlSecTransform {
after transform execution is finished. The
<link linkend="xmlSecTransformVerifyMethod">verify</link> method implementation
must set the "status" member to <link linkend="xmlSecTransformStatusOk">xmlSecTransformStatusOk</link>
- if signature, hmac or digest is successfuly verified or to
+ if signature, hmac or digest is successfully verified or to
<link linkend="xmlSecTransformStatusFail">xmlSecTransformStatusFail</link>
otherwise.
</para>
diff --git a/docs/api/src/chapters/using-x509-certs.sgml b/docs/api/src/chapters/using-x509-certs.sgml
index 8ff029d9..ef17d79c 100644
--- a/docs/api/src/chapters/using-x509-certs.sgml
+++ b/docs/api/src/chapters/using-x509-certs.sgml
@@ -119,7 +119,7 @@
<figure>
<title>Certificates chain.</title>
<programlisting>
-Certificate A (signed with B) <- Certificate B (signed with C) <- ... <- Root Certificate (signed by itself)
+Certificate A (signed with B) &lt;- Certificate B (signed with C) &lt;- ... &lt;- Root Certificate (signed by itself)
</programlisting>
</figure>
At the end of the chain there is a &quot;Root Certificate&quot; which
diff --git a/docs/api/src/xmlsec.sgml b/docs/api/src/xmlsec.sgml
index fdb3ac1f..d418adbd 100644
--- a/docs/api/src/xmlsec.sgml
+++ b/docs/api/src/xmlsec.sgml
@@ -1,7 +1,9 @@
-<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "
+http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY chapter-compiling-and-linking SYSTEM "chapters/compiling-and-linking.sgml">
-<!ENTITY chapter-init-and-shutdown SYSTEM "chapters/init-and-shutdown.sgml">
-<!ENTITY chapter-sign-and-encrypt SYSTEM "chapters/sign-and-encrypt.sgml">
+<!ENTITY chapter-init-and-shutdown SYSTEM "chapters/init-and-shutdown.sgml">
+<!ENTITY chapter-sign-and-encrypt SYSTEM "chapters/sign-and-encrypt.sgml">
<!ENTITY chapter-verify-and-decrypt SYSTEM "chapters/verify-and-decrypt.sgml">
<!ENTITY chapter-creating-templates SYSTEM "chapters/creating-templates.sgml">
<!ENTITY chapter-using-keys SYSTEM "chapters/using-keys.sgml">
@@ -14,55 +16,61 @@
<!ENTITY xmlsec-index SYSTEM "xmlsec-index.sgml">
-<!ENTITY xmlsec-app SYSTEM "app.sgml">
-<!ENTITY xmlsec-base64 SYSTEM "base64.sgml">
-<!ENTITY xmlsec-bn SYSTEM "bn.sgml">
-<!ENTITY xmlsec-buffer SYSTEM "buffer.sgml">
-<!ENTITY xmlsec-dl SYSTEM "dl.sgml">
-<!ENTITY xmlsec-errors SYSTEM "errors.sgml">
-<!ENTITY xmlsec-io SYSTEM "io.sgml">
-<!ENTITY xmlsec-keyinfo SYSTEM "keyinfo.sgml">
-<!ENTITY xmlsec-keysdata SYSTEM "keysdata.sgml">
-<!ENTITY xmlsec-keys SYSTEM "keys.sgml">
-<!ENTITY xmlsec-keysmngr SYSTEM "keysmngr.sgml">
-<!ENTITY xmlsec-list SYSTEM "list.sgml">
-<!ENTITY xmlsec-membuf SYSTEM "membuf.sgml">
-<!ENTITY xmlsec-nodeset SYSTEM "nodeset.sgml">
-<!ENTITY xmlsec-parser SYSTEM "parser.sgml">
-<!ENTITY xmlsec-templates SYSTEM "templates.sgml">
-<!ENTITY xmlsec-transforms SYSTEM "transforms.sgml">
-<!ENTITY xmlsec-version SYSTEM "version.sgml">
-<!ENTITY xmlsec-xmldsig SYSTEM "xmldsig.sgml">
-<!ENTITY xmlsec-xmlenc SYSTEM "xmlenc.sgml">
-<!ENTITY xmlsec-xmlsec SYSTEM "xmlsec.sgml">
-<!ENTITY xmlsec-xmltree SYSTEM "xmltree.sgml">
-<!ENTITY xmlsec-x509 SYSTEM "x509.sgml">
-
-<!ENTITY xmlsec-openssl-app SYSTEM "openssl/app.sgml">
-<!ENTITY xmlsec-openssl-bn SYSTEM "openssl/bn.sgml">
-<!ENTITY xmlsec-openssl-ciphers SYSTEM "openssl/ciphers.sgml">
-<!ENTITY xmlsec-openssl-crypto SYSTEM "openssl/crypto.sgml">
-<!ENTITY xmlsec-openssl-evp SYSTEM "openssl/evp.sgml">
-<!ENTITY xmlsec-openssl-x509 SYSTEM "openssl/x509.sgml">
-
-<!ENTITY xmlsec-gnutls-app SYSTEM "gnutls/app.sgml">
-<!ENTITY xmlsec-gnutls-crypto SYSTEM "gnutls/crypto.sgml">
-
-<!ENTITY xmlsec-gcrypt-app SYSTEM "gcrypt/app.sgml">
-<!ENTITY xmlsec-gcrypt-crypto SYSTEM "gcrypt/crypto.sgml">
-
-<!ENTITY xmlsec-nss-app SYSTEM "nss/app.sgml">
-<!ENTITY xmlsec-nss-bignum SYSTEM "nss/bignum.sgml">
-<!ENTITY xmlsec-nss-crypto SYSTEM "nss/crypto.sgml">
-<!ENTITY xmlsec-nss-keysstore SYSTEM "nss/keysstore.sgml">
-<!ENTITY xmlsec-nss-pkikeys SYSTEM "nss/pkikeys.sgml">
-<!ENTITY xmlsec-nss-x509 SYSTEM "nss/x509.sgml">
-
-<!ENTITY xmlsec-mscrypto-app SYSTEM "mscrypto/app.sgml">
-<!ENTITY xmlsec-mscrypto-certkeys SYSTEM "mscrypto/certkeys.sgml">
-<!ENTITY xmlsec-mscrypto-crypto SYSTEM "mscrypto/crypto.sgml">
-<!ENTITY xmlsec-mscrypto-keysstore SYSTEM "mscrypto/keysstore.sgml">
-<!ENTITY xmlsec-mscrypto-x509 SYSTEM "mscrypto/x509.sgml">
+<!ENTITY xmlsec-app "base/app.xml">
+<!ENTITY xmlsec-base64 "base/base64.xml">
+<!ENTITY xmlsec-bn "base/bn.xml">
+<!ENTITY xmlsec-buffer "base/buffer.xml">
+<!ENTITY xmlsec-dl "base/dl.xml">
+<!ENTITY xmlsec-errors "base/errors.xml">
+<!ENTITY xmlsec-io "base/io.xml">
+<!ENTITY xmlsec-keyinfo "base/keyinfo.xml">
+<!ENTITY xmlsec-keysdata "base/keysdata.xml">
+<!ENTITY xmlsec-keys "base/keys.xml">
+<!ENTITY xmlsec-keysmngr "base/keysmngr.xml">
+<!ENTITY xmlsec-list "base/list.xml">
+<!ENTITY xmlsec-membuf "base/membuf.xml">
+<!ENTITY xmlsec-nodeset "base/nodeset.xml">
+<!ENTITY xmlsec-parser "base/parser.xml">
+<!ENTITY xmlsec-templates "base/templates.xml">
+<!ENTITY xmlsec-transforms "base/transforms.xml">
+<!ENTITY xmlsec-version "base/version.xml">
+<!ENTITY xmlsec-x509 "base/x509.xml">
+<!ENTITY xmlsec-xmldsig "base/xmldsig.xml">
+<!ENTITY xmlsec-xmlenc "base/xmlenc.xml">
+<!ENTITY xmlsec-xmlsec "base/xmlsec.xml">
+<!ENTITY xmlsec-xmltree "base/xmltree.xml">
+
+<!ENTITY xmlsec-openssl-app "openssl/app.xml">
+<!ENTITY xmlsec-openssl-bn "openssl/bn.xml">
+<!ENTITY xmlsec-openssl-crypto "openssl/crypto.xml">
+<!ENTITY xmlsec-openssl-evp "openssl/evp.xml">
+<!ENTITY xmlsec-openssl-x509 "openssl/x509.xml">
+
+<!ENTITY xmlsec-gnutls-app "gnutls/app.xml">
+<!ENTITY xmlsec-gnutls-crypto "gnutls/crypto.xml">
+<!ENTITY xmlsec-gnutls-x509 "gnutls/x509.xml">
+
+<!ENTITY xmlsec-gcrypt-app "gcrypt/app.xml">
+<!ENTITY xmlsec-gcrypt-crypto "gcrypt/crypto.xml">
+
+<!ENTITY xmlsec-nss-app "nss/app.xml">
+<!ENTITY xmlsec-nss-bignum "nss/bignum.xml">
+<!ENTITY xmlsec-nss-crypto "nss/crypto.xml">
+<!ENTITY xmlsec-nss-keysstore "nss/keysstore.xml">
+<!ENTITY xmlsec-nss-pkikeys "nss/pkikeys.xml">
+<!ENTITY xmlsec-nss-x509 "nss/x509.xml">
+
+<!ENTITY xmlsec-mscrypto-app "mscrypto/app.xml">
+<!ENTITY xmlsec-mscrypto-certkeys "mscrypto/certkeys.xml">
+<!ENTITY xmlsec-mscrypto-crypto "mscrypto/crypto.xml">
+<!ENTITY xmlsec-mscrypto-keysstore "mscrypto/keysstore.xml">
+<!ENTITY xmlsec-mscrypto-x509 "mscrypto/x509.xml">
+
+<!ENTITY xmlsec-mscng-app "mscng/app.xml">
+<!ENTITY xmlsec-mscng-certkeys "mscng/certkeys.xml">
+<!ENTITY xmlsec-mscng-crypto "mscng/crypto.xml">
+<!ENTITY xmlsec-mscng-keysstore "mscng/keysstore.xml">
+<!ENTITY xmlsec-mscng-x509 "mscng/x509.xml">
<!ENTITY xmlsec-example-sign1 SYSTEM "examples/sign1.sgml">
<!ENTITY xmlsec-example-sign2 SYSTEM "examples/sign2.sgml">
@@ -99,7 +107,7 @@
<!ENTITY xmlsec-example-encrypt3-doc SYSTEM "examples/encrypt3-doc.sgml">
<!ENTITY xmlsec-example-encrypt3-res SYSTEM "examples/encrypt3-res.sgml">
]>
-<book id="index">
+<book id="index" xmlns:xi="http://www.w3.org/2001/XInclude">
<bookinfo>
<title>XML Security Library Reference Manual</title>
<authorgroup>
@@ -114,7 +122,7 @@
</author>
</authorgroup>
<copyright>
- <year>2002-2003</year>
+ <year>2002-2017</year>
<holder>Aleksey Sanin</holder>
</copyright>
<legalnotice>
@@ -146,14 +154,15 @@
<para>XML Security Library provides support for XML Digital Signature
and XML Encryption. It is based on LibXML/LibXSLT and can use
practicaly any crypto library (currently there is "out of the box"
- support for OpenSSL, MSCrypto, GnuTLS, GCrypt and NSS).
+ support for OpenSSL, Microsoft Crypto API, Microsoft Cryptography API:
+ Next Generation (CNG), GnuTLS, GCrypt and NSS).
</para>
</chapter>
<chapter id="xmlsec-notes-structure">
<title>XML Security Library Structure.</title>
<para>In order to provide the an ability to use different crypto engines,
the XML Security Library is splitted in two parts: core library (xmlsec)
- and crypto library (xmlsec-openssl, xmlsec-mscrypt, xmlsec-gnutls,
+ and crypto library (xmlsec-openssl, xmlsec-mscrypt, xmlsec-mscng, xmlsec-gnutls,
xmlsec-gcrypt, xmlsec-nss, ...).
<figure>
<title>The library structure and dependencies.</title>
@@ -210,29 +219,29 @@
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
- &xmlsec-app;
- &xmlsec-base64;
- &xmlsec-bn;
- &xmlsec-buffer;
- &xmlsec-dl;
- &xmlsec-errors;
- &xmlsec-io;
- &xmlsec-keyinfo;
- &xmlsec-keysdata;
- &xmlsec-keys;
- &xmlsec-keysmngr;
- &xmlsec-list;
- &xmlsec-membuf;
- &xmlsec-nodeset;
- &xmlsec-parser;
- &xmlsec-templates;
- &xmlsec-transforms;
- &xmlsec-version;
- &xmlsec-xmldsig;
- &xmlsec-xmlenc;
- &xmlsec-xmlsec;
- &xmlsec-xmltree;
- &xmlsec-x509;
+ <xi:include href="&xmlsec-app;"/>
+ <xi:include href="&xmlsec-base64;"/>
+ <xi:include href="&xmlsec-bn;"/>
+ <xi:include href="&xmlsec-buffer;"/>
+ <xi:include href="&xmlsec-dl;"/>
+ <xi:include href="&xmlsec-errors;"/>
+ <xi:include href="&xmlsec-io;"/>
+ <xi:include href="&xmlsec-keyinfo;"/>
+ <xi:include href="&xmlsec-keysdata;"/>
+ <xi:include href="&xmlsec-keys;"/>
+ <xi:include href="&xmlsec-keysmngr;"/>
+ <xi:include href="&xmlsec-list;"/>
+ <xi:include href="&xmlsec-membuf;"/>
+ <xi:include href="&xmlsec-nodeset;"/>
+ <xi:include href="&xmlsec-parser;"/>
+ <xi:include href="&xmlsec-templates;"/>
+ <xi:include href="&xmlsec-transforms;"/>
+ <xi:include href="&xmlsec-version;"/>
+ <xi:include href="&xmlsec-xmldsig;"/>
+ <xi:include href="&xmlsec-xmlenc;"/>
+ <xi:include href="&xmlsec-xmlsec;"/>
+ <xi:include href="&xmlsec-xmltree;"/>
+ <xi:include href="&xmlsec-x509;"/>
</chapter>
<chapter id="xmlsec-openssl-ref">
@@ -241,11 +250,11 @@
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
- &xmlsec-openssl-app;
- &xmlsec-openssl-bn;
- &xmlsec-openssl-crypto;
- &xmlsec-openssl-evp;
- &xmlsec-openssl-x509;
+ <xi:include href="&xmlsec-openssl-app;"/>
+ <xi:include href="&xmlsec-openssl-bn;"/>
+ <xi:include href="&xmlsec-openssl-crypto;"/>
+ <xi:include href="&xmlsec-openssl-evp;"/>
+ <xi:include href="&xmlsec-openssl-x509;"/>
</chapter>
<chapter id="xmlsec-gnutls-ref">
@@ -254,8 +263,9 @@
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
- &xmlsec-gnutls-app;
- &xmlsec-gnutls-crypto;
+ <xi:include href="&xmlsec-gnutls-app;"/>
+ <xi:include href="&xmlsec-gnutls-crypto;"/>
+ <xi:include href="&xmlsec-gnutls-x509;"/>
</chapter>
<chapter id="xmlsec-gcrypt-ref">
@@ -264,8 +274,8 @@
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
- &xmlsec-gcrypt-app;
- &xmlsec-gcrypt-crypto;
+ <xi:include href="&xmlsec-gcrypt-app;"/>
+ <xi:include href="&xmlsec-gcrypt-crypto;"/>
</chapter>
<chapter id="xmlsec-nss-ref">
@@ -274,32 +284,49 @@
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </para>
- &xmlsec-nss-app;
- &xmlsec-nss-bignum;
- &xmlsec-nss-crypto;
- &xmlsec-nss-keysstore;
- &xmlsec-nss-pkikeys;
- &xmlsec-nss-x509;
+ <xi:include href="&xmlsec-nss-app;"/>
+ <xi:include href="&xmlsec-nss-bignum;"/>
+ <xi:include href="&xmlsec-nss-crypto;"/>
+ <xi:include href="&xmlsec-nss-keysstore;"/>
+ <xi:include href="&xmlsec-nss-pkikeys;"/>
+ <xi:include href="&xmlsec-nss-x509;"/>
</chapter>
<chapter id="xmlsec-mscrypto-ref">
- <title>XML Security Library for MSCrypto API Reference.</title>
- <para>This section contains the API reference for xmlsec-mscrypto. All
- the public interfaces are documented here. This reference guide is
- build by extracting comments from the code sources. </para>
+ <title>XML Security Library for Microsoft Crypto API Reference.</title>
+ <para>This section contains the API reference for xmlsec-mscrypto (based on
+ Microsoft Crypto API). All the public interfaces are documented here.
+ This reference guide is build by extracting comments from the code sources.
+ </para>
- &xmlsec-mscrypto-app;
- &xmlsec-mscrypto-certkeys;
- &xmlsec-mscrypto-crypto;
- &xmlsec-mscrypto-keysstore;
- &xmlsec-mscrypto-x509;
+ <xi:include href="&xmlsec-mscrypto-app;"/>
+ <xi:include href="&xmlsec-mscrypto-certkeys;"/>
+ <xi:include href="&xmlsec-mscrypto-crypto;"/>
+ <xi:include href="&xmlsec-mscrypto-keysstore;"/>
+ <xi:include href="&xmlsec-mscrypto-x509;"/>
</chapter>
+
+ <chapter id="xmlsec-msccng-ref">
+ <title>XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.</title>
+ <para>This section contains the API reference for xmlsec-mscng (based on
+ <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376210(v=vs.85).aspx">Microsoft
+ Cryptography API: Next Generation (CNG)</a>). All the public interfaces are
+ documented here. This reference guide is build by extracting comments from
+ the code sources. </para>
+
+ <xi:include href="&xmlsec-mscng-app;"/>
+ <xi:include href="&xmlsec-mscng-certkeys;"/>
+ <xi:include href="&xmlsec-mscng-crypto;"/>
+ <xi:include href="&xmlsec-mscng-keysstore;"/>
+ <xi:include href="&xmlsec-mscng-x509;"/>
+ </chapter>
+
<chapter id="xmlsec-index">
<title>XML Security Library Reference Index</title>
<para>
<itemizedlist>
- &xmlsec-index;
+ &xmlsec-index;
</itemizedlist>
</para>
</chapter>
diff --git a/docs/api/style.css b/docs/api/style.css
new file mode 100644
index 00000000..36754209
--- /dev/null
+++ b/docs/api/style.css
@@ -0,0 +1,479 @@
+body
+{
+ font-family: cantarell, sans-serif;
+}
+.synopsis, .classsynopsis
+{
+ /* tango:aluminium 1/2 */
+ background: #eeeeec;
+ background: rgba(238, 238, 236, 0.5);
+ border: solid 1px rgb(238, 238, 236);
+ padding: 0.5em;
+}
+.programlisting
+{
+ /* tango:sky blue 0/1 */
+ /* fallback for no rgba support */
+ background: #e6f3ff;
+ border: solid 1px #729fcf;
+ background: rgba(114, 159, 207, 0.1);
+ border: solid 1px rgba(114, 159, 207, 0.2);
+ padding: 0.5em;
+}
+.variablelist
+{
+ padding: 4px;
+ margin-left: 3em;
+}
+.variablelist td:first-child
+{
+ vertical-align: top;
+}
+
+div.gallery-float
+{
+ float: left;
+ padding: 10px;
+}
+div.gallery-float img
+{
+ border-style: none;
+}
+div.gallery-spacer
+{
+ clear: both;
+}
+
+a, a:visited
+{
+ text-decoration: none;
+ /* tango:sky blue 2 */
+ color: #3465a4;
+}
+a:hover
+{
+ text-decoration: underline;
+ /* tango:sky blue 1 */
+ color: #729fcf;
+}
+
+div.informaltable table
+{
+ border-collapse: separate;
+ border-spacing: 1em 0.3em;
+ border: none;
+}
+
+div.informaltable table td, div.informaltable table th
+{
+ vertical-align: top;
+}
+
+.function_type,
+.variable_type,
+.property_type,
+.signal_type,
+.parameter_name,
+.struct_member_name,
+.union_member_name,
+.define_keyword,
+.datatype_keyword,
+.typedef_keyword
+{
+ text-align: right;
+}
+
+/* dim non-primary columns */
+.c_punctuation,
+.function_type,
+.variable_type,
+.property_type,
+.signal_type,
+.define_keyword,
+.datatype_keyword,
+.typedef_keyword,
+.property_flags,
+.signal_flags,
+.parameter_annotations,
+.enum_member_annotations,
+.struct_member_annotations,
+.union_member_annotations
+{
+ color: #888a85;
+}
+
+.function_type a,
+.function_type a:visited,
+.function_type a:hover,
+.property_type a,
+.property_type a:visited,
+.property_type a:hover,
+.signal_type a,
+.signal_type a:visited,
+.signal_type a:hover,
+.signal_flags a,
+.signal_flags a:visited,
+.signal_flags a:hover
+{
+ color: #729fcf;
+}
+
+td p
+{
+ margin: 0.25em;
+}
+
+div.table table
+{
+ border-collapse: collapse;
+ border-spacing: 0px;
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+ /* tango:aluminium 3 */
+ border: solid 1px #babdb6;
+ padding: 3px;
+ vertical-align: top;
+}
+
+div.table table th
+{
+ /* tango:aluminium 2 */
+ background-color: #d3d7cf;
+}
+
+h4
+{
+ color: #555753;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+hr
+{
+ /* tango:aluminium 1 */
+ color: #d3d7cf;
+ background: #d3d7cf;
+ border: none 0px;
+ height: 1px;
+ clear: both;
+ margin: 2.0em 0em 2.0em 0em;
+}
+
+dl.toc dt
+{
+ padding-bottom: 0.25em;
+}
+
+dl.toc > dt
+{
+ padding-top: 0.25em;
+ padding-bottom: 0.25em;
+ font-weight: bold;
+}
+
+dl.toc > dl
+{
+ padding-bottom: 0.5em;
+}
+
+.parameter
+{
+ font-style: normal;
+}
+
+.footer
+{
+ padding-top: 3.5em;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ text-align: center;
+ font-size: 80%;
+}
+
+.informalfigure,
+.figure
+{
+ margin: 1em;
+}
+
+.informalexample,
+.example
+{
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.warning
+{
+ /* tango:orange 0/1 */
+ background: #ffeed9;
+ background: rgba(252, 175, 62, 0.1);
+ border-color: #ffb04f;
+ border-color: rgba(252, 175, 62, 0.2);
+}
+.note
+{
+ /* tango:chameleon 0/0.5 */
+ background: #d8ffb2;
+ background: rgba(138, 226, 52, 0.1);
+ border-color: #abf562;
+ border-color: rgba(138, 226, 52, 0.2);
+}
+div.blockquote
+{
+ border-color: #eeeeec;
+}
+.note, .warning, div.blockquote
+{
+ padding: 0.5em;
+ border-width: 1px;
+ border-style: solid;
+ margin: 2em;
+}
+.note p, .warning p
+{
+ margin: 0;
+}
+
+div.warning h3.title,
+div.note h3.title
+{
+ display: none;
+}
+
+p + div.section
+{
+ margin-top: 1em;
+}
+
+div.refnamediv,
+div.refsynopsisdiv,
+div.refsect1,
+div.refsect2,
+div.toc,
+div.section
+{
+ margin-bottom: 1em;
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+ float: right;
+ /* tango:aluminium 3 */
+ color: #babdb6;
+ font-size: 80%;
+ font-weight: normal;
+}
+
+.lineart
+{
+ color: #d3d7cf;
+ font-weight: normal;
+}
+
+.annotation
+{
+ /* tango:aluminium 5 */
+ color: #555753;
+ font-weight: normal;
+}
+
+.structfield
+{
+ font-style: normal;
+ font-weight: normal;
+}
+
+acronym,abbr
+{
+ border-bottom: 1px dotted gray;
+}
+
+/* code listings */
+
+.listing_code .programlisting .normal,
+.listing_code .programlisting .normal a,
+.listing_code .programlisting .number,
+.listing_code .programlisting .cbracket,
+.listing_code .programlisting .symbol { color: #555753; }
+.listing_code .programlisting .comment,
+.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .function,
+.listing_code .programlisting .function a,
+.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
+.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */
+.listing_code .programlisting .keyword,
+.listing_code .programlisting .usertype,
+.listing_code .programlisting .type,
+.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */
+
+.listing_frame {
+ /* tango:sky blue 1 */
+ border: solid 1px #729fcf;
+ border: solid 1px rgba(114, 159, 207, 0.2);
+ padding: 0px;
+}
+
+.listing_lines, .listing_code {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0.5em;
+}
+.listing_lines {
+ /* tango:sky blue 0.5 */
+ background: #a6c5e3;
+ background: rgba(114, 159, 207, 0.2);
+ /* tango:aluminium 6 */
+ color: #2e3436;
+}
+.listing_code {
+ /* tango:sky blue 0 */
+ background: #e6f3ff;
+ background: rgba(114, 159, 207, 0.1);
+}
+.listing_code .programlisting {
+ /* override from previous */
+ border: none 0px;
+ padding: 0px;
+ background: none;
+}
+.listing_lines pre, .listing_code pre {
+ margin: 0px;
+}
+
+@media screen {
+ /* these have a <sup> as a first child, but since there are no parent selectors
+ * we can't use that. */
+ a.footnote
+ {
+ position: relative;
+ top: 0em ! important;
+ }
+ /* this is needed so that the local anchors are displayed below the naviagtion */
+ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+ {
+ display: inline-block;
+ position: relative;
+ top:-5em;
+ }
+ /* this seems to be a bug in the xsl style sheets when generating indexes */
+ div.index div.index
+ {
+ top: 0em;
+ }
+ /* make space for the fixed navigation bar and add space at the bottom so that
+ * link targets appear somewhat close to top
+ */
+ body
+ {
+ padding-top: 2.5em;
+ padding-bottom: 500px;
+ max-width: 60em;
+ }
+ p
+ {
+ max-width: 60em;
+ }
+ /* style and size the navigation bar */
+ table.navigation#top
+ {
+ position: fixed;
+ background: #e2e2e2;
+ border-bottom: solid 1px #babdb6;
+ border-spacing: 5px;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ z-index: 10;
+ }
+ table.navigation#top td
+ {
+ padding-left: 6px;
+ padding-right: 6px;
+ }
+ .navigation a, .navigation a:visited
+ {
+ /* tango:sky blue 3 */
+ color: #204a87;
+ }
+ .navigation a:hover
+ {
+ /* tango:sky blue 2 */
+ color: #3465a4;
+ }
+ td.shortcuts
+ {
+ /* tango:sky blue 2 */
+ color: #3465a4;
+ font-size: 80%;
+ white-space: nowrap;
+ }
+ td.shortcuts .dim
+ {
+ color: #babdb6;
+ }
+ .navigation .title
+ {
+ font-size: 80%;
+ max-width: none;
+ margin: 0px;
+ font-weight: normal;
+ }
+}
+@media screen and (min-width: 60em) {
+ /* screen larger than 60em */
+ body { margin: auto; }
+}
+@media screen and (max-width: 60em) {
+ /* screen less than 60em */
+ #nav_hierarchy { display: none; }
+ #nav_interfaces { display: none; }
+ #nav_prerequisites { display: none; }
+ #nav_derived_interfaces { display: none; }
+ #nav_implementations { display: none; }
+ #nav_child_properties { display: none; }
+ #nav_style_properties { display: none; }
+ #nav_index { display: none; }
+ #nav_glossary { display: none; }
+ .gallery_image { display: none; }
+ .property_flags { display: none; }
+ .signal_flags { display: none; }
+ .parameter_annotations { display: none; }
+ .enum_member_annotations { display: none; }
+ .struct_member_annotations { display: none; }
+ .union_member_annotations { display: none; }
+ /* now that a column is hidden, optimize space */
+ col.parameters_name { width: auto; }
+ col.parameters_description { width: auto; }
+ col.struct_members_name { width: auto; }
+ col.struct_members_description { width: auto; }
+ col.enum_members_name { width: auto; }
+ col.enum_members_description { width: auto; }
+ col.union_members_name { width: auto; }
+ col.union_members_description { width: auto; }
+ .listing_lines { display: none; }
+}
+@media print {
+ table.navigation {
+ visibility: collapse;
+ display: none;
+ }
+ div.titlepage table.navigation {
+ visibility: visible;
+ display: table;
+ background: #e2e2e2;
+ border: solid 1px #babdb6;
+ margin-top: 0;
+ margin-bottom: 0;
+ top: 0;
+ left: 0;
+ height: 3em;
+ }
+}
+
diff --git a/docs/api/tmpl/base/app.sgml b/docs/api/tmpl/base/app.sgml
deleted file mode 100644
index b725a3b7..00000000
--- a/docs/api/tmpl/base/app.sgml
+++ /dev/null
@@ -1,1112 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto-engine independent application support function.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto-engine application support function used by xmlsec command line utility.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataEcdsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataEcdsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataGost2001Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGost2001GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataGostR3410_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGostR3410_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataGostR3410_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGostR3410_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataX509Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataX509GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataRawX509CertId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataRawX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecX509StoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecX509StoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformDsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformDsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEcdsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEcdsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEcdsaSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEcdsaSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEcdsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEcdsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEcdsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEcdsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEcdsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEcdsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGost2001GostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGost2001GostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGostR3410_2012GostR3411_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGostR3410_2012GostR3411_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaPkcs1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaPkcs1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformRsaOaepId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRsaOaepGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGostR3411_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGostR3411_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformGostR3411_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformGostR3411_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/base64.sgml b/docs/api/tmpl/base/base64.sgml
deleted file mode 100644
index a6d4ebfa..00000000
--- a/docs/api/tmpl/base/base64.sgml
+++ /dev/null
@@ -1,129 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-base64
-
-<!-- ##### SECTION Short_Description ##### -->
-Base64 encoding/decoding functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Base64 encoding/decoding functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_BASE64_LINESIZE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecBase64GetDefaultLineSize ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64SetDefaultLineSize ##### -->
-<para>
-
-</para>
-
-@columns:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxCreate ##### -->
-<para>
-
-</para>
-
-@encode:
-@columns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxDestroy ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxInitialize ##### -->
-<para>
-
-</para>
-
-@ctx:
-@encode:
-@columns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxFinalize ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxUpdate ##### -->
-<para>
-
-</para>
-
-@ctx:
-@in:
-@inSize:
-@out:
-@outSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64CtxFinal ##### -->
-<para>
-
-</para>
-
-@ctx:
-@out:
-@outSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64Encode ##### -->
-<para>
-
-</para>
-
-@buf:
-@len:
-@columns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBase64Decode ##### -->
-<para>
-
-</para>
-
-@str:
-@buf:
-@len:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/bn.sgml b/docs/api/tmpl/base/bn.sgml
deleted file mode 100644
index 8b000f2b..00000000
--- a/docs/api/tmpl/base/bn.sgml
+++ /dev/null
@@ -1,263 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-bn
-
-<!-- ##### SECTION Short_Description ##### -->
-Big numbers support functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Big numbers support functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### ENUM xmlSecBnFormat ##### -->
-<para>
-
-</para>
-
-@xmlSecBnBase64:
-@xmlSecBnHex:
-@xmlSecBnDec:
-
-<!-- ##### FUNCTION xmlSecBnCreate ##### -->
-<para>
-
-</para>
-
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnDestroy ##### -->
-<para>
-
-</para>
-
-@bn:
-
-
-<!-- ##### FUNCTION xmlSecBnInitialize ##### -->
-<para>
-
-</para>
-
-@bn:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnFinalize ##### -->
-<para>
-
-</para>
-
-@bn:
-
-
-<!-- ##### FUNCTION xmlSecBnGetData ##### -->
-<para>
-
-</para>
-
-@bn:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnSetData ##### -->
-<para>
-
-</para>
-
-@bn:
-@data:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnGetSize ##### -->
-<para>
-
-</para>
-
-@bn:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnZero ##### -->
-<para>
-
-</para>
-
-@bn:
-
-
-<!-- ##### FUNCTION xmlSecBnFromString ##### -->
-<para>
-
-</para>
-
-@bn:
-@str:
-@base:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnToString ##### -->
-<para>
-
-</para>
-
-@bn:
-@base:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnFromHexString ##### -->
-<para>
-
-</para>
-
-@bn:
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnToHexString ##### -->
-<para>
-
-</para>
-
-@bn:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnFromDecString ##### -->
-<para>
-
-</para>
-
-@bn:
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnToDecString ##### -->
-<para>
-
-</para>
-
-@bn:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnMul ##### -->
-<para>
-
-</para>
-
-@bn:
-@multiplier:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnDiv ##### -->
-<para>
-
-</para>
-
-@bn:
-@divider:
-@mod:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnAdd ##### -->
-<para>
-
-</para>
-
-@bn:
-@delta:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnReverse ##### -->
-<para>
-
-</para>
-
-@bn:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnCompare ##### -->
-<para>
-
-</para>
-
-@bn:
-@data:
-@dataSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnCompareReverse ##### -->
-<para>
-
-</para>
-
-@bn:
-@data:
-@dataSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnGetNodeValue ##### -->
-<para>
-
-</para>
-
-@bn:
-@cur:
-@format:
-@reverse:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnSetNodeValue ##### -->
-<para>
-
-</para>
-
-@bn:
-@cur:
-@format:
-@reverse:
-@addLineBreaks:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBnBlobSetNodeValue ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@cur:
-@format:
-@reverse:
-@addLineBreaks:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/buffer.sgml b/docs/api/tmpl/base/buffer.sgml
deleted file mode 100644
index 33a89bdb..00000000
--- a/docs/api/tmpl/base/buffer.sgml
+++ /dev/null
@@ -1,232 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-buffer
-
-<!-- ##### SECTION Short_Description ##### -->
-Binary buffer implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Binary buffer implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### ENUM xmlSecAllocMode ##### -->
-<para>
-
-</para>
-
-@xmlSecAllocModeExact:
-@xmlSecAllocModeDouble:
-
-<!-- ##### STRUCT xmlSecBuffer ##### -->
-<para>
-
-</para>
-
-@data:
-@size:
-@maxSize:
-@allocMode:
-
-<!-- ##### FUNCTION xmlSecBufferSetDefaultAllocMode ##### -->
-<para>
-
-</para>
-
-@defAllocMode:
-@defInitialSize:
-
-
-<!-- ##### FUNCTION xmlSecBufferCreate ##### -->
-<para>
-
-</para>
-
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferDestroy ##### -->
-<para>
-
-</para>
-
-@buf:
-
-
-<!-- ##### FUNCTION xmlSecBufferInitialize ##### -->
-<para>
-
-</para>
-
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferFinalize ##### -->
-<para>
-
-</para>
-
-@buf:
-
-
-<!-- ##### FUNCTION xmlSecBufferGetData ##### -->
-<para>
-
-</para>
-
-@buf:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferSetData ##### -->
-<para>
-
-</para>
-
-@buf:
-@data:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferGetSize ##### -->
-<para>
-
-</para>
-
-@buf:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferSetSize ##### -->
-<para>
-
-</para>
-
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferGetMaxSize ##### -->
-<para>
-
-</para>
-
-@buf:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferSetMaxSize ##### -->
-<para>
-
-</para>
-
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferEmpty ##### -->
-<para>
-
-</para>
-
-@buf:
-
-
-<!-- ##### FUNCTION xmlSecBufferAppend ##### -->
-<para>
-
-</para>
-
-@buf:
-@data:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferPrepend ##### -->
-<para>
-
-</para>
-
-@buf:
-@data:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferRemoveHead ##### -->
-<para>
-
-</para>
-
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferRemoveTail ##### -->
-<para>
-
-</para>
-
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferReadFile ##### -->
-<para>
-
-</para>
-
-@buf:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferBase64NodeContentRead ##### -->
-<para>
-
-</para>
-
-@buf:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferBase64NodeContentWrite ##### -->
-<para>
-
-</para>
-
-@buf:
-@node:
-@columns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecBufferCreateOutputBuffer ##### -->
-<para>
-
-</para>
-
-@buf:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/dl.sgml b/docs/api/tmpl/base/dl.sgml
deleted file mode 100644
index 88ca8203..00000000
--- a/docs/api/tmpl/base/dl.sgml
+++ /dev/null
@@ -1,94 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-dl
-
-<!-- ##### SECTION Short_Description ##### -->
-Dynamic crypto-engine library loading support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Dynamic crypto-engine library loading support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ##### -->
-<para>
-
-</para>
-
-@functions:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLLoadLibrary ##### -->
-<para>
-
-</para>
-
-@crypto:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLGetLibraryFunctions ##### -->
-<para>
-
-</para>
-
-@crypto:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLUnloadLibrary ##### -->
-<para>
-
-</para>
-
-@crypto:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLSetFunctions ##### -->
-<para>
-
-</para>
-
-@functions:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCryptoDLGetFunctions ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/errors.sgml b/docs/api/tmpl/base/errors.sgml
deleted file mode 100644
index 185ae22a..00000000
--- a/docs/api/tmpl/base/errors.sgml
+++ /dev/null
@@ -1,490 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-errors
-
-<!-- ##### SECTION Short_Description ##### -->
-Error/log messages support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Error/log messages support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_XMLSEC_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_MALLOC_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_STRDUP_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CRYPTO_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_XML_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_XSLT_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_IO_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_DISABLED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_NOT_IMPLEMENTED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_SIZE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_DATA ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_RESULT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TYPE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_OPERATION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_STATUS ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_FORMAT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_DATA_NOT_MATCH ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE_CONTENT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_UNEXPECTED_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_NODE_NOT_FOUND ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TRANSFORM ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_URI_TYPE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_TRANSFORM_DISABLED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_KEY_DATA ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_KEY_NOT_FOUND ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_KEYDATA_DISABLED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_VERIFY_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_NOT_FOUND ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_REVOKED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_ISSUER_FAILED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_NOT_YET_VALID ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_CERT_HAS_EXPIRED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_DSIG_NO_REFERENCES ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_R_ASSERTION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_MAX_NUMBER ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecErrorsCallback ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-
-
-<!-- ##### FUNCTION xmlSecErrorsInit ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecErrorsShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecErrorsSetCallback ##### -->
-<para>
-
-</para>
-
-@callback:
-
-
-<!-- ##### FUNCTION xmlSecErrorsDefaultCallback ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-
-
-<!-- ##### FUNCTION xmlSecErrorsDefaultCallbackEnableOutput ##### -->
-<para>
-
-</para>
-
-@enabled:
-
-
-<!-- ##### FUNCTION xmlSecErrorsGetCode ##### -->
-<para>
-
-</para>
-
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecErrorsGetMsg ##### -->
-<para>
-
-</para>
-
-@pos:
-@Returns:
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_HERE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecErrorsSafeString ##### -->
-<para>
-
-</para>
-
-@str:
-
-
-<!-- ##### MACRO XMLSEC_ERRORS_NO_MESSAGE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecError ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-@...:
-
-
-<!-- ##### MACRO xmlSecAssert ##### -->
-<para>
-
-</para>
-
-@p:
-
-
-<!-- ##### MACRO xmlSecAssert2 ##### -->
-<para>
-
-</para>
-
-@p:
-@ret:
-
-
diff --git a/docs/api/tmpl/base/exports.sgml b/docs/api/tmpl/base/exports.sgml
deleted file mode 100644
index f4d396d5..00000000
--- a/docs/api/tmpl/base/exports.sgml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-exports
-
-<!-- ##### SECTION Short_Description ##### -->
-Black magic to export functions on Windows.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Black magic to export functions on Windows.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO extern ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/docs/api/tmpl/base/io.sgml b/docs/api/tmpl/base/io.sgml
deleted file mode 100644
index 494ae00d..00000000
--- a/docs/api/tmpl/base/io.sgml
+++ /dev/null
@@ -1,103 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-io
-
-<!-- ##### SECTION Short_Description ##### -->
-Input/output support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Input/output support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecIOInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecIOShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecIOCleanupCallbacks ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecIORegisterDefaultCallbacks ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecIORegisterCallbacks ##### -->
-<para>
-
-</para>
-
-@matchFunc:
-@openFunc:
-@readFunc:
-@closeFunc:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformInputURIId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformInputURIGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformInputURIOpen ##### -->
-<para>
-
-</para>
-
-@transform:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformInputURIClose ##### -->
-<para>
-
-</para>
-
-@transform:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/keyinfo.sgml b/docs/api/tmpl/base/keyinfo.sgml
deleted file mode 100644
index e6ea3916..00000000
--- a/docs/api/tmpl/base/keyinfo.sgml
+++ /dev/null
@@ -1,312 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keyinfo
-
-<!-- ##### SECTION Short_Description ##### -->
-&lt;dsig:KeyInfo/&gt; node parser.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-&lt;dsig:KeyInfo/&gt; node parser.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoNodeRead ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@key:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoNodeWrite ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@key:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### ENUM xmlSecKeyInfoMode ##### -->
-<para>
-
-</para>
-
-@xmlSecKeyInfoModeRead:
-@xmlSecKeyInfoModeWrite:
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### STRUCT xmlSecKeyInfoCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@flags:
-@flags2:
-@keysMngr:
-@mode:
-@enabledKeyData:
-@base64LineSize:
-@retrievalMethodCtx:
-@maxRetrievalMethodLevel:
-@encCtx:
-@maxEncryptedKeyLevel:
-@certsVerificationTime:
-@certsVerificationDepth:
-@pgpReserved:
-@curRetrievalMethodLevel:
-@curEncryptedKeyLevel:
-@keyReq:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxCreate ##### -->
-<para>
-
-</para>
-
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxDestroy ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxInitialize ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxFinalize ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxReset ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxCopyUserPref ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxCreateEncCtx ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyInfoCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@keyInfoCtx:
-@output:
-
-
-<!-- ##### MACRO xmlSecKeyDataNameId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataNameGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataValueId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataValueGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataRetrievalMethodId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataRetrievalMethodGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataEncryptedKeyId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataEncryptedKeyGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/keys.sgml b/docs/api/tmpl/base/keys.sgml
deleted file mode 100644
index 7bd74cfa..00000000
--- a/docs/api/tmpl/base/keys.sgml
+++ /dev/null
@@ -1,521 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keys
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto key object definition.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto key object definition.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### TYPEDEF xmlSecKeyUsage ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecKeyUsageSign ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyUsageVerify ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyUsageEncrypt ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyUsageDecrypt ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyUsageKeyExchange ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyUsageAny ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithInitialize ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithFinalize ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithReset ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithCopy ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithCreate ##### -->
-<para>
-
-</para>
-
-@application:
-@identifier:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithDuplicate ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithDestroy ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithSet ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-@application:
-@identifier:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithDebugDump ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@keyUseWith:
-@output:
-
-
-<!-- ##### STRUCT xmlSecKeyUseWith ##### -->
-<para>
-
-</para>
-
-@application:
-@identifier:
-@reserved1:
-@reserved2:
-
-<!-- ##### MACRO xmlSecKeyUseWithPtrListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyUseWithPtrListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeyReq ##### -->
-<para>
-
-</para>
-
-@keyId:
-@keyType:
-@keyUsage:
-@keyBitsSize:
-@keyUseWithList:
-@reserved1:
-@reserved2:
-
-<!-- ##### FUNCTION xmlSecKeyReqInitialize ##### -->
-<para>
-
-</para>
-
-@keyReq:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqFinalize ##### -->
-<para>
-
-</para>
-
-@keyReq:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqReset ##### -->
-<para>
-
-</para>
-
-@keyReq:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqCopy ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqMatchKey ##### -->
-<para>
-
-</para>
-
-@keyReq:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqMatchKeyValue ##### -->
-<para>
-
-</para>
-
-@keyReq:
-@value:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqDebugDump ##### -->
-<para>
-
-</para>
-
-@keyReq:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyReqDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@keyReq:
-@output:
-
-
-<!-- ##### STRUCT xmlSecKey ##### -->
-<para>
-
-</para>
-
-@name:
-@value:
-@dataList:
-@usage:
-@notValidBefore:
-@notValidAfter:
-
-<!-- ##### FUNCTION xmlSecKeyCreate ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDestroy ##### -->
-<para>
-
-</para>
-
-@key:
-
-
-<!-- ##### FUNCTION xmlSecKeyEmpty ##### -->
-<para>
-
-</para>
-
-@key:
-
-
-<!-- ##### FUNCTION xmlSecKeyDuplicate ##### -->
-<para>
-
-</para>
-
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyCopy ##### -->
-<para>
-
-</para>
-
-@keyDst:
-@keySrc:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyGetName ##### -->
-<para>
-
-</para>
-
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeySetName ##### -->
-<para>
-
-</para>
-
-@key:
-@name:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyGetType ##### -->
-<para>
-
-</para>
-
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyGetValue ##### -->
-<para>
-
-</para>
-
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeySetValue ##### -->
-<para>
-
-</para>
-
-@key:
-@value:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyGetData ##### -->
-<para>
-
-</para>
-
-@key:
-@dataId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyEnsureData ##### -->
-<para>
-
-</para>
-
-@key:
-@dataId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyAdoptData ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDebugDump ##### -->
-<para>
-
-</para>
-
-@key:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@key:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyGenerate ##### -->
-<para>
-
-</para>
-
-@dataId:
-@sizeBits:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyGenerateByName ##### -->
-<para>
-
-</para>
-
-@name:
-@sizeBits:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyMatch ##### -->
-<para>
-
-</para>
-
-@key:
-@name:
-@keyReq:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReadBuffer ##### -->
-<para>
-
-</para>
-
-@dataId:
-@buffer:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReadBinaryFile ##### -->
-<para>
-
-</para>
-
-@dataId:
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyReadMemory ##### -->
-<para>
-
-</para>
-
-@dataId:
-@data:
-@dataSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyIsValid ##### -->
-<para>
-
-</para>
-
-@key:
-
-
-<!-- ##### MACRO xmlSecKeyCheckId ##### -->
-<para>
-
-</para>
-
-@key:
-@keyId:
-
-
-<!-- ##### MACRO xmlSecKeyPtrListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyPtrListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/keysdata.sgml b/docs/api/tmpl/base/keysdata.sgml
deleted file mode 100644
index 32605213..00000000
--- a/docs/api/tmpl/base/keysdata.sgml
+++ /dev/null
@@ -1,930 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keysdata
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto key data object definition.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto key data object definition.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### TYPEDEF xmlSecKeyDataUsage ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNodeRead ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNodeWrite ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNodeRead ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNodeWrite ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNodeXml ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNodeBin ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageAny ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyInfoNode ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageKeyValueNode ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataUsageRetrievalMethodNode ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF xmlSecKeyDataType ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeNone ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypePublic ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypePrivate ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeSymmetric ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeSession ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypePermanent ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeTrusted ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecKeyDataTypeAny ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### ENUM xmlSecKeyDataFormat ##### -->
-<para>
-
-</para>
-
-@xmlSecKeyDataFormatUnknown:
-@xmlSecKeyDataFormatBinary:
-@xmlSecKeyDataFormatPem:
-@xmlSecKeyDataFormatDer:
-@xmlSecKeyDataFormatPkcs8Pem:
-@xmlSecKeyDataFormatPkcs8Der:
-@xmlSecKeyDataFormatPkcs12:
-@xmlSecKeyDataFormatCertPem:
-@xmlSecKeyDataFormatCertDer:
-
-<!-- ##### FUNCTION xmlSecKeyDataIdsGet ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdsInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdsShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdsRegisterDefault ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdsRegister ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeyData ##### -->
-<para>
-
-</para>
-
-@id:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecKeyDataCreate ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDuplicate ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDestroy ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGenerate ##### -->
-<para>
-
-</para>
-
-@data:
-@sizeBits:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGetType ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGetSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataGetIdentifier ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDebugDump ##### -->
-<para>
-
-</para>
-
-@data:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@data:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataXmlRead ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataXmlWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinRead ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataGetName ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### MACRO xmlSecKeyDataIsValid ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### MACRO xmlSecKeyDataCheckId ##### -->
-<para>
-
-</para>
-
-@data:
-@dataId:
-
-
-<!-- ##### MACRO xmlSecKeyDataCheckUsage ##### -->
-<para>
-
-</para>
-
-@data:
-@usg:
-
-
-<!-- ##### MACRO xmlSecKeyDataCheckSize ##### -->
-<para>
-
-</para>
-
-@data:
-@size:
-
-
-<!-- ##### MACRO xmlSecKeyDataIdUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataInitMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataDuplicateMethod ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataFinalizeMethod ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataXmlReadMethod ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataXmlWriteMethod ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataBinReadMethod ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataBinWriteMethod ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataGenerateMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@sizeBits:
-@type:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataGetTypeMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataGetSizeMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataGetIdentifierMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataDebugDumpMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@output:
-
-
-<!-- ##### STRUCT xmlSecKeyDataKlass ##### -->
-<para>
-
-</para>
-
-@klassSize:
-@objSize:
-@name:
-@usage:
-@href:
-@dataNodeName:
-@dataNodeNs:
-@initialize:
-@duplicate:
-@finalize:
-@generate:
-@getType:
-@getSize:
-@getIdentifier:
-@xmlRead:
-@xmlWrite:
-@binRead:
-@binWrite:
-@debugDump:
-@debugXmlDump:
-@reserved0:
-@reserved1:
-
-<!-- ##### MACRO xmlSecKeyDataKlassGetName ##### -->
-<para>
-
-</para>
-
-@klass:
-
-
-<!-- ##### MACRO xmlSecKeyDataListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyDataIdListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListFind ##### -->
-<para>
-
-</para>
-
-@list:
-@dataId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListFindByNode ##### -->
-<para>
-
-</para>
-
-@list:
-@nodeName:
-@nodeNs:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListFindByHref ##### -->
-<para>
-
-</para>
-
-@list:
-@href:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListFindByName ##### -->
-<para>
-
-</para>
-
-@list:
-@name:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListDebugDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataIdListDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### MACRO xmlSecKeyDataBinarySize ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueInitialize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDuplicate ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueFinalize ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueXmlRead ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueXmlWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@node:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueBinRead ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueBinWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@key:
-@buf:
-@bufSize:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDebugDump ##### -->
-<para>
-
-</para>
-
-@data:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@data:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueGetSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueGetBuffer ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataBinaryValueSetBuffer ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeyDataStore ##### -->
-<para>
-
-</para>
-
-@id:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecKeyDataStoreCreate ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyDataStoreDestroy ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### MACRO xmlSecKeyDataStoreGetName ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### MACRO xmlSecKeyDataStoreIsValid ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### MACRO xmlSecKeyDataStoreCheckId ##### -->
-<para>
-
-</para>
-
-@store:
-@storeId:
-
-
-<!-- ##### MACRO xmlSecKeyDataStoreCheckSize ##### -->
-<para>
-
-</para>
-
-@store:
-@size:
-
-
-<!-- ##### MACRO xmlSecKeyDataStoreIdUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataStoreInitializeMethod ##### -->
-<para>
-
-</para>
-
-@store:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyDataStoreFinalizeMethod ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### STRUCT xmlSecKeyDataStoreKlass ##### -->
-<para>
-
-</para>
-
-@klassSize:
-@objSize:
-@name:
-@initialize:
-@finalize:
-@reserved0:
-@reserved1:
-
-<!-- ##### MACRO xmlSecKeyDataStoreKlassGetName ##### -->
-<para>
-
-</para>
-
-@klass:
-
-
-<!-- ##### MACRO xmlSecKeyDataStorePtrListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecKeyDataStorePtrListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/keysmngr.sgml b/docs/api/tmpl/base/keysmngr.sgml
deleted file mode 100644
index 6f55ffa9..00000000
--- a/docs/api/tmpl/base/keysmngr.sgml
+++ /dev/null
@@ -1,303 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keysmngr
-
-<!-- ##### SECTION Short_Description ##### -->
-Keys manager object support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Keys manager object support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrCreate ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrDestroy ##### -->
-<para>
-
-</para>
-
-@mngr:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrFindKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@name:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrAdoptKeysStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@store:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrGetKeysStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrAdoptDataStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@store:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeysMngrGetDataStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@id:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecGetKeyCallback ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeysMngr ##### -->
-<para>
-
-</para>
-
-@keysStore:
-@storesList:
-@getKey:
-
-<!-- ##### FUNCTION xmlSecKeysMngrGetKey ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeyStore ##### -->
-<para>
-
-</para>
-
-@id:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecKeyStoreCreate ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecKeyStoreDestroy ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### FUNCTION xmlSecKeyStoreFindKey ##### -->
-<para>
-
-</para>
-
-@store:
-@name:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecKeyStoreGetName ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### MACRO xmlSecKeyStoreIsValid ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### MACRO xmlSecKeyStoreCheckId ##### -->
-<para>
-
-</para>
-
-@store:
-@storeId:
-
-
-<!-- ##### MACRO xmlSecKeyStoreCheckSize ##### -->
-<para>
-
-</para>
-
-@store:
-@size:
-
-
-<!-- ##### MACRO xmlSecKeyStoreIdUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyStoreInitializeMethod ##### -->
-<para>
-
-</para>
-
-@store:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyStoreFinalizeMethod ##### -->
-<para>
-
-</para>
-
-@store:
-
-
-<!-- ##### USER_FUNCTION xmlSecKeyStoreFindKeyMethod ##### -->
-<para>
-
-</para>
-
-@store:
-@name:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecKeyStoreKlass ##### -->
-<para>
-
-</para>
-
-@klassSize:
-@objSize:
-@name:
-@initialize:
-@finalize:
-@findKey:
-@reserved0:
-@reserved1:
-
-<!-- ##### MACRO xmlSecKeyStoreKlassGetName ##### -->
-<para>
-
-</para>
-
-@klass:
-
-
-<!-- ##### MACRO xmlSecSimpleKeysStoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecSimpleKeysStoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecSimpleKeysStoreAdoptKey ##### -->
-<para>
-
-</para>
-
-@store:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecSimpleKeysStoreLoad ##### -->
-<para>
-
-</para>
-
-@store:
-@uri:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecSimpleKeysStoreSave ##### -->
-<para>
-
-</para>
-
-@store:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecSimpleKeysStoreGetKeys ##### -->
-<para>
-
-</para>
-
-@store:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/list.sgml b/docs/api/tmpl/base/list.sgml
deleted file mode 100644
index 3d62e65a..00000000
--- a/docs/api/tmpl/base/list.sgml
+++ /dev/null
@@ -1,275 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-list
-
-<!-- ##### SECTION Short_Description ##### -->
-Generic list structure implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Generic list structure implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### STRUCT xmlSecPtrList ##### -->
-<para>
-
-</para>
-
-@id:
-@data:
-@use:
-@max:
-@allocMode:
-
-<!-- ##### FUNCTION xmlSecPtrListSetDefaultAllocMode ##### -->
-<para>
-
-</para>
-
-@defAllocMode:
-@defInitialSize:
-
-
-<!-- ##### FUNCTION xmlSecPtrListInitialize ##### -->
-<para>
-
-</para>
-
-@list:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListFinalize ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### FUNCTION xmlSecPtrListCreate ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListDestroy ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### FUNCTION xmlSecPtrListEmpty ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### FUNCTION xmlSecPtrListCopy ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListDuplicate ##### -->
-<para>
-
-</para>
-
-@list:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListGetSize ##### -->
-<para>
-
-</para>
-
-@list:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListGetItem ##### -->
-<para>
-
-</para>
-
-@list:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListAdd ##### -->
-<para>
-
-</para>
-
-@list:
-@item:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListSet ##### -->
-<para>
-
-</para>
-
-@list:
-@item:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListRemove ##### -->
-<para>
-
-</para>
-
-@list:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListRemoveAndReturn ##### -->
-<para>
-
-</para>
-
-@list:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPtrListDebugDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecPtrListDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### MACRO xmlSecPtrListGetName ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### MACRO xmlSecPtrListIsValid ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### MACRO xmlSecPtrListCheckId ##### -->
-<para>
-
-</para>
-
-@list:
-@dataId:
-
-
-<!-- ##### MACRO xmlSecPtrListIdUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecPtrDuplicateItemMethod ##### -->
-<para>
-
-</para>
-
-@ptr:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecPtrDestroyItemMethod ##### -->
-<para>
-
-</para>
-
-@ptr:
-
-
-<!-- ##### USER_FUNCTION xmlSecPtrDebugDumpItemMethod ##### -->
-<para>
-
-</para>
-
-@ptr:
-@output:
-
-
-<!-- ##### STRUCT xmlSecPtrListKlass ##### -->
-<para>
-
-</para>
-
-@name:
-@duplicateItem:
-@destroyItem:
-@debugDumpItem:
-@debugXmlDumpItem:
-
-<!-- ##### MACRO xmlSecPtrListKlassGetName ##### -->
-<para>
-
-</para>
-
-@klass:
-
-
-<!-- ##### MACRO xmlSecStringListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecStringListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/membuf.sgml b/docs/api/tmpl/base/membuf.sgml
deleted file mode 100644
index 873eb5a7..00000000
--- a/docs/api/tmpl/base/membuf.sgml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-membuf
-
-<!-- ##### SECTION Short_Description ##### -->
-Memory buffer transform implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Memory buffer transform implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecTransformMemBufId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformMemBufGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformMemBufGetBuffer ##### -->
-<para>
-
-</para>
-
-@transform:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/nodeset.sgml b/docs/api/tmpl/base/nodeset.sgml
deleted file mode 100644
index c31c4ffd..00000000
--- a/docs/api/tmpl/base/nodeset.sgml
+++ /dev/null
@@ -1,172 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-nodeset
-
-<!-- ##### SECTION Short_Description ##### -->
-Nodeset object implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Nodeset object implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### ENUM xmlSecNodeSetType ##### -->
-<para>
-
-</para>
-
-@xmlSecNodeSetNormal:
-@xmlSecNodeSetInvert:
-@xmlSecNodeSetTree:
-@xmlSecNodeSetTreeWithoutComments:
-@xmlSecNodeSetTreeInvert:
-@xmlSecNodeSetTreeWithoutCommentsInvert:
-@xmlSecNodeSetList:
-
-<!-- ##### ENUM xmlSecNodeSetOp ##### -->
-<para>
-
-</para>
-
-@xmlSecNodeSetIntersection:
-@xmlSecNodeSetSubtraction:
-@xmlSecNodeSetUnion:
-
-<!-- ##### STRUCT xmlSecNodeSet ##### -->
-<para>
-
-</para>
-
-@nodes:
-@doc:
-@destroyDoc:
-@type:
-@op:
-@next:
-@prev:
-@children:
-
-<!-- ##### USER_FUNCTION xmlSecNodeSetWalkCallback ##### -->
-<para>
-
-</para>
-
-@nset:
-@cur:
-@parent:
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetCreate ##### -->
-<para>
-
-</para>
-
-@doc:
-@nodes:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetDestroy ##### -->
-<para>
-
-</para>
-
-@nset:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetDocDestroy ##### -->
-<para>
-
-</para>
-
-@nset:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetContains ##### -->
-<para>
-
-</para>
-
-@nset:
-@node:
-@parent:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetAdd ##### -->
-<para>
-
-</para>
-
-@nset:
-@newNSet:
-@op:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetAddList ##### -->
-<para>
-
-</para>
-
-@nset:
-@newNSet:
-@op:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetGetChildren ##### -->
-<para>
-
-</para>
-
-@doc:
-@parent:
-@withComments:
-@invert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetWalk ##### -->
-<para>
-
-</para>
-
-@nset:
-@walkFunc:
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetDumpTextNodes ##### -->
-<para>
-
-</para>
-
-@nset:
-@out:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeSetDebugDump ##### -->
-<para>
-
-</para>
-
-@nset:
-@output:
-
-
diff --git a/docs/api/tmpl/base/parser.sgml b/docs/api/tmpl/base/parser.sgml
deleted file mode 100644
index dd783cde..00000000
--- a/docs/api/tmpl/base/parser.sgml
+++ /dev/null
@@ -1,72 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-parser
-
-<!-- ##### SECTION Short_Description ##### -->
-Parser transform implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Parser transform implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecParseFile ##### -->
-<para>
-
-</para>
-
-@filename:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecParseMemory ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@recovery:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecParseMemoryExt ##### -->
-<para>
-
-</para>
-
-@prefix:
-@prefixSize:
-@buffer:
-@bufferSize:
-@postfix:
-@postfixSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformXmlParserId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformXmlParserGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/private.sgml b/docs/api/tmpl/base/private.sgml
deleted file mode 100644
index 3ffde0a6..00000000
--- a/docs/api/tmpl/base/private.sgml
+++ /dev/null
@@ -1,288 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-private
-
-<!-- ##### SECTION Short_Description ##### -->
-Private header for building xmlsec-crypto-engine libraries.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Private header for building xmlsec-crypto-engine libraries.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoInitMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoShutdownMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoKeysMngrInitMethod ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoKeyDataGetKlassMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoKeyDataStoreGetKlassMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoTransformGetKlassMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppInitMethod ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppShutdownMethod ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeysMngrCertLoadMethod ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeysMngrCertLoadMemoryMethod ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyLoadMethod ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyLoadMemoryMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppPkcs12LoadMethod ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppPkcs12LoadMemoryMethod ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyCertLoadMethod ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecCryptoAppKeyCertLoadMemoryMethod ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecCryptoDLFunctions ##### -->
-<para>
-
-</para>
-
-@cryptoInit:
-@cryptoShutdown:
-@cryptoKeysMngrInit:
-@keyDataAesGetKlass:
-@keyDataDesGetKlass:
-@keyDataDsaGetKlass:
-@keyDataEcdsaGetKlass:
-@keyDataGost2001GetKlass:
-@keyDataGostR3410_2012_256GetKlass:
-@keyDataGostR3410_2012_512GetKlass:
-@keyDataHmacGetKlass:
-@keyDataRsaGetKlass:
-@keyDataX509GetKlass:
-@keyDataRawX509CertGetKlass:
-@x509StoreGetKlass:
-@transformAes128CbcGetKlass:
-@transformAes192CbcGetKlass:
-@transformAes256CbcGetKlass:
-@transformKWAes128GetKlass:
-@transformKWAes192GetKlass:
-@transformKWAes256GetKlass:
-@transformDes3CbcGetKlass:
-@transformKWDes3GetKlass:
-@transformDsaSha1GetKlass:
-@transformDsaSha256GetKlass:
-@transformEcdsaSha1GetKlass:
-@transformEcdsaSha224GetKlass:
-@transformEcdsaSha256GetKlass:
-@transformEcdsaSha384GetKlass:
-@transformEcdsaSha512GetKlass:
-@transformGost2001GostR3411_94GetKlass:
-@transformGostR3410_2012GostR3411_2012_256GetKlass:
-@transformGostR3410_2012GostR3411_2012_512GetKlass:
-@transformHmacMd5GetKlass:
-@transformHmacRipemd160GetKlass:
-@transformHmacSha1GetKlass:
-@transformHmacSha224GetKlass:
-@transformHmacSha256GetKlass:
-@transformHmacSha384GetKlass:
-@transformHmacSha512GetKlass:
-@transformMd5GetKlass:
-@transformRipemd160GetKlass:
-@transformRsaMd5GetKlass:
-@transformRsaRipemd160GetKlass:
-@transformRsaSha1GetKlass:
-@transformRsaSha224GetKlass:
-@transformRsaSha256GetKlass:
-@transformRsaSha384GetKlass:
-@transformRsaSha512GetKlass:
-@transformRsaPkcs1GetKlass:
-@transformRsaOaepGetKlass:
-@transformGostR3411_94GetKlass:
-@transformGostR3411_2012_256GetKlass:
-@transformGostR3411_2012_512GetKlass:
-@transformSha1GetKlass:
-@transformSha224GetKlass:
-@transformSha256GetKlass:
-@transformSha384GetKlass:
-@transformSha512GetKlass:
-@cryptoAppInit:
-@cryptoAppShutdown:
-@cryptoAppDefaultKeysMngrInit:
-@cryptoAppDefaultKeysMngrAdoptKey:
-@cryptoAppDefaultKeysMngrLoad:
-@cryptoAppDefaultKeysMngrSave:
-@cryptoAppKeysMngrCertLoad:
-@cryptoAppKeysMngrCertLoadMemory:
-@cryptoAppKeyLoad:
-@cryptoAppKeyLoadMemory:
-@cryptoAppPkcs12Load:
-@cryptoAppPkcs12LoadMemory:
-@cryptoAppKeyCertLoad:
-@cryptoAppKeyCertLoadMemory:
-@cryptoAppDefaultPwdCallback:
-
-<!-- ##### MACRO xmlSecStrPrintf ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecStrVPrintf ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/docs/api/tmpl/base/templates.sgml b/docs/api/tmpl/base/templates.sgml
deleted file mode 100644
index 861ec8e5..00000000
--- a/docs/api/tmpl/base/templates.sgml
+++ /dev/null
@@ -1,449 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-templates
-
-<!-- ##### SECTION Short_Description ##### -->
-Dynamic templates creation functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Dynamic templates creation functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureCreate ##### -->
-<para>
-
-</para>
-
-@doc:
-@c14nMethodId:
-@signMethodId:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureCreateNsPref ##### -->
-<para>
-
-</para>
-
-@doc:
-@c14nMethodId:
-@signMethodId:
-@id:
-@nsPrefix:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureEnsureKeyInfo ##### -->
-<para>
-
-</para>
-
-@signNode:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureAddReference ##### -->
-<para>
-
-</para>
-
-@signNode:
-@digestMethodId:
-@id:
-@uri:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureAddObject ##### -->
-<para>
-
-</para>
-
-@signNode:
-@id:
-@mimeType:
-@encoding:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureGetSignMethodNode ##### -->
-<para>
-
-</para>
-
-@signNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplSignatureGetC14NMethodNode ##### -->
-<para>
-
-</para>
-
-@signNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplReferenceAddTransform ##### -->
-<para>
-
-</para>
-
-@referenceNode:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplObjectAddSignProperties ##### -->
-<para>
-
-</para>
-
-@objectNode:
-@id:
-@target:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplObjectAddManifest ##### -->
-<para>
-
-</para>
-
-@objectNode:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplManifestAddReference ##### -->
-<para>
-
-</para>
-
-@manifestNode:
-@digestMethodId:
-@id:
-@uri:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataCreate ##### -->
-<para>
-
-</para>
-
-@doc:
-@encMethodId:
-@id:
-@type:
-@mimeType:
-@encoding:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataEnsureKeyInfo ##### -->
-<para>
-
-</para>
-
-@encNode:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataEnsureEncProperties ##### -->
-<para>
-
-</para>
-
-@encNode:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataAddEncProperty ##### -->
-<para>
-
-</para>
-
-@encNode:
-@id:
-@target:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataEnsureCipherValue ##### -->
-<para>
-
-</para>
-
-@encNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataEnsureCipherReference ##### -->
-<para>
-
-</para>
-
-@encNode:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplEncDataGetEncMethodNode ##### -->
-<para>
-
-</para>
-
-@encNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplCipherReferenceAddTransform ##### -->
-<para>
-
-</para>
-
-@cipherReferenceNode:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplReferenceListAddDataReference ##### -->
-<para>
-
-</para>
-
-@encNode:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplReferenceListAddKeyReference ##### -->
-<para>
-
-</para>
-
-@encNode:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplKeyInfoAddKeyName ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@name:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplKeyInfoAddKeyValue ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplKeyInfoAddX509Data ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplKeyInfoAddRetrievalMethod ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@uri:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplRetrievalMethodAddTransform ##### -->
-<para>
-
-</para>
-
-@retrMethodNode:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplKeyInfoAddEncryptedKey ##### -->
-<para>
-
-</para>
-
-@keyInfoNode:
-@encMethodId:
-@id:
-@type:
-@recipient:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509DataAddIssuerSerial ##### -->
-<para>
-
-</para>
-
-@x509DataNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509IssuerSerialAddIssuerName ##### -->
-<para>
-
-</para>
-
-@x509IssuerSerialNode:
-@issuerName:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509IssuerSerialAddSerialNumber ##### -->
-<para>
-
-</para>
-
-@x509IssuerSerialNode:
-@serial:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509DataAddSubjectName ##### -->
-<para>
-
-</para>
-
-@x509DataNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509DataAddSKI ##### -->
-<para>
-
-</para>
-
-@x509DataNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509DataAddCertificate ##### -->
-<para>
-
-</para>
-
-@x509DataNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplX509DataAddCRL ##### -->
-<para>
-
-</para>
-
-@x509DataNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddHmacOutputLength ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@bitsLen:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddRsaOaepParam ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@buf:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddXsltStylesheet ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@xslt:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddC14NInclNamespaces ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@prefixList:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddXPath ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@expression:
-@nsList:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddXPath2 ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@type:
-@expression:
-@nsList:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTmplTransformAddXPointer ##### -->
-<para>
-
-</para>
-
-@transformNode:
-@expression:
-@nsList:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/transforms.sgml b/docs/api/tmpl/base/transforms.sgml
deleted file mode 100644
index f2c89156..00000000
--- a/docs/api/tmpl/base/transforms.sgml
+++ /dev/null
@@ -1,1307 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-transforms
-
-<!-- ##### SECTION Short_Description ##### -->
-Transform object definition.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Transform object definition.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_TRANSFORM_BINARY_CHUNK ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformIdsGet ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdsInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdsShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdsRegisterDefault ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdsRegister ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### ENUM xmlSecTransformStatus ##### -->
-<para>
-
-</para>
-
-@xmlSecTransformStatusNone:
-@xmlSecTransformStatusWorking:
-@xmlSecTransformStatusFinished:
-@xmlSecTransformStatusOk:
-@xmlSecTransformStatusFail:
-
-<!-- ##### ENUM xmlSecTransformMode ##### -->
-<para>
-
-</para>
-
-@xmlSecTransformModeNone:
-@xmlSecTransformModePush:
-@xmlSecTransformModePop:
-
-<!-- ##### ENUM xmlSecTransformOperation ##### -->
-<para>
-
-</para>
-
-@xmlSecTransformOperationNone:
-@xmlSecTransformOperationEncode:
-@xmlSecTransformOperationDecode:
-@xmlSecTransformOperationSign:
-@xmlSecTransformOperationVerify:
-@xmlSecTransformOperationEncrypt:
-@xmlSecTransformOperationDecrypt:
-
-<!-- ##### TYPEDEF xmlSecTransformUriType ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeNone ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeEmpty ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeSameDocument ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeLocal ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeRemote ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUriTypeAny ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformUriTypeCheck ##### -->
-<para>
-
-</para>
-
-@type:
-@uri:
-@Returns:
-
-
-<!-- ##### TYPEDEF xmlSecTransformDataType ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecTransformDataTypeUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformDataTypeBin ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformDataTypeXml ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### TYPEDEF xmlSecTransformUsage ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecTransformUsageUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageDSigTransform ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageC14NMethod ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageDigestMethod ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageSignatureMethod ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageEncryptionMethod ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformUsageAny ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformCtxPreExecuteCallback ##### -->
-<para>
-
-</para>
-
-@transformCtx:
-@Returns:
-
-
-<!-- ##### MACRO XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### STRUCT xmlSecTransformCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@flags:
-@flags2:
-@enabledUris:
-@enabledTransforms:
-@preExecCallback:
-@result:
-@status:
-@uri:
-@xptrExpr:
-@first:
-@last:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecTransformCtxCreate ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxDestroy ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxInitialize ##### -->
-<para>
-
-</para>
-
-@ctx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxFinalize ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxReset ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxCopyUserPref ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxSetUri ##### -->
-<para>
-
-</para>
-
-@ctx:
-@uri:
-@hereNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxAppend ##### -->
-<para>
-
-</para>
-
-@ctx:
-@transform:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxPrepend ##### -->
-<para>
-
-</para>
-
-@ctx:
-@transform:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxCreateAndAppend ##### -->
-<para>
-
-</para>
-
-@ctx:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxCreateAndPrepend ##### -->
-<para>
-
-</para>
-
-@ctx:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxNodeRead ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxNodesListRead ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxPrepare ##### -->
-<para>
-
-</para>
-
-@ctx:
-@inputDataType:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxBinaryExecute ##### -->
-<para>
-
-</para>
-
-@ctx:
-@data:
-@dataSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxUriExecute ##### -->
-<para>
-
-</para>
-
-@ctx:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxXmlExecute ##### -->
-<para>
-
-</para>
-
-@ctx:
-@nodes:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxExecute ##### -->
-<para>
-
-</para>
-
-@ctx:
-@doc:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@ctx:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecTransformCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@ctx:
-@output:
-
-
-<!-- ##### STRUCT xmlSecTransform ##### -->
-<para>
-
-</para>
-
-@id:
-@operation:
-@status:
-@hereNode:
-@next:
-@prev:
-@inBuf:
-@outBuf:
-@inNodes:
-@outNodes:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecTransformCreate ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDestroy ##### -->
-<para>
-
-</para>
-
-@transform:
-
-
-<!-- ##### FUNCTION xmlSecTransformNodeRead ##### -->
-<para>
-
-</para>
-
-@node:
-@usage:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformPump ##### -->
-<para>
-
-</para>
-
-@left:
-@right:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformSetKey ##### -->
-<para>
-
-</para>
-
-@transform:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformSetKeyReq ##### -->
-<para>
-
-</para>
-
-@transform:
-@keyReq:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformVerify ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@dataSize:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformVerifyNodeContent ##### -->
-<para>
-
-</para>
-
-@transform:
-@node:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformGetDataType ##### -->
-<para>
-
-</para>
-
-@transform:
-@mode:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformPushBin ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@dataSize:
-@final:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformPopBin ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@maxDataSize:
-@dataSize:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformPushXml ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformPopXml ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformExecute ##### -->
-<para>
-
-</para>
-
-@transform:
-@last:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDebugDump ##### -->
-<para>
-
-</para>
-
-@transform:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecTransformDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@transform:
-@output:
-
-
-<!-- ##### MACRO xmlSecTransformGetName ##### -->
-<para>
-
-</para>
-
-@transform:
-
-
-<!-- ##### MACRO xmlSecTransformIsValid ##### -->
-<para>
-
-</para>
-
-@transform:
-
-
-<!-- ##### MACRO xmlSecTransformCheckId ##### -->
-<para>
-
-</para>
-
-@transform:
-@i:
-
-
-<!-- ##### MACRO xmlSecTransformCheckSize ##### -->
-<para>
-
-</para>
-
-@transform:
-@size:
-
-
-<!-- ##### FUNCTION xmlSecTransformConnect ##### -->
-<para>
-
-</para>
-
-@left:
-@right:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformRemove ##### -->
-<para>
-
-</para>
-
-@transform:
-
-
-<!-- ##### FUNCTION xmlSecTransformDefaultGetDataType ##### -->
-<para>
-
-</para>
-
-@transform:
-@mode:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDefaultPushBin ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@dataSize:
-@final:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDefaultPopBin ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@maxDataSize:
-@dataSize:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDefaultPushXml ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformDefaultPopXml ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCreateOutputBuffer ##### -->
-<para>
-
-</para>
-
-@transform:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformCreateInputBuffer ##### -->
-<para>
-
-</para>
-
-@transform:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformInitializeMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformFinalizeMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformGetDataTypeMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@mode:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformNodeReadMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@node:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformNodeWriteMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@node:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformSetKeyRequirementsMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@keyReq:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformSetKeyMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@key:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformVerifyMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@dataSize:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformPushBinMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@dataSize:
-@final:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformPopBinMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@data:
-@maxDataSize:
-@dataSize:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformPushXmlMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformPopXmlMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@nodes:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### USER_FUNCTION xmlSecTransformExecuteMethod ##### -->
-<para>
-
-</para>
-
-@transform:
-@last:
-@transformCtx:
-@Returns:
-
-
-<!-- ##### STRUCT xmlSecTransformKlass ##### -->
-<para>
-
-</para>
-
-@klassSize:
-@objSize:
-@name:
-@href:
-@usage:
-@initialize:
-@finalize:
-@readNode:
-@writeNode:
-@setKeyReq:
-@setKey:
-@verify:
-@getDataType:
-@pushBin:
-@popBin:
-@pushXml:
-@popXml:
-@execute:
-@reserved0:
-@reserved1:
-
-<!-- ##### MACRO xmlSecTransformKlassGetName ##### -->
-<para>
-
-</para>
-
-@klass:
-
-
-<!-- ##### MACRO xmlSecTransformIdListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListFind ##### -->
-<para>
-
-</para>
-
-@list:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListFindByHref ##### -->
-<para>
-
-</para>
-
-@list:
-@href:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListFindByName ##### -->
-<para>
-
-</para>
-
-@list:
-@name:
-@usage:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListDebugDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecTransformIdListDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@list:
-@output:
-
-
-<!-- ##### MACRO xmlSecTransformIdUnknown ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecTransformBase64Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformBase64GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformBase64SetLineSize ##### -->
-<para>
-
-</para>
-
-@transform:
-@lineSize:
-
-
-<!-- ##### MACRO xmlSecTransformInclC14NId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformInclC14NGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformInclC14NWithCommentsId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformInclC14NWithCommentsGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformInclC14N11Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformInclC14N11GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformInclC14N11WithCommentsId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformInclC14N11WithCommentsGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformExclC14NId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformExclC14NGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformExclC14NWithCommentsId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformExclC14NWithCommentsGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformEnvelopedId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformEnvelopedGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformXPathId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformXPathGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformXPath2Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformXPath2GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformXPointerId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformXPointerGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformXPointerSetExpr ##### -->
-<para>
-
-</para>
-
-@transform:
-@expr:
-@nodeSetType:
-@hereNode:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformXsltId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformXsltGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformXsltSetDefaultSecurityPrefs ##### -->
-<para>
-
-</para>
-
-@sec:
-
-
-<!-- ##### MACRO xmlSecTransformRemoveXmlTagsC14NId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformRemoveXmlTagsC14NGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecTransformVisa3DHackId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecTransformVisa3DHackGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecTransformVisa3DHackSetID ##### -->
-<para>
-
-</para>
-
-@transform:
-@id:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/version.sgml b/docs/api/tmpl/base/version.sgml
deleted file mode 100644
index a154ef85..00000000
--- a/docs/api/tmpl/base/version.sgml
+++ /dev/null
@@ -1,57 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-version
-
-<!-- ##### SECTION Short_Description ##### -->
-Version macros.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Version macros.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_VERSION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_VERSION_MAJOR ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_VERSION_MINOR ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_VERSION_SUBMINOR ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_VERSION_INFO ##### -->
-<para>
-
-</para>
-
-
-
diff --git a/docs/api/tmpl/base/x509.sgml b/docs/api/tmpl/base/x509.sgml
deleted file mode 100644
index 737fb086..00000000
--- a/docs/api/tmpl/base/x509.sgml
+++ /dev/null
@@ -1,75 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-x509
-
-<!-- ##### SECTION Short_Description ##### -->
-&lt;dsig:X509Certificate/&gt; node parser.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-&lt;dsig:X509Certificate/&gt; node parser.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_CERTIFICATE_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_SUBJECTNAME_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_ISSUERSERIAL_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_SKI_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_CRL_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_X509DATA_DEFAULT ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecX509DataGetNodeContent ##### -->
-<para>
-
-</para>
-
-@node:
-@deleteChildren:
-@keyInfoCtx:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/xmldsig.sgml b/docs/api/tmpl/base/xmldsig.sgml
deleted file mode 100644
index e6d0a6d4..00000000
--- a/docs/api/tmpl/base/xmldsig.sgml
+++ /dev/null
@@ -1,316 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-xmldsig
-
-<!-- ##### SECTION Short_Description ##### -->
-XML Digital Signature support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-XML Digital Signature support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### ENUM xmlSecDSigStatus ##### -->
-<para>
-
-</para>
-
-@xmlSecDSigStatusUnknown:
-@xmlSecDSigStatusSucceeded:
-@xmlSecDSigStatusInvalid:
-
-<!-- ##### MACRO XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_DSIG_FLAGS_STORE_SIGNATURE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### STRUCT xmlSecDSigCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@flags:
-@flags2:
-@keyInfoReadCtx:
-@keyInfoWriteCtx:
-@transformCtx:
-@enabledReferenceUris:
-@enabledReferenceTransforms:
-@referencePreExecuteCallback:
-@defSignMethodId:
-@defC14NMethodId:
-@defDigestMethodId:
-@signKey:
-@operation:
-@result:
-@status:
-@signMethod:
-@c14nMethod:
-@preSignMemBufMethod:
-@signValueNode:
-@id:
-@signedInfoReferences:
-@manifestReferences:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecDSigCtxCreate ##### -->
-<para>
-
-</para>
-
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxDestroy ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxInitialize ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxFinalize ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxSign ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@tmpl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxVerify ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxEnableReferenceTransform ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxEnableSignatureTransform ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@transformId:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxGetPreSignBuffer ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecDSigCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@output:
-
-
-<!-- ##### ENUM xmlSecDSigReferenceOrigin ##### -->
-<para>
-
-</para>
-
-@xmlSecDSigReferenceOriginSignedInfo:
-@xmlSecDSigReferenceOriginManifest:
-
-<!-- ##### STRUCT xmlSecDSigReferenceCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@dsigCtx:
-@origin:
-@transformCtx:
-@digestMethod:
-@result:
-@status:
-@preDigestMemBufMethod:
-@id:
-@uri:
-@type:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxCreate ##### -->
-<para>
-
-</para>
-
-@dsigCtx:
-@origin:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxDestroy ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxInitialize ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-@dsigCtx:
-@origin:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxFinalize ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxProcessNode ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxGetPreDigestBuffer ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@dsigRefCtx:
-@output:
-
-
-<!-- ##### MACRO xmlSecDSigReferenceCtxListId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecDSigReferenceCtxListGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/base/xmlenc.sgml b/docs/api/tmpl/base/xmlenc.sgml
deleted file mode 100644
index f10b113e..00000000
--- a/docs/api/tmpl/base/xmlenc.sgml
+++ /dev/null
@@ -1,194 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-xmlenc
-
-<!-- ##### SECTION Short_Description ##### -->
-XML Encryption support.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-XML Encryption support.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### ENUM xmlEncCtxMode ##### -->
-<para>
-
-</para>
-
-@xmlEncCtxModeEncryptedData:
-@xmlEncCtxModeEncryptedKey:
-
-<!-- ##### MACRO XMLSEC_ENC_RETURN_REPLACED_NODE ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### STRUCT xmlSecEncCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@flags:
-@flags2:
-@mode:
-@keyInfoReadCtx:
-@keyInfoWriteCtx:
-@transformCtx:
-@defEncMethodId:
-@encKey:
-@operation:
-@result:
-@resultBase64Encoded:
-@resultReplaced:
-@encMethod:
-@id:
-@type:
-@mimeType:
-@encoding:
-@recipient:
-@carriedKeyName:
-@encDataNode:
-@encMethodNode:
-@keyInfoNode:
-@cipherValueNode:
-@replacedNodeList:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecEncCtxCreate ##### -->
-<para>
-
-</para>
-
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxDestroy ##### -->
-<para>
-
-</para>
-
-@encCtx:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxInitialize ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxFinalize ##### -->
-<para>
-
-</para>
-
-@encCtx:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxCopyUserPref ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxReset ##### -->
-<para>
-
-</para>
-
-@encCtx:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxBinaryEncrypt ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@tmpl:
-@data:
-@dataSize:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxXmlEncrypt ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@tmpl:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxUriEncrypt ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@tmpl:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxDecrypt ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxDecryptToBuffer ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecEncCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@encCtx:
-@output:
-
-
diff --git a/docs/api/tmpl/base/xmlsec-unused.sgml b/docs/api/tmpl/base/xmlsec-unused.sgml
deleted file mode 100644
index e35eac26..00000000
--- a/docs/api/tmpl/base/xmlsec-unused.sgml
+++ /dev/null
@@ -1,794 +0,0 @@
-<!-- ##### SECTION ./tmpl/base/xmlsec-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/xkms.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/xkms.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/xkms.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/xkms.sgml:Title ##### -->
-xkms
-
-
-<!-- ##### SECTION ./tmpl/xmlsec-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### MACRO XMLSEC_XKMS_KEY_BINDING_REASON_MASK_ISSUER_TRAST ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_KEY_BINDING_REASON_MASK_REVOCATION_STATUS ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_KEY_BINDING_REASON_MASK_SIGNATURE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_KEY_BINDING_REASON_MASK_VALIDITY_INTERVAL ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_NO_RESPONSE_LIMIT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_PENDING ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REPRESENT ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REQUEST_SIGNATURE_VALUE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_KEY_USAGE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPOND_WITH ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPONSE_MECHANISM ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecTransformCheckType ##### -->
-<para>
-
-</para>
-
-@transform:
-@t:
-
-<!-- ##### ENUM xmlSecXkmsKeyBindingStatus ##### -->
-<para>
-
-</para>
-
-@xmlSecXkmsKeyBindingStatusNone:
-@xmlSecXkmsKeyBindingStatusValid:
-@xmlSecXkmsKeyBindingStatusInvalid:
-@xmlSecXkmsKeyBindingStatusIndeterminate:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithDebugDump ##### -->
-<para>
-
-</para>
-
-@id:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@id:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithDefaultNodeRead ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithDefaultNodeWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdListFind ##### -->
-<para>
-
-</para>
-
-@list:
-@id:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdListFindByNodeValue ##### -->
-<para>
-
-</para>
-
-@list:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdListGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithIdListId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdListWrite ##### -->
-<para>
-
-</para>
-
-@list:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithIdUnknown ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdsGet ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdsInit ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdsRegister ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdsRegisterDefault ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithIdsShutdown ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithKeyNameGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithKeyNameId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithKeyValueGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithKeyValueId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithNodeRead ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithNodeWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithPGPGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithPGPId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithPrivateKeyGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithPrivateKeyId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithRetrievalMethodGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithRetrievalMethodId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithSPKIGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithSPKIId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithX509CRLGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithX509CRLId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithX509CertId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsRespondWithX509ChainGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsRespondWithX509ChainId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM xmlSecXkmsResultMajor ##### -->
-<para>
-
-</para>
-
-@xmlSecXkmsResultMajorSuccess:
-@xmlSecXkmsResultMajorVersionMismatch:
-@xmlSecXkmsResultMajorSender:
-@xmlSecXkmsResultMajorReceiver:
-@xmlSecXkmsResultMajorRepresent:
-@xmlSecXkmsResultMajorPending:
-
-<!-- ##### ENUM xmlSecXkmsResultMinor ##### -->
-<para>
-
-</para>
-
-@xmlSecXkmsResultMinorNone:
-@xmlSecXkmsResultMinorNoMatch:
-@xmlSecXkmsResultMinorTooManyResponses:
-@xmlSecXkmsResultMinorIncomplete:
-@xmlSecXkmsResultMinorFailure:
-@xmlSecXkmsResultMinorRefused:
-@xmlSecXkmsResultMinorNoAuthentication:
-@xmlSecXkmsResultMinorMessageNotSupported:
-@xmlSecXkmsResultMinorUnknownResponseId:
-@xmlSecXkmsResultMinorSynchronous:
-
-<!-- ##### STRUCT xmlSecXkmsServerCtx ##### -->
-<para>
-
-</para>
-
-@userData:
-@flags:
-@flags2:
-@keyInfoReadCtx:
-@keyInfoWriteCtx:
-@enabledRespondWithIds:
-@enabledServerRequestIds:
-@expectedService:
-@idPrefix:
-@idLen:
-@keys:
-@resultMajor:
-@resultMinor:
-@requestId:
-@id:
-@service:
-@nonce:
-@originalRequestId:
-@pendingNotificationMechanism:
-@pendingNotificationIdentifier:
-@responseLimit:
-@responseMechanismMask:
-@compoundRequestContexts:
-@requestNode:
-@opaqueClientDataNode:
-@firtsMsgExtNode:
-@keyInfoNode:
-@respWithList:
-@reserved0:
-@reserved1:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxCopyUserPref ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxCreate ##### -->
-<para>
-
-</para>
-
-@keysMngr:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxDebugDump ##### -->
-<para>
-
-</para>
-
-@ctx:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@ctx:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxDestroy ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxFatalErrorResponseCreate ##### -->
-<para>
-
-</para>
-
-@ctx:
-@format:
-@doc:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxFinalize ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxInitialize ##### -->
-<para>
-
-</para>
-
-@ctx:
-@keysMngr:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxProcess ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@format:
-@doc:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxPtrListGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerCtxPtrListId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxRequestRead ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxRequestUnwrap ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@format:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxReset ##### -->
-<para>
-
-</para>
-
-@ctx:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxResponseWrap ##### -->
-<para>
-
-</para>
-
-@ctx:
-@node:
-@format:
-@doc:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxResponseWrite ##### -->
-<para>
-
-</para>
-
-@ctx:
-@doc:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerCtxSetResult ##### -->
-<para>
-
-</para>
-
-@ctx:
-@resultMajor:
-@resultMinor:
-
-<!-- ##### ENUM xmlSecXkmsServerFormat ##### -->
-<para>
-
-</para>
-
-@xmlSecXkmsServerFormatUnknown:
-@xmlSecXkmsServerFormatPlain:
-@xmlSecXkmsServerFormatSoap11:
-@xmlSecXkmsServerFormatSoap12:
-
-<!-- ##### FUNCTION xmlSecXkmsServerFormatFromString ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerFormatToString ##### -->
-<para>
-
-</para>
-
-@format:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestCompoundGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestCompoundId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestDebugDump ##### -->
-<para>
-
-</para>
-
-@id:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@id:
-@output:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestExecute ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdListFind ##### -->
-<para>
-
-</para>
-
-@list:
-@id:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdListFindByName ##### -->
-<para>
-
-</para>
-
-@list:
-@name:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdListFindByNode ##### -->
-<para>
-
-</para>
-
-@list:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdListGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestIdListId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecXkmsServerRequestIdUnknown ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdsGet ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdsInit ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdsRegister ##### -->
-<para>
-
-</para>
-
-@id:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdsRegisterDefault ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestIdsShutdown ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestLocateGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestLocateId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestNodeRead ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestNodeWrite ##### -->
-<para>
-
-</para>
-
-@id:
-@ctx:
-@doc:
-@node:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestResultGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestResultId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestStatusGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestStatusId ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecXkmsServerRequestValidateGetKlass ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-<!-- ##### MACRO xmlSecXkmsServerRequestValidateId ##### -->
-<para>
-
-</para>
-
-
diff --git a/docs/api/tmpl/base/xmlsec.sgml b/docs/api/tmpl/base/xmlsec.sgml
deleted file mode 100644
index 848cf2a9..00000000
--- a/docs/api/tmpl/base/xmlsec.sgml
+++ /dev/null
@@ -1,135 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-xmlsec
-
-<!-- ##### SECTION Short_Description ##### -->
-Utility functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Utility functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### TYPEDEF xmlSecPtr ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO xmlSecSize ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_SIZE_BAD_CAST ##### -->
-<para>
-
-</para>
-
-@val:
-
-
-<!-- ##### MACRO xmlSecByte ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecCheckVersionExact ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecCheckVersion ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### ENUM xmlSecCheckVersionMode ##### -->
-<para>
-
-</para>
-
-@xmlSecCheckVersionExactMatch:
-@xmlSecCheckVersionABICompatible:
-
-<!-- ##### FUNCTION xmlSecCheckVersionExt ##### -->
-<para>
-
-</para>
-
-@major:
-@minor:
-@subminor:
-@mode:
-@Returns:
-
-
-<!-- ##### MACRO ATTRIBUTE_UNUSED ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_PTR_TO_FUNC_IMPL ##### -->
-<para>
-
-</para>
-
-@func_type:
-
-
-<!-- ##### MACRO XMLSEC_PTR_TO_FUNC ##### -->
-<para>
-
-</para>
-
-@func_type:
-@ptr:
-
-
-<!-- ##### MACRO XMLSEC_FUNC_TO_PTR ##### -->
-<para>
-
-</para>
-
-@func_type:
-@func:
-
-
diff --git a/docs/api/tmpl/base/xmltree.sgml b/docs/api/tmpl/base/xmltree.sgml
deleted file mode 100644
index c590fd9e..00000000
--- a/docs/api/tmpl/base/xmltree.sgml
+++ /dev/null
@@ -1,552 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-xmltree
-
-<!-- ##### SECTION Short_Description ##### -->
-XML tree operations.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-XML tree operations.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecNodeGetName ##### -->
-<para>
-
-</para>
-
-@node:
-
-
-<!-- ##### FUNCTION xmlSecGetNodeNsHref ##### -->
-<para>
-
-</para>
-
-@cur:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCheckNodeName ##### -->
-<para>
-
-</para>
-
-@cur:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGetNextElementNode ##### -->
-<para>
-
-</para>
-
-@cur:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecFindChild ##### -->
-<para>
-
-</para>
-
-@parent:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecFindParent ##### -->
-<para>
-
-</para>
-
-@cur:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecFindNode ##### -->
-<para>
-
-</para>
-
-@parent:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecAddChild ##### -->
-<para>
-
-</para>
-
-@parent:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecAddChildNode ##### -->
-<para>
-
-</para>
-
-@parent:
-@child:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecAddNextSibling ##### -->
-<para>
-
-</para>
-
-@node:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecAddPrevSibling ##### -->
-<para>
-
-</para>
-
-@node:
-@name:
-@ns:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceNode ##### -->
-<para>
-
-</para>
-
-@node:
-@newNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceNodeAndReturn ##### -->
-<para>
-
-</para>
-
-@node:
-@newNode:
-@replaced:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceContent ##### -->
-<para>
-
-</para>
-
-@node:
-@newNode:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceContentAndReturn ##### -->
-<para>
-
-</para>
-
-@node:
-@newNode:
-@replaced:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceNodeBuffer ##### -->
-<para>
-
-</para>
-
-@node:
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecReplaceNodeBufferAndReturn ##### -->
-<para>
-
-</para>
-
-@node:
-@buffer:
-@size:
-@replaced:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNodeEncodeAndSetContent ##### -->
-<para>
-
-</para>
-
-@node:
-@buffer:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecAddIDs ##### -->
-<para>
-
-</para>
-
-@doc:
-@cur:
-@ids:
-
-
-<!-- ##### FUNCTION xmlSecGenerateAndAddID ##### -->
-<para>
-
-</para>
-
-@node:
-@attrName:
-@prefix:
-@len:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGenerateID ##### -->
-<para>
-
-</para>
-
-@prefix:
-@len:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecCreateTree ##### -->
-<para>
-
-</para>
-
-@rootNodeName:
-@rootNodeNs:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecIsEmptyNode ##### -->
-<para>
-
-</para>
-
-@node:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecIsEmptyString ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGetQName ##### -->
-<para>
-
-</para>
-
-@node:
-@href:
-@local:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecPrintXmlString ##### -->
-<para>
-
-</para>
-
-@fd:
-@str:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecIsHex ##### -->
-<para>
-
-</para>
-
-@c:
-
-
-<!-- ##### MACRO xmlSecGetHex ##### -->
-<para>
-
-</para>
-
-@c:
-
-
-<!-- ##### STRUCT xmlSecQName2IntegerInfo ##### -->
-<para>
-
-</para>
-
-@qnameHref:
-@qnameLocalPart:
-@intValue:
-
-<!-- ##### TYPEDEF xmlSecQName2IntegerInfoConstPtr ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerGetInfo ##### -->
-<para>
-
-</para>
-
-@info:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerGetInteger ##### -->
-<para>
-
-</para>
-
-@info:
-@qnameHref:
-@qnameLocalPart:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerGetIntegerFromString ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@qname:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerGetStringFromInteger ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerNodeRead ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerNodeWrite ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@nodeName:
-@nodeNs:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerAttributeRead ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@attrName:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerAttributeWrite ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@attrName:
-@intValue:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerDebugDump ##### -->
-<para>
-
-</para>
-
-@info:
-@intValue:
-@name:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecQName2IntegerDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@info:
-@intValue:
-@name:
-@output:
-
-
-<!-- ##### TYPEDEF xmlSecBitMask ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT xmlSecQName2BitMaskInfo ##### -->
-<para>
-
-</para>
-
-@qnameHref:
-@qnameLocalPart:
-@mask:
-
-<!-- ##### TYPEDEF xmlSecQName2BitMaskInfoConstPtr ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskGetInfo ##### -->
-<para>
-
-</para>
-
-@info:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskGetBitMask ##### -->
-<para>
-
-</para>
-
-@info:
-@qnameLocalPart:
-@qnameHref:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskNodesRead ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@nodeName:
-@nodeNs:
-@stopOnUnknown:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskGetBitMaskFromString ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@qname:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskGetStringFromBitMask ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskNodesWrite ##### -->
-<para>
-
-</para>
-
-@info:
-@node:
-@nodeName:
-@nodeNs:
-@mask:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskDebugDump ##### -->
-<para>
-
-</para>
-
-@info:
-@mask:
-@name:
-@output:
-
-
-<!-- ##### FUNCTION xmlSecQName2BitMaskDebugXmlDump ##### -->
-<para>
-
-</para>
-
-@info:
-@mask:
-@name:
-@output:
-
-
diff --git a/docs/api/tmpl/gcrypt/app.sgml b/docs/api/tmpl/gcrypt/app.sgml
deleted file mode 100644
index 4a009fc8..00000000
--- a/docs/api/tmpl/gcrypt/app.sgml
+++ /dev/null
@@ -1,189 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Application functions implementation for GnuTLS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Application functions implementation for GCrypt.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/gcrypt/crypto.sgml b/docs/api/tmpl/gcrypt/crypto.sgml
deleted file mode 100644
index b079b8cf..00000000
--- a/docs/api/tmpl/gcrypt/crypto.sgml
+++ /dev/null
@@ -1,708 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-crypto
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto transforms implementation for GCrypt.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto transforms implementation for GCrypt.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_gcrypt ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptGenerateRandom ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataAesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDsaAdoptKey ##### -->
-<para>
-
-</para>
-
-@data:
-@dsa_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDsaAdoptKeyPair ##### -->
-<para>
-
-</para>
-
-@data:
-@pub_key:
-@priv_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDsaGetPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataDsaGetPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptHmacGetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptHmacSetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@min_length:
-
-
-<!-- ##### MACRO xmlSecGCryptKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataHmacSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataRsaAdoptKey ##### -->
-<para>
-
-</para>
-
-@data:
-@rsa_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataRsaAdoptKeyPair ##### -->
-<para>
-
-</para>
-
-@data:
-@pub_key:
-@priv_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataRsaGetPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGCryptKeyDataRsaGetPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGCryptTransformRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGCryptTransformRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/gcrypt/xmlsec-gcrypt-unused.sgml b/docs/api/tmpl/gcrypt/xmlsec-gcrypt-unused.sgml
deleted file mode 100644
index 7377b2ea..00000000
--- a/docs/api/tmpl/gcrypt/xmlsec-gcrypt-unused.sgml
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- ##### SECTION ./tmpl/gcrypt/xmlsec-gcrypt-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### SECTION tmpl/gcrypt/xmlsec-gcrypt-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_GCrypt ##### -->
-<para>
-
-</para>
-
-@Returns:
-
diff --git a/docs/api/tmpl/gnutls/app.sgml b/docs/api/tmpl/gnutls/app.sgml
deleted file mode 100644
index 24bd87ab..00000000
--- a/docs/api/tmpl/gnutls/app.sgml
+++ /dev/null
@@ -1,189 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Application functions implementation for GnuTLS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Application functions implementation for GnuTLS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/gnutls/crypto.sgml b/docs/api/tmpl/gnutls/crypto.sgml
deleted file mode 100644
index fb8130d9..00000000
--- a/docs/api/tmpl/gnutls/crypto.sgml
+++ /dev/null
@@ -1,674 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-crypto
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto transforms implementation for GnuTLS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto transforms implementation for GnuTLS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_gnutls ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSGenerateRandom ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataAesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@dsa_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaAdoptPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@p:
-@q:
-@g:
-@y:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSHmacGetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSHmacSetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@min_length:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataHmacSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@rsa_key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaAdoptPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@m:
-@e:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSTransformRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSTransformRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/gnutls/x509.sgml b/docs/api/tmpl/gnutls/x509.sgml
deleted file mode 100644
index 1c9872ef..00000000
--- a/docs/api/tmpl/gnutls/x509.sgml
+++ /dev/null
@@ -1,193 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-x509
-
-<!-- ##### SECTION Short_Description ##### -->
-X509 certificates support implementation for GnuTLS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-X509 certificates support implementation for GnuTLS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataX509Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509AdoptKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509AdoptCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetCert ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetCertsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509AdoptCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@crl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataX509GetCrlsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSX509CertGetKey ##### -->
-<para>
-
-</para>
-
-@cert:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSKeyDataRawX509CertId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRawX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecGnuTLSX509StoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSX509StoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSX509StoreFindCert ##### -->
-<para>
-
-</para>
-
-@store:
-@subjectName:
-@issuerName:
-@issuerSerial:
-@ski:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSX509StoreVerify ##### -->
-<para>
-
-</para>
-
-@store:
-@certs:
-@crls:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSX509StoreAdoptCert ##### -->
-<para>
-
-</para>
-
-@store:
-@cert:
-@type:
-@Returns:
-
-
diff --git a/docs/api/tmpl/gnutls/xmlsec-gnutls-unused.sgml b/docs/api/tmpl/gnutls/xmlsec-gnutls-unused.sgml
deleted file mode 100644
index 8dfd1ae0..00000000
--- a/docs/api/tmpl/gnutls/xmlsec-gnutls-unused.sgml
+++ /dev/null
@@ -1,78 +0,0 @@
-<!-- ##### SECTION ./tmpl/gnutls/xmlsec-gnutls-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### SECTION tmpl/gnutls/xmlsec-gnutls-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaAdoptKey ##### -->
-<para>
-
-</para>
-
-@data:
-@dsa_key:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaAdoptKeyPair ##### -->
-<para>
-
-</para>
-
-@data:
-@pub_key:
-@priv_key:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaGetPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataDsaGetPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaAdoptKey ##### -->
-<para>
-
-</para>
-
-@data:
-@rsa_key:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaAdoptKeyPair ##### -->
-<para>
-
-</para>
-
-@data:
-@pub_key:
-@priv_key:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaGetPrivateKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecGnuTLSKeyDataRsaGetPublicKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
diff --git a/docs/api/tmpl/mscrypto/app.sgml b/docs/api/tmpl/mscrypto/app.sgml
deleted file mode 100644
index 48cf7db4..00000000
--- a/docs/api/tmpl/mscrypto/app.sgml
+++ /dev/null
@@ -1,258 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Application functions implementation for MS Crypto.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Application functions implementation for MS Crypto.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppGetCertStoreName ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@hKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@hKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@hKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@keyStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@trustedStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ##### -->
-<para>
-
-</para>
-
-@mngr:
-@untrustedStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/mscrypto/certkeys.sgml b/docs/api/tmpl/mscrypto/certkeys.sgml
deleted file mode 100644
index 58c2077d..00000000
--- a/docs/api/tmpl/mscrypto/certkeys.sgml
+++ /dev/null
@@ -1,87 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-certkeys
-
-<!-- ##### SECTION Short_Description ##### -->
-MS Crypto certificates helper functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-MS Crypto certificates helper functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGetCert ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGetKey ##### -->
-<para>
-
-</para>
-
-@data:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGetDecryptKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoCertDup ##### -->
-<para>
-
-</para>
-
-@pCert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoCertAdopt ##### -->
-<para>
-
-</para>
-
-@pCert:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGetMSCryptoProvider ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
diff --git a/docs/api/tmpl/mscrypto/crypto.sgml b/docs/api/tmpl/mscrypto/crypto.sgml
deleted file mode 100644
index 1df46b78..00000000
--- a/docs/api/tmpl/mscrypto/crypto.sgml
+++ /dev/null
@@ -1,728 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-crypto
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto transforms implementation for MS Crypto.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto transforms implementation for MS Crypto.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_mscrypto ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoGenerateRandom ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoErrorsDefaultCallback ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertLocaleToUnicode ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertUtf8ToUnicode ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertUnicodeToUtf8 ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertLocaleToUtf8 ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertUtf8ToLocale ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertTstrToUtf8 ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoConvertUtf8ToTstr ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataGost2001Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataGost2001GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformGost2001GostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaPkcs1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaPkcs1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformRsaOaepId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformRsaOaepGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformGostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformGostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataAesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoHmacGetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoHmacSetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@min_length:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataHmacSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/mscrypto/keysstore.sgml b/docs/api/tmpl/mscrypto/keysstore.sgml
deleted file mode 100644
index 2c95039d..00000000
--- a/docs/api/tmpl/mscrypto/keysstore.sgml
+++ /dev/null
@@ -1,70 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keysstore
-
-<!-- ##### SECTION Short_Description ##### -->
-Keys store implementation for MS Crypto.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Keys store implementation for MS Crypto.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeysStoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeysStoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeysStoreAdoptKey ##### -->
-<para>
-
-</para>
-
-@store:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeysStoreLoad ##### -->
-<para>
-
-</para>
-
-@store:
-@uri:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeysStoreSave ##### -->
-<para>
-
-</para>
-
-@store:
-@filename:
-@type:
-@Returns:
-
-
diff --git a/docs/api/tmpl/mscrypto/x509.sgml b/docs/api/tmpl/mscrypto/x509.sgml
deleted file mode 100644
index 1be2828d..00000000
--- a/docs/api/tmpl/mscrypto/x509.sgml
+++ /dev/null
@@ -1,197 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-x509
-
-<!-- ##### SECTION Short_Description ##### -->
-X509 certificates support implementation for MS Crypto.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-X509 certificates support implementation for MS Crypto.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataX509Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509AdoptKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509AdoptCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetCert ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetCertsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509AdoptCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@crl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataX509GetCrlsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoKeyDataRawX509CertId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoKeyDataRawX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecMSCryptoX509StoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreAdoptCert ##### -->
-<para>
-
-</para>
-
-@store:
-@cert:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreAdoptKeyStore ##### -->
-<para>
-
-</para>
-
-@store:
-@keyStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreAdoptTrustedStore ##### -->
-<para>
-
-</para>
-
-@store:
-@trustedStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreAdoptUntrustedStore ##### -->
-<para>
-
-</para>
-
-@store:
-@untrustedStore:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ##### -->
-<para>
-
-</para>
-
-@store:
-@val:
-
-
diff --git a/docs/api/tmpl/mscrypto/xmlsec-mscrypto-unused.sgml b/docs/api/tmpl/mscrypto/xmlsec-mscrypto-unused.sgml
deleted file mode 100644
index 0b5accbf..00000000
--- a/docs/api/tmpl/mscrypto/xmlsec-mscrypto-unused.sgml
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- ##### SECTION ./tmpl/mscrypto/xmlsec-mscrypto-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV_A ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV_PROTOTYPE ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV_PROTOTYPE_A ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV_PROTOTYPE_W ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_CRYPTO_MS_ENH_RSA_AES_PROV_W ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION tmpl/mscrypto/xmlsec-mscrypto-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### FUNCTION xmlSecMSCryptoCertStrToName ##### -->
-<para>
-
-</para>
-
-@dwCertEncodingType:
-@pszX500:
-@dwStrType:
-@len:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoCreatePrivateExponentOneKey ##### -->
-<para>
-
-</para>
-
-@hProv:
-@hPrivateKey:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoFindProvider ##### -->
-<para>
-
-</para>
-
-@providers:
-@pszContainer:
-@dwFlags:
-@bUseXmlSecContainer:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoImportPlainSessionBlob ##### -->
-<para>
-
-</para>
-
-@hProv:
-@hPrivateKey:
-@dwAlgId:
-@pbKeyMaterial:
-@dwKeyMaterial:
-@bCheckKeyLength:
-@hSessionKey:
-@Returns:
-
-<!-- ##### STRUCT xmlSecMSCryptoProviderInfo ##### -->
-<para>
-
-</para>
-
-@providerName:
-@providerType:
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509FindCertBySubject ##### -->
-<para>
-
-</para>
-
-@store:
-@wcSubject:
-@dwCertEncodingType:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509GetNameString ##### -->
-<para>
-
-</para>
-
-@pCertContext:
-@dwType:
-@dwFlags:
-@pvTypePara:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreFindCert ##### -->
-<para>
-
-</para>
-
-@store:
-@subjectName:
-@issuerName:
-@issuerSerial:
-@ski:
-@keyInfoCtx:
-@Returns:
-
-<!-- ##### FUNCTION xmlSecMSCryptoX509StoreVerify ##### -->
-<para>
-
-</para>
-
-@store:
-@certs:
-@keyInfoCtx:
-@Returns:
-
diff --git a/docs/api/tmpl/nss/app.sgml b/docs/api/tmpl/nss/app.sgml
deleted file mode 100644
index 16cbcfbe..00000000
--- a/docs/api/tmpl/nss/app.sgml
+++ /dev/null
@@ -1,247 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Application functions implementation for NSS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Application functions implementation for NSS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecNssAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeysMngrCertLoadSECItem ##### -->
-<para>
-
-</para>
-
-@mngr:
-@secItem:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyLoadSECItem ##### -->
-<para>
-
-</para>
-
-@secItem:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppPkcs12LoadSECItem ##### -->
-<para>
-
-</para>
-
-@secItem:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyCertLoadSECItem ##### -->
-<para>
-
-</para>
-
-@key:
-@secItem:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppKeyFromCertLoadSECItem ##### -->
-<para>
-
-</para>
-
-@secItem:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/bignum.sgml b/docs/api/tmpl/nss/bignum.sgml
deleted file mode 100644
index cd8b2b26..00000000
--- a/docs/api/tmpl/nss/bignum.sgml
+++ /dev/null
@@ -1,44 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-bignum
-
-<!-- ##### SECTION Short_Description ##### -->
-Big numbers helper functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Big numbers helper functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecNssNodeGetBigNumValue ##### -->
-<para>
-
-</para>
-
-@arena:
-@cur:
-@a:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssNodeSetBigNumValue ##### -->
-<para>
-
-</para>
-
-@cur:
-@a:
-@addLineBreaks:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/crypto.sgml b/docs/api/tmpl/nss/crypto.sgml
deleted file mode 100644
index 6e625dbd..00000000
--- a/docs/api/tmpl/nss/crypto.sgml
+++ /dev/null
@@ -1,653 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-crypto
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto transforms implementation for NSS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto transforms implementation for NSS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_nss ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssGenerateRandom ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssErrorsDefaultCallback ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-
-
-<!-- ##### FUNCTION xmlSecNssGetInternalKeySlot ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataAesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataDesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssHmacGetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssHmacSetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@min_length:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataHmacSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaPkcs1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaPkcs1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformRsaOaepId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformRsaOaepGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/keysstore.sgml b/docs/api/tmpl/nss/keysstore.sgml
deleted file mode 100644
index fef83967..00000000
--- a/docs/api/tmpl/nss/keysstore.sgml
+++ /dev/null
@@ -1,70 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-keysstore
-
-<!-- ##### SECTION Short_Description ##### -->
-Keys store implementation for NSS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Keys store implementation for NSS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecNssKeysStoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeysStoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeysStoreAdoptKey ##### -->
-<para>
-
-</para>
-
-@store:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeysStoreLoad ##### -->
-<para>
-
-</para>
-
-@store:
-@uri:
-@keysMngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeysStoreSave ##### -->
-<para>
-
-</para>
-
-@store:
-@filename:
-@type:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/pkikeys.sgml b/docs/api/tmpl/nss/pkikeys.sgml
deleted file mode 100644
index 8541a552..00000000
--- a/docs/api/tmpl/nss/pkikeys.sgml
+++ /dev/null
@@ -1,69 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-pkikeys
-
-<!-- ##### SECTION Short_Description ##### -->
-PKI keys data implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-PKI keys data implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecNssPKIAdoptKey ##### -->
-<para>
-
-</para>
-
-@privkey:
-@pubkey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssPKIKeyDataGetPubKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssPKIKeyDataGetPrivKey ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssPKIKeyDataGetKeyType ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssPKIKeyDataDuplicate ##### -->
-<para>
-
-</para>
-
-@dst:
-@src:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/x509.sgml b/docs/api/tmpl/nss/x509.sgml
deleted file mode 100644
index e897bc0d..00000000
--- a/docs/api/tmpl/nss/x509.sgml
+++ /dev/null
@@ -1,192 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-x509
-
-<!-- ##### SECTION Short_Description ##### -->
-X509 certificates support implementation for NSS.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-X509 certificates support implementation for NSS.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO xmlSecNssKeyDataX509Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509AdoptKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509AdoptCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetCert ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetCertsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509AdoptCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@crl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataX509GetCrlsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssX509CertGetKey ##### -->
-<para>
-
-</para>
-
-@cert:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssKeyDataRawX509CertId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssKeyDataRawX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecNssX509StoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecNssX509StoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssX509StoreFindCert ##### -->
-<para>
-
-</para>
-
-@store:
-@subjectName:
-@issuerName:
-@issuerSerial:
-@ski:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssX509StoreVerify ##### -->
-<para>
-
-</para>
-
-@store:
-@certs:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecNssX509StoreAdoptCert ##### -->
-<para>
-
-</para>
-
-@store:
-@cert:
-@type:
-@Returns:
-
-
diff --git a/docs/api/tmpl/nss/xmlsec-nss-unused.sgml b/docs/api/tmpl/nss/xmlsec-nss-unused.sgml
deleted file mode 100644
index 37646687..00000000
--- a/docs/api/tmpl/nss/xmlsec-nss-unused.sgml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!-- ##### SECTION ./tmpl/nss/xmlsec-nss-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### SECTION tmpl/nss/xmlsec-nss-unused.sgml:Image ##### -->
-
-
-
diff --git a/docs/api/tmpl/openssl/app.sgml b/docs/api/tmpl/openssl/app.sgml
deleted file mode 100644
index 1bb14257..00000000
--- a/docs/api/tmpl/openssl/app.sgml
+++ /dev/null
@@ -1,267 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-Application functions implementation for OpenSSL.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Application functions implementation for OpenSSL.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppInit ##### -->
-<para>
-
-</para>
-
-@config:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppDefaultKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ##### -->
-<para>
-
-</para>
-
-@mngr:
-@key:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppDefaultKeysMngrLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@uri:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppDefaultKeysMngrSave ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeysMngrCertLoad ##### -->
-<para>
-
-</para>
-
-@mngr:
-@filename:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeysMngrCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@mngr:
-@data:
-@dataSize:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeysMngrCertLoadBIO ##### -->
-<para>
-
-</para>
-
-@mngr:
-@bio:
-@format:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeysMngrAddCertsPath ##### -->
-<para>
-
-</para>
-
-@mngr:
-@path:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeysMngrAddCertsFile ##### -->
-<para>
-
-</para>
-
-@mngr:
-@file:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyLoad ##### -->
-<para>
-
-</para>
-
-@filename:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyLoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyLoadBIO ##### -->
-<para>
-
-</para>
-
-@bio:
-@format:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppPkcs12Load ##### -->
-<para>
-
-</para>
-
-@filename:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppPkcs12LoadMemory ##### -->
-<para>
-
-</para>
-
-@data:
-@dataSize:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppPkcs12LoadBIO ##### -->
-<para>
-
-</para>
-
-@bio:
-@pwd:
-@pwdCallback:
-@pwdCallbackCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyCertLoad ##### -->
-<para>
-
-</para>
-
-@key:
-@filename:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyCertLoadMemory ##### -->
-<para>
-
-</para>
-
-@key:
-@data:
-@dataSize:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyCertLoadBIO ##### -->
-<para>
-
-</para>
-
-@key:
-@bio:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppKeyFromCertLoadBIO ##### -->
-<para>
-
-</para>
-
-@bio:
-@format:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLAppGetDefaultPwdCallback ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
diff --git a/docs/api/tmpl/openssl/bn.sgml b/docs/api/tmpl/openssl/bn.sgml
deleted file mode 100644
index 73c85cc6..00000000
--- a/docs/api/tmpl/openssl/bn.sgml
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-bn
-
-<!-- ##### SECTION Short_Description ##### -->
-Big numbers helper functions.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Big numbers helper functions.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLNodeGetBNValue ##### -->
-<para>
-
-</para>
-
-@cur:
-@a:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLNodeSetBNValue ##### -->
-<para>
-
-</para>
-
-@cur:
-@a:
-@addLineBreaks:
-@Returns:
-
-
diff --git a/docs/api/tmpl/openssl/ciphers.sgml b/docs/api/tmpl/openssl/ciphers.sgml
deleted file mode 100644
index 527aed52..00000000
--- a/docs/api/tmpl/openssl/ciphers.sgml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-app
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-
diff --git a/docs/api/tmpl/openssl/crypto.sgml b/docs/api/tmpl/openssl/crypto.sgml
deleted file mode 100644
index 594630a6..00000000
--- a/docs/api/tmpl/openssl/crypto.sgml
+++ /dev/null
@@ -1,1126 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-crypto
-
-<!-- ##### SECTION Short_Description ##### -->
-Crypto transforms implementation for OpenSSL.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Crypto transforms implementation for OpenSSL.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecCryptoGetFunctions_openssl ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLInit ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLShutdown ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeysMngrInit ##### -->
-<para>
-
-</para>
-
-@mngr:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLGenerateRandom ##### -->
-<para>
-
-</para>
-
-@buffer:
-@size:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLSetDefaultTrustedCertsFolder ##### -->
-<para>
-
-</para>
-
-@path:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLGetDefaultTrustedCertsFolder ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataAesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataAesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataAesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformAes128CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformAes128CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformAes192CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformAes192CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformAes256CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformAes256CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformKWAes128Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformKWAes128GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformKWAes192Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformKWAes192GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformKWAes256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformKWAes256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataDesId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDesGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDesSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformDes3CbcId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformDes3CbcGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformKWDes3Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformKWDes3GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataDsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDsaAdoptDsa ##### -->
-<para>
-
-</para>
-
-@data:
-@dsa:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDsaGetDsa ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDsaAdoptEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@pKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataDsaGetEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformDsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformDsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformDsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformDsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataEcdsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataEcdsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ##### -->
-<para>
-
-</para>
-
-@data:
-@ecdsa:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataEcdsaGetEcdsa ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataEcdsaAdoptEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@pKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataEcdsaGetEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformEcdsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformEcdsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformEcdsaSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformEcdsaSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformEcdsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformEcdsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformEcdsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformEcdsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformEcdsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformEcdsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataGost2001Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataGost2001GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGost2001GostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGostR3411_94Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGostR3411_94GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataGostR3410_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataGostR3410_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGostR3411_2012_256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGostR3411_2012_256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformGostR3411_2012_512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformGostR3411_2012_512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLHmacGetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLHmacSetMinOutputLength ##### -->
-<para>
-
-</para>
-
-@min_length:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataHmacId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataHmacGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataHmacSet ##### -->
-<para>
-
-</para>
-
-@data:
-@buf:
-@bufSize:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformHmacSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformHmacSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataRsaId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRsaGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRsaAdoptRsa ##### -->
-<para>
-
-</para>
-
-@data:
-@rsa:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRsaGetRsa ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRsaAdoptEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@pKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRsaGetEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaMd5Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaMd5GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaRipemd160Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaRipemd160GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaPkcs1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaPkcs1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformRsaOaepId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformRsaOaepGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformSha1Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformSha1GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformSha224Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformSha224GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformSha256Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformSha256GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformSha384Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformSha384GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLTransformSha512Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLTransformSha512GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO XMLSEC_OPENSSL_ERRORS_LIB ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_OPENSSL_ERRORS_FUNCTION ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLErrorsDefaultCallback ##### -->
-<para>
-
-</para>
-
-@file:
-@line:
-@func:
-@errorObject:
-@errorSubject:
-@reason:
-@msg:
-
-
diff --git a/docs/api/tmpl/openssl/evp.sgml b/docs/api/tmpl/openssl/evp.sgml
deleted file mode 100644
index e97b12e0..00000000
--- a/docs/api/tmpl/openssl/evp.sgml
+++ /dev/null
@@ -1,59 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-evp
-
-<!-- ##### SECTION Short_Description ##### -->
-EVP keys data implementation.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-EVP keys data implementation.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLEvpKeyDataAdoptEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@pKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLEvpKeyDataGetEvp ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLEvpKeyDup ##### -->
-<para>
-
-</para>
-
-@pKey:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLEvpKeyAdopt ##### -->
-<para>
-
-</para>
-
-@pKey:
-@Returns:
-
-
diff --git a/docs/api/tmpl/openssl/x509.sgml b/docs/api/tmpl/openssl/x509.sgml
deleted file mode 100644
index bc794803..00000000
--- a/docs/api/tmpl/openssl/x509.sgml
+++ /dev/null
@@ -1,237 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-x509
-
-<!-- ##### SECTION Short_Description ##### -->
-X509 certificates support implementation for OpenSSL.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-X509 certificates support implementation for OpenSSL.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### MACRO XMLSEC_STACK_OF_X509 ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO XMLSEC_STACK_OF_X509_CRL ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataX509Id ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509AdoptKeyCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509AdoptCert ##### -->
-<para>
-
-</para>
-
-@data:
-@cert:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetCert ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetCertsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509AdoptCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@crl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetCrl ##### -->
-<para>
-
-</para>
-
-@data:
-@pos:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataX509GetCrlsSize ##### -->
-<para>
-
-</para>
-
-@data:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509CertGetKey ##### -->
-<para>
-
-</para>
-
-@cert:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLKeyDataRawX509CertId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLKeyDataRawX509CertGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### MACRO xmlSecOpenSSLX509StoreId ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreGetKlass ##### -->
-<para>
-
-</para>
-
-@void:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreFindCert ##### -->
-<para>
-
-</para>
-
-@store:
-@subjectName:
-@issuerName:
-@issuerSerial:
-@ski:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreVerify ##### -->
-<para>
-
-</para>
-
-@store:
-@certs:
-@crls:
-@keyInfoCtx:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreAdoptCert ##### -->
-<para>
-
-</para>
-
-@store:
-@cert:
-@type:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreAdoptCrl ##### -->
-<para>
-
-</para>
-
-@store:
-@crl:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreAddCertsPath ##### -->
-<para>
-
-</para>
-
-@store:
-@path:
-@Returns:
-
-
-<!-- ##### FUNCTION xmlSecOpenSSLX509StoreAddCertsFile ##### -->
-<para>
-
-</para>
-
-@store:
-@file:
-@Returns:
-
-
diff --git a/docs/api/tmpl/openssl/xmlsec-openssl-unused.sgml b/docs/api/tmpl/openssl/xmlsec-openssl-unused.sgml
deleted file mode 100644
index 6f6b3c60..00000000
--- a/docs/api/tmpl/openssl/xmlsec-openssl-unused.sgml
+++ /dev/null
@@ -1,78 +0,0 @@
-<!-- ##### SECTION ./tmpl/openssl/ciphers.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/openssl/ciphers.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION ./tmpl/openssl/ciphers.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION ./tmpl/openssl/ciphers.sgml:Title ##### -->
-app
-
-
-<!-- ##### SECTION ./tmpl/openssl/xmlsec-openssl-unused.sgml:Image ##### -->
-
-
-
-<!-- ##### MACRO XMLSEC_NO_AES ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_NO_SHA224 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_NO_SHA256 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_NO_SHA384 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### MACRO XMLSEC_NO_SHA512 ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION tmpl/openssl/ciphers.sgml:Long_Description ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION tmpl/openssl/ciphers.sgml:See_Also ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### SECTION tmpl/openssl/ciphers.sgml:Short_Description ##### -->
-
-
-
-<!-- ##### SECTION tmpl/openssl/ciphers.sgml:Title ##### -->
-app
-
-
-<!-- ##### SECTION tmpl/openssl/xmlsec-openssl-unused.sgml:Image ##### -->
-
-
-
diff --git a/docs/api/up-insensitive.png b/docs/api/up-insensitive.png
new file mode 100644
index 00000000..674be9c5
--- /dev/null
+++ b/docs/api/up-insensitive.png
Binary files differ
diff --git a/docs/api/up.png b/docs/api/up.png
index af46b2ad..ae83f664 100644
--- a/docs/api/up.png
+++ b/docs/api/up.png
Binary files differ
diff --git a/docs/api/xmlsec-app.html b/docs/api/xmlsec-app.html
index f4050d4c..b7e6d3aa 100644
--- a/docs/api/xmlsec-app.html
+++ b/docs/api/xmlsec-app.html
@@ -1,2572 +1,2761 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="NEXT" title="base64" href="xmlsec-base64.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="next" href="xmlsec-base64.html" title="base64">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-app.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-base64.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN1011"></a><h2>Name</h2>app -- Crypto-engine independent application support function.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN1016"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-app.top_of_page"></a>app</span></h2>
+<p>app — Crypto-engine independent application support functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOINIT">xmlSecCryptoInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoInit" title="xmlSecCryptoInit ()">xmlSecCryptoInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOSHUTDOWN">xmlSecCryptoShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoShutdown" title="xmlSecCryptoShutdown ()">xmlSecCryptoShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOKEYSMNGRINIT">xmlSecCryptoKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoKeysMngrInit" title="xmlSecCryptoKeysMngrInit ()">xmlSecCryptoKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAAESGETKLASS">xmlSecKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataAesGetKlass" title="xmlSecKeyDataAesGetKlass ()">xmlSecKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATADESGETKLASS">xmlSecKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataDesGetKlass" title="xmlSecKeyDataDesGetKlass ()">xmlSecKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATADSAGETKLASS">xmlSecKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataDsaGetKlass" title="xmlSecKeyDataDsaGetKlass ()">xmlSecKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAECDSAGETKLASS">xmlSecKeyDataEcdsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataEcdsaGetKlass" title="xmlSecKeyDataEcdsaGetKlass ()">xmlSecKeyDataEcdsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAGOST2001GETKLASS">xmlSecKeyDataGost2001GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataGost2001GetKlass" title="xmlSecKeyDataGost2001GetKlass ()">xmlSecKeyDataGost2001GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAGOSTR3410-2012-256GETKLASS">xmlSecKeyDataGostR3410_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-256GetKlass" title="xmlSecKeyDataGostR3410_2012_256GetKlass ()">xmlSecKeyDataGostR3410_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAGOSTR3410-2012-512GETKLASS">xmlSecKeyDataGostR3410_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-512GetKlass" title="xmlSecKeyDataGostR3410_2012_512GetKlass ()">xmlSecKeyDataGostR3410_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAHMACGETKLASS">xmlSecKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataHmacGetKlass" title="xmlSecKeyDataHmacGetKlass ()">xmlSecKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATARSAGETKLASS">xmlSecKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataRsaGetKlass" title="xmlSecKeyDataRsaGetKlass ()">xmlSecKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATAX509GETKLASS">xmlSecKeyDataX509GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataX509GetKlass" title="xmlSecKeyDataX509GetKlass ()">xmlSecKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECKEYDATARAWX509CERTGETKLASS">xmlSecKeyDataRawX509CertGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecKeyDataRawX509CertGetKlass" title="xmlSecKeyDataRawX509CertGetKlass ()">xmlSecKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECX509STOREGETKLASS">xmlSecX509StoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecX509StoreGetKlass" title="xmlSecX509StoreGetKlass ()">xmlSecX509StoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCGETKLASS">xmlSecTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes128CbcGetKlass" title="xmlSecTransformAes128CbcGetKlass ()">xmlSecTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMAES192CBCGETKLASS">xmlSecTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes192CbcGetKlass" title="xmlSecTransformAes192CbcGetKlass ()">xmlSecTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMAES256CBCGETKLASS">xmlSecTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes256CbcGetKlass" title="xmlSecTransformAes256CbcGetKlass ()">xmlSecTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMKWAES128GETKLASS">xmlSecTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes128GcmGetKlass" title="xmlSecTransformAes128GcmGetKlass ()">xmlSecTransformAes128GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMKWAES192GETKLASS">xmlSecTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes192GcmGetKlass" title="xmlSecTransformAes192GcmGetKlass ()">xmlSecTransformAes192GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMKWAES256GETKLASS">xmlSecTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformAes256GcmGetKlass" title="xmlSecTransformAes256GcmGetKlass ()">xmlSecTransformAes256GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMDES3CBCGETKLASS">xmlSecTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformKWAes128GetKlass" title="xmlSecTransformKWAes128GetKlass ()">xmlSecTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3GETKLASS">xmlSecTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformKWAes192GetKlass" title="xmlSecTransformKWAes192GetKlass ()">xmlSecTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA1GETKLASS">xmlSecTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformKWAes256GetKlass" title="xmlSecTransformKWAes256GetKlass ()">xmlSecTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA256GETKLASS">xmlSecTransformDsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformDes3CbcGetKlass" title="xmlSecTransformDes3CbcGetKlass ()">xmlSecTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA1GETKLASS">xmlSecTransformEcdsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformKWDes3GetKlass" title="xmlSecTransformKWDes3GetKlass ()">xmlSecTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA224GETKLASS">xmlSecTransformEcdsaSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha1GetKlass" title="xmlSecTransformDsaSha1GetKlass ()">xmlSecTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA256GETKLASS">xmlSecTransformEcdsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha256GetKlass" title="xmlSecTransformDsaSha256GetKlass ()">xmlSecTransformDsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA384GETKLASS">xmlSecTransformEcdsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha1GetKlass" title="xmlSecTransformEcdsaSha1GetKlass ()">xmlSecTransformEcdsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA512GETKLASS">xmlSecTransformEcdsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha224GetKlass" title="xmlSecTransformEcdsaSha224GetKlass ()">xmlSecTransformEcdsaSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOST2001GOSTR3411-94GETKLASS">xmlSecTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha256GetKlass" title="xmlSecTransformEcdsaSha256GetKlass ()">xmlSecTransformEcdsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-256GETKLASS">xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha384GetKlass" title="xmlSecTransformEcdsaSha384GetKlass ()">xmlSecTransformEcdsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-512GETKLASS">xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha512GetKlass" title="xmlSecTransformEcdsaSha512GetKlass ()">xmlSecTransformEcdsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACMD5GETKLASS">xmlSecTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGost2001GostR3411-94GetKlass" title="xmlSecTransformGost2001GostR3411_94GetKlass ()">xmlSecTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACRIPEMD160GETKLASS">xmlSecTransformHmacRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass" title="xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass ()">xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1GETKLASS">xmlSecTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass" title="xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass ()">xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA224GETKLASS">xmlSecTransformHmacSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacMd5GetKlass" title="xmlSecTransformHmacMd5GetKlass ()">xmlSecTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA256GETKLASS">xmlSecTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacRipemd160GetKlass" title="xmlSecTransformHmacRipemd160GetKlass ()">xmlSecTransformHmacRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA384GETKLASS">xmlSecTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha1GetKlass" title="xmlSecTransformHmacSha1GetKlass ()">xmlSecTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA512GETKLASS">xmlSecTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha224GetKlass" title="xmlSecTransformHmacSha224GetKlass ()">xmlSecTransformHmacSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMMD5GETKLASS">xmlSecTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha256GetKlass" title="xmlSecTransformHmacSha256GetKlass ()">xmlSecTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160GETKLASS">xmlSecTransformRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha384GetKlass" title="xmlSecTransformHmacSha384GetKlass ()">xmlSecTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSAMD5GETKLASS">xmlSecTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha512GetKlass" title="xmlSecTransformHmacSha512GetKlass ()">xmlSecTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSARIPEMD160GETKLASS">xmlSecTransformRsaRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformMd5GetKlass" title="xmlSecTransformMd5GetKlass ()">xmlSecTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1GETKLASS">xmlSecTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRipemd160GetKlass" title="xmlSecTransformRipemd160GetKlass ()">xmlSecTransformRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA224GETKLASS">xmlSecTransformRsaSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaMd5GetKlass" title="xmlSecTransformRsaMd5GetKlass ()">xmlSecTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA256GETKLASS">xmlSecTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaRipemd160GetKlass" title="xmlSecTransformRsaRipemd160GetKlass ()">xmlSecTransformRsaRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA384GETKLASS">xmlSecTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha1GetKlass" title="xmlSecTransformRsaSha1GetKlass ()">xmlSecTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA512GETKLASS">xmlSecTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha224GetKlass" title="xmlSecTransformRsaSha224GetKlass ()">xmlSecTransformRsaSha224GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha256GetKlass" title="xmlSecTransformRsaSha256GetKlass ()">xmlSecTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1GETKLASS">xmlSecTransformRsaPkcs1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha384GetKlass" title="xmlSecTransformRsaSha384GetKlass ()">xmlSecTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPGETKLASS">xmlSecTransformRsaOaepGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha512GetKlass" title="xmlSecTransformRsaSha512GetKlass ()">xmlSecTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-94GETKLASS">xmlSecTransformGostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaPkcs1GetKlass" title="xmlSecTransformRsaPkcs1GetKlass ()">xmlSecTransformRsaPkcs1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-2012-256GETKLASS">xmlSecTransformGostR3411_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformRsaOaepGetKlass" title="xmlSecTransformRsaOaepGetKlass ()">xmlSecTransformRsaOaepGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-2012-512GETKLASS">xmlSecTransformGostR3411_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-94GetKlass" title="xmlSecTransformGostR3411_94GetKlass ()">xmlSecTransformGostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMSHA1GETKLASS">xmlSecTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-2012-256GetKlass" title="xmlSecTransformGostR3411_2012_256GetKlass ()">xmlSecTransformGostR3411_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMSHA224GETKLASS">xmlSecTransformSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-2012-512GetKlass" title="xmlSecTransformGostR3411_2012_512GetKlass ()">xmlSecTransformGostR3411_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMSHA256GETKLASS">xmlSecTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformSha1GetKlass" title="xmlSecTransformSha1GetKlass ()">xmlSecTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMSHA384GETKLASS">xmlSecTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformSha224GetKlass" title="xmlSecTransformSha224GetKlass ()">xmlSecTransformSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECTRANSFORMSHA512GETKLASS">xmlSecTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformSha256GetKlass" title="xmlSecTransformSha256GetKlass ()">xmlSecTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPINIT">xmlSecCryptoAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformSha384GetKlass" title="xmlSecTransformSha384GetKlass ()">xmlSecTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPSHUTDOWN">xmlSecCryptoAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecTransformSha512GetKlass" title="xmlSecTransformSha512GetKlass ()">xmlSecTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRINIT">xmlSecCryptoAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppInit" title="xmlSecCryptoAppInit ()">xmlSecCryptoAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecCryptoAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppShutdown" title="xmlSecCryptoAppShutdown ()">xmlSecCryptoAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRLOAD">xmlSecCryptoAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrInit" title="xmlSecCryptoAppDefaultKeysMngrInit ()">xmlSecCryptoAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRSAVE">xmlSecCryptoAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrAdoptKey" title="xmlSecCryptoAppDefaultKeysMngrAdoptKey ()">xmlSecCryptoAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYSMNGRCERTLOAD">xmlSecCryptoAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrLoad" title="xmlSecCryptoAppDefaultKeysMngrLoad ()">xmlSecCryptoAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYSMNGRCERTLOADMEMORY">xmlSecCryptoAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrSave" title="xmlSecCryptoAppDefaultKeysMngrSave ()">xmlSecCryptoAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYLOAD">xmlSecCryptoAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoad" title="xmlSecCryptoAppKeysMngrCertLoad ()">xmlSecCryptoAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYLOADMEMORY">xmlSecCryptoAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoadMemory" title="xmlSecCryptoAppKeysMngrCertLoadMemory ()">xmlSecCryptoAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPPKCS12LOAD">xmlSecCryptoAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyLoad" title="xmlSecCryptoAppKeyLoad ()">xmlSecCryptoAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPPKCS12LOADMEMORY">xmlSecCryptoAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyLoadMemory" title="xmlSecCryptoAppKeyLoadMemory ()">xmlSecCryptoAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYCERTLOAD">xmlSecCryptoAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppPkcs12Load" title="xmlSecCryptoAppPkcs12Load ()">xmlSecCryptoAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYCERTLOADMEMORY">xmlSecCryptoAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppPkcs12LoadMemory" title="xmlSecCryptoAppPkcs12LoadMemory ()">xmlSecCryptoAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-app.html#XMLSECCRYPTOAPPGETDEFAULTPWDCALLBACK">xmlSecCryptoAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyCertLoad" title="xmlSecCryptoAppKeyCertLoad ()">xmlSecCryptoAppKeyCertLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyCertLoadMemory" title="xmlSecCryptoAppKeyCertLoadMemory ()">xmlSecCryptoAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-app.html#xmlSecCryptoAppGetDefaultPwdCallback" title="xmlSecCryptoAppGetDefaultPwdCallback ()">xmlSecCryptoAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-APP.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN1539"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-app.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAAESID">xmlSecKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataAesId" title="xmlSecKeyDataAesId">xmlSecKeyDataAesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATADESID">xmlSecKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataDesId" title="xmlSecKeyDataDesId">xmlSecKeyDataDesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATADSAID">xmlSecKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataDsaId" title="xmlSecKeyDataDsaId">xmlSecKeyDataDsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAECDSAID">xmlSecKeyDataEcdsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataEcdsaId" title="xmlSecKeyDataEcdsaId">xmlSecKeyDataEcdsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAGOST2001ID">xmlSecKeyDataGost2001Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataGost2001Id" title="xmlSecKeyDataGost2001Id">xmlSecKeyDataGost2001Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAGOSTR3410-2012-256ID">xmlSecKeyDataGostR3410_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-256Id" title="xmlSecKeyDataGostR3410_2012_256Id">xmlSecKeyDataGostR3410_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAGOSTR3410-2012-512ID">xmlSecKeyDataGostR3410_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-512Id" title="xmlSecKeyDataGostR3410_2012_512Id">xmlSecKeyDataGostR3410_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAHMACID">xmlSecKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataHmacId" title="xmlSecKeyDataHmacId">xmlSecKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATARSAID">xmlSecKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataRsaId" title="xmlSecKeyDataRsaId">xmlSecKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATAX509ID">xmlSecKeyDataX509Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataX509Id" title="xmlSecKeyDataX509Id">xmlSecKeyDataX509Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECKEYDATARAWX509CERTID">xmlSecKeyDataRawX509CertId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecKeyDataRawX509CertId" title="xmlSecKeyDataRawX509CertId">xmlSecKeyDataRawX509CertId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECX509STOREID">xmlSecX509StoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecX509StoreId" title="xmlSecX509StoreId">xmlSecX509StoreId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCID">xmlSecTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes128CbcId" title="xmlSecTransformAes128CbcId">xmlSecTransformAes128CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMAES192CBCID">xmlSecTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes192CbcId" title="xmlSecTransformAes192CbcId">xmlSecTransformAes192CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMAES256CBCID">xmlSecTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes256CbcId" title="xmlSecTransformAes256CbcId">xmlSecTransformAes256CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES128ID">xmlSecTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes128GcmId" title="xmlSecTransformAes128GcmId">xmlSecTransformAes128GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES192ID">xmlSecTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes192GcmId" title="xmlSecTransformAes192GcmId">xmlSecTransformAes192GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES256ID">xmlSecTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformAes256GcmId" title="xmlSecTransformAes256GcmId">xmlSecTransformAes256GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMDES3CBCID">xmlSecTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes128Id" title="xmlSecTransformKWAes128Id">xmlSecTransformKWAes128Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3ID">xmlSecTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes192Id" title="xmlSecTransformKWAes192Id">xmlSecTransformKWAes192Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA1ID">xmlSecTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes256Id" title="xmlSecTransformKWAes256Id">xmlSecTransformKWAes256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA256ID">xmlSecTransformDsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformDes3CbcId" title="xmlSecTransformDes3CbcId">xmlSecTransformDes3CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA1ID">xmlSecTransformEcdsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformKWDes3Id" title="xmlSecTransformKWDes3Id">xmlSecTransformKWDes3Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA224ID">xmlSecTransformEcdsaSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha1Id" title="xmlSecTransformDsaSha1Id">xmlSecTransformDsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA256ID">xmlSecTransformEcdsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha256Id" title="xmlSecTransformDsaSha256Id">xmlSecTransformDsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA384ID">xmlSecTransformEcdsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha1Id" title="xmlSecTransformEcdsaSha1Id">xmlSecTransformEcdsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA512ID">xmlSecTransformEcdsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha224Id" title="xmlSecTransformEcdsaSha224Id">xmlSecTransformEcdsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOST2001GOSTR3411-94ID">xmlSecTransformGost2001GostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha256Id" title="xmlSecTransformEcdsaSha256Id">xmlSecTransformEcdsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-256ID">xmlSecTransformGostR3410_2012GostR3411_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha384Id" title="xmlSecTransformEcdsaSha384Id">xmlSecTransformEcdsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-512ID">xmlSecTransformGostR3410_2012GostR3411_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha512Id" title="xmlSecTransformEcdsaSha512Id">xmlSecTransformEcdsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACMD5ID">xmlSecTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGost2001GostR3411-94Id" title="xmlSecTransformGost2001GostR3411_94Id">xmlSecTransformGost2001GostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACRIPEMD160ID">xmlSecTransformHmacRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-256Id" title="xmlSecTransformGostR3410_2012GostR3411_2012_256Id">xmlSecTransformGostR3410_2012GostR3411_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1ID">xmlSecTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-512Id" title="xmlSecTransformGostR3410_2012GostR3411_2012_512Id">xmlSecTransformGostR3410_2012GostR3411_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA224ID">xmlSecTransformHmacSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacMd5Id" title="xmlSecTransformHmacMd5Id">xmlSecTransformHmacMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA256ID">xmlSecTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacRipemd160Id" title="xmlSecTransformHmacRipemd160Id">xmlSecTransformHmacRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA384ID">xmlSecTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha1Id" title="xmlSecTransformHmacSha1Id">xmlSecTransformHmacSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA512ID">xmlSecTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha224Id" title="xmlSecTransformHmacSha224Id">xmlSecTransformHmacSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMMD5ID">xmlSecTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha256Id" title="xmlSecTransformHmacSha256Id">xmlSecTransformHmacSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160ID">xmlSecTransformRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha384Id" title="xmlSecTransformHmacSha384Id">xmlSecTransformHmacSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSAMD5ID">xmlSecTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha512Id" title="xmlSecTransformHmacSha512Id">xmlSecTransformHmacSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSARIPEMD160ID">xmlSecTransformRsaRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformMd5Id" title="xmlSecTransformMd5Id">xmlSecTransformMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1ID">xmlSecTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRipemd160Id" title="xmlSecTransformRipemd160Id">xmlSecTransformRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA224ID">xmlSecTransformRsaSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaMd5Id" title="xmlSecTransformRsaMd5Id">xmlSecTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA256ID">xmlSecTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaRipemd160Id" title="xmlSecTransformRsaRipemd160Id">xmlSecTransformRsaRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA384ID">xmlSecTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha1Id" title="xmlSecTransformRsaSha1Id">xmlSecTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA512ID">xmlSecTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha224Id" title="xmlSecTransformRsaSha224Id">xmlSecTransformRsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1ID">xmlSecTransformRsaPkcs1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha256Id" title="xmlSecTransformRsaSha256Id">xmlSecTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPID">xmlSecTransformRsaOaepId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha384Id" title="xmlSecTransformRsaSha384Id">xmlSecTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-94ID">xmlSecTransformGostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha512Id" title="xmlSecTransformRsaSha512Id">xmlSecTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-2012-256ID">xmlSecTransformGostR3411_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaPkcs1Id" title="xmlSecTransformRsaPkcs1Id">xmlSecTransformRsaPkcs1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMGOSTR3411-2012-512ID">xmlSecTransformGostR3411_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformRsaOaepId" title="xmlSecTransformRsaOaepId">xmlSecTransformRsaOaepId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMSHA1ID">xmlSecTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-94Id" title="xmlSecTransformGostR3411_94Id">xmlSecTransformGostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMSHA224ID">xmlSecTransformSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-2012-256Id" title="xmlSecTransformGostR3411_2012_256Id">xmlSecTransformGostR3411_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMSHA256ID">xmlSecTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformGostR3411-2012-512Id" title="xmlSecTransformGostR3411_2012_512Id">xmlSecTransformGostR3411_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMSHA384ID">xmlSecTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformSha1Id" title="xmlSecTransformSha1Id">xmlSecTransformSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-app.html#XMLSECTRANSFORMSHA512ID">xmlSecTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformSha224Id" title="xmlSecTransformSha224Id">xmlSecTransformSha224Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformSha256Id" title="xmlSecTransformSha256Id">xmlSecTransformSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformSha384Id" title="xmlSecTransformSha384Id">xmlSecTransformSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-app.html#xmlSecTransformSha512Id" title="xmlSecTransformSha512Id">xmlSecTransformSha512Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto-engine application support function used by xmlsec command line utility.</p>
+<div class="refsect1">
+<a name="xmlsec-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOINIT"></a><h3>xmlSecCryptoInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoInit"></a><h3>xmlSecCryptoInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN1781"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOSHUTDOWN"></a><h3>xmlSecCryptoShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoShutdown"></a><h3>xmlSecCryptoShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN1794"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOKEYSMNGRINIT"></a><h3>xmlSecCryptoKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoKeysMngrInit"></a><h3>xmlSecCryptoKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds crypto specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN1808"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN1810"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN1819"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAAESGETKLASS"></a><h3>xmlSecKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataAesGetKlass"></a><h3>xmlSecKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1832"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the AES key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADESGETKLASS"></a><h3>xmlSecKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDesGetKlass"></a><h3>xmlSecKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1845"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the DES key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADSAGETKLASS"></a><h3>xmlSecKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDsaGetKlass"></a><h3>xmlSecKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1858"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> DSA key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the DSA key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAECDSAGETKLASS"></a><h3>xmlSecKeyDataEcdsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataEcdsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataEcdsaGetKlass"></a><h3>xmlSecKeyDataEcdsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataEcdsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1871"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataEcdsaGetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the ECDSA key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOST2001GETKLASS"></a><h3>xmlSecKeyDataGost2001GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataGost2001GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGost2001GetKlass"></a><h3>xmlSecKeyDataGost2001GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataGost2001GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST2001 key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1884"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGost2001GetKlass.returns"></a><h4>Returns</h4>
<p> GOST2001 key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the GOST2001 key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOSTR3410-2012-256GETKLASS"></a><h3>xmlSecKeyDataGostR3410_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecKeyDataGostR3410-2012-256GetKlass"></a><h3>xmlSecKeyDataGostR3410_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataGostR3410_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 256 bit key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1897"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGostR3410-2012-256GetKlass.returns"></a><h4>Returns</h4>
<p> GOST R 34.10-2012 256 bit key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the GOST R 34.10-2012 key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOSTR3410-2012-512GETKLASS"></a><h3>xmlSecKeyDataGostR3410_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecKeyDataGostR3410-2012-512GetKlass"></a><h3>xmlSecKeyDataGostR3410_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataGostR3410_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 512 bit key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1910"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGostR3410-2012-512GetKlass.returns"></a><h4>Returns</h4>
<p> GOST R 34.10-2012 512 bit key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the GOST R 34.10-2012 key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAHMACGETKLASS"></a><h3>xmlSecKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataHmacGetKlass"></a><h3>xmlSecKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1923"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the HMAC key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARSAGETKLASS"></a><h3>xmlSecKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataRsaGetKlass"></a><h3>xmlSecKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1936"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> RSA key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the RSA key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAX509GETKLASS"></a><h3>xmlSecKeyDataX509GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataX509GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataX509GetKlass"></a><h3>xmlSecKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The X509 key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1949"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
<p> X509 key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the X509 key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARAWX509CERTGETKLASS"></a><h3>xmlSecKeyDataRawX509CertGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataRawX509CertGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataRawX509CertGetKlass"></a><h3>xmlSecKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataRawX509CertGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The raw X509 cert key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN1962"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
<p> raw x509 cert key data klass or NULL if an error occurs
(xmlsec-crypto library is not loaded or the raw X509 cert key data
klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECX509STOREGETKLASS"></a><h3>xmlSecX509StoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font>
-xmlSecX509StoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecX509StoreGetKlass"></a><h3>xmlSecX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The X509 certificates key data store klass.</p>
-<div class="REFSECT3">
-<a name="AEN1975"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecX509StoreGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to X509 certificates key data store klass or NULL if
an error occurs (xmlsec-crypto library is not loaded or the raw X509
cert key data klass is not implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformAes128CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes128CbcGetKlass"></a><h3>xmlSecTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes128CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN1988"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformAes192CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes192CbcGetKlass"></a><h3>xmlSecTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes192CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2001"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformAes256CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes256CbcGetKlass"></a><h3>xmlSecTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes256CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2014"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformKWAes128GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes128GcmGetKlass"></a><h3>xmlSecTransformAes128GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes128GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 128 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecTransformAes128GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 128 GCM encryption transform or NULL if an error
+occurs (the xmlsec-crypto library is not loaded or this transform is not
+implemented).</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformAes192GcmGetKlass"></a><h3>xmlSecTransformAes192GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes192GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 192 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecTransformAes192GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 192 GCM encryption transform or NULL if an error
+occurs (the xmlsec-crypto library is not loaded or this transform is not
+implemented).</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformAes256GcmGetKlass"></a><h3>xmlSecTransformAes256GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformAes256GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 256 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecTransformAes256GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 256 GCM encryption transform or NULL if an error
+occurs (the xmlsec-crypto library is not loaded or this transform is not
+implemented).</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes128GetKlass"></a><h3>xmlSecTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformKWAes128GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2027"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 kew wrapper transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformKWAes192GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes192GetKlass"></a><h3>xmlSecTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformKWAes192GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2040"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 kew wrapper transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformKWAes256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes256GetKlass"></a><h3>xmlSecTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformKWAes256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2053"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 kew wrapper transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformDes3CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDes3CbcGetKlass"></a><h3>xmlSecTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2066"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWDes3GetKlass"></a><h3>xmlSecTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2079"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformDsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDsaSha1GetKlass"></a><h3>xmlSecTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2092"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDSASHA256GETKLASS"></a><h3>xmlSecTransformDsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformDsaSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDsaSha256GetKlass"></a><h3>xmlSecTransformDsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformDsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2105"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA256 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA1GETKLASS"></a><h3>xmlSecTransformEcdsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEcdsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha1GetKlass"></a><h3>xmlSecTransformEcdsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEcdsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2118"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEcdsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA1 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA224GETKLASS"></a><h3>xmlSecTransformEcdsaSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEcdsaSha224GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha224GetKlass"></a><h3>xmlSecTransformEcdsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEcdsaSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA224 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2131"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEcdsaSha224GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA224 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA256GETKLASS"></a><h3>xmlSecTransformEcdsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEcdsaSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha256GetKlass"></a><h3>xmlSecTransformEcdsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEcdsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2144"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEcdsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA256 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA384GETKLASS"></a><h3>xmlSecTransformEcdsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEcdsaSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha384GetKlass"></a><h3>xmlSecTransformEcdsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEcdsaSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2157"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEcdsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA384 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA512GETKLASS"></a><h3>xmlSecTransformEcdsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEcdsaSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha512GetKlass"></a><h3>xmlSecTransformEcdsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEcdsaSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2170"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEcdsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA512 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOST2001GOSTR3411-94GETKLASS"></a><h3>xmlSecTransformGost2001GostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformGost2001GostR3411-94GetKlass"></a><h3>xmlSecTransformGost2001GostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformGost2001GostR3411_94GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST2001-GOSTR3411_94 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2183"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGost2001GostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> GOST2001-GOSTR3411_94 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-256GETKLASS"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 - GOST R 34.11-2012 256 bit signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2196"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass.returns"></a><h4>Returns</h4>
<p> GOST R 34.10-2012 - GOST R 34.11-2012 256 bit signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-512GETKLASS"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 - GOST R 34.11-2012 512 bit signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2209"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass.returns"></a><h4>Returns</h4>
<p> GOST R 34.10-2012 - GOST R 34.11-2012 512 bit signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacMd5GetKlass"></a><h3>xmlSecTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2222"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACRIPEMD160GETKLASS"></a><h3>xmlSecTransformHmacRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacRipemd160GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacRipemd160GetKlass"></a><h3>xmlSecTransformHmacRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacRipemd160GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-RIPEMD160 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2235"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-RIPEMD160 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha1GetKlass"></a><h3>xmlSecTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2248"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA224GETKLASS"></a><h3>xmlSecTransformHmacSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacSha224GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha224GetKlass"></a><h3>xmlSecTransformHmacSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA224 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2261"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacSha224GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA224 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha256GetKlass"></a><h3>xmlSecTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2274"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha384GetKlass"></a><h3>xmlSecTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2287"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformHmacSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha512GetKlass"></a><h3>xmlSecTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformHmacSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2300"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMD5GETKLASS"></a><h3>xmlSecTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformMd5GetKlass"></a><h3>xmlSecTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>MD5 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2313"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MD5 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRIPEMD160GETKLASS"></a><h3>xmlSecTransformRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRipemd160GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRipemd160GetKlass"></a><h3>xmlSecTransformRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRipemd160GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>RIPEMD-160 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2326"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to RIPEMD-160 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaMd5GetKlass"></a><h3>xmlSecTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2339"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSARIPEMD160GETKLASS"></a><h3>xmlSecTransformRsaRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaRipemd160GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaRipemd160GetKlass"></a><h3>xmlSecTransformRsaRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaRipemd160GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2352"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-RIPEMD160 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha1GetKlass"></a><h3>xmlSecTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2365"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA224GETKLASS"></a><h3>xmlSecTransformRsaSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaSha224GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha224GetKlass"></a><h3>xmlSecTransformRsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA224 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2378"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaSha224GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA224 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha256GetKlass"></a><h3>xmlSecTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2391"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha384GetKlass"></a><h3>xmlSecTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2404"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha512GetKlass"></a><h3>xmlSecTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2417"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAPKCS1GETKLASS"></a><h3>xmlSecTransformRsaPkcs1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaPkcs1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaPkcs1GetKlass"></a><h3>xmlSecTransformRsaPkcs1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaPkcs1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-PKCS1 key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2430"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaPkcs1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-PKCS1 key transport transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAOAEPGETKLASS"></a><h3>xmlSecTransformRsaOaepGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformRsaOaepGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaOaepGetKlass"></a><h3>xmlSecTransformRsaOaepGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRsaOaepGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-OAEP key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2443"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRsaOaepGetKlass.returns"></a><h4>Returns</h4>
<p> RSA-OAEP key transport transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-94GETKLASS"></a><h3>xmlSecTransformGostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformGostR3411_94GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-94GetKlass"></a><h3>xmlSecTransformGostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformGostR3411_94GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOSTR3411_94 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2456"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOSTR3411_94 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-2012-256GETKLASS"></a><h3>xmlSecTransformGostR3411_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-2012-256GetKlass"></a><h3>xmlSecTransformGostR3411_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformGostR3411_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOST R 34.11-2012 256 bit digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2469"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGostR3411-2012-256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.11-2012 256 bit digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-2012-512GETKLASS"></a><h3>xmlSecTransformGostR3411_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-2012-512GetKlass"></a><h3>xmlSecTransformGostR3411_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformGostR3411_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOST R 34.11-2012 512 bit digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2482"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGostR3411-2012-512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.11-2012 512 bit digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA1GETKLASS"></a><h3>xmlSecTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha1GetKlass"></a><h3>xmlSecTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2495"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA224GETKLASS"></a><h3>xmlSecTransformSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformSha224GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha224GetKlass"></a><h3>xmlSecTransformSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA224 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2508"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSha224GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA224 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA256GETKLASS"></a><h3>xmlSecTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha256GetKlass"></a><h3>xmlSecTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2521"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA256 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA384GETKLASS"></a><h3>xmlSecTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha384GetKlass"></a><h3>xmlSecTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2534"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA384 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA512GETKLASS"></a><h3>xmlSecTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha512GetKlass"></a><h3>xmlSecTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN2547"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA512 digest transform klass or NULL if an error
occurs (the xmlsec-crypto library is not loaded or this transform is not
implemented).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPINIT"></a><h3>xmlSecCryptoAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppInit"></a><h3>xmlSecCryptoAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN2562"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2564"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the path to crypto library configuration.</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to crypto library configuration.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN2573"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPSHUTDOWN"></a><h3>xmlSecCryptoAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppShutdown"></a><h3>xmlSecCryptoAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN2587"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecCryptoAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with simple keys store <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID"><span class="TYPE">xmlSecSimpleKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecCryptoAppDefaultKeysMngrInit"></a><h3>xmlSecCryptoAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
and a default crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN2604"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2606"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN2615"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecCryptoAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecCryptoAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecCryptoAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecCryptoAppDefaultKeysMngrAdoptKey
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecCryptoAppDefaultKeysMngrInit</span></a>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrInit" title="xmlSecCryptoAppDefaultKeysMngrInit ()"><span class="type">xmlSecCryptoAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN2636"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2638"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN2653"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecCryptoAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecCryptoAppDefaultKeysMngrLoad"></a><h3>xmlSecCryptoAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecCryptoAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN2674"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2676"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrInit" title="xmlSecCryptoAppDefaultKeysMngrInit ()"><span class="type">xmlSecCryptoAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN2691"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecCryptoAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecCryptoAppDefaultKeysMngrSave"></a><h3>xmlSecCryptoAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN2712"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2714"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN2735"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecCryptoAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeysMngrCertLoad"></a><h3>xmlSecCryptoAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN2760"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2762"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN2790"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecCryptoAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppKeysMngrCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from binary buffer <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeysMngrCertLoadMemory"></a><h3>xmlSecCryptoAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppKeysMngrCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from binary buffer <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN2818"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2820"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate trusted or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN2853"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYLOAD"></a><h3>xmlSecCryptoAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecCryptoAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeyLoad"></a><h3>xmlSecCryptoAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecCryptoAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN2879"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2881"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN2914"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYLOADMEMORY"></a><h3>xmlSecCryptoAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecCryptoAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeyLoadMemory"></a><h3>xmlSecCryptoAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecCryptoAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the memory buffer.</p>
-<div class="REFSECT3">
-<a name="AEN2943"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN2945"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of binary key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of binary key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN2984"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPPKCS12LOAD"></a><h3>xmlSecCryptoAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecCryptoAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppPkcs12Load"></a><h3>xmlSecCryptoAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecCryptoAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file.
For uniformity, call xmlSecCryptoAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN3007"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3009"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN3036"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPPKCS12LOADMEMORY"></a><h3>xmlSecCryptoAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecCryptoAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppPkcs12LoadMemory"></a><h3>xmlSecCryptoAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecCryptoAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 data in memory buffer.
For uniformity, call xmlSecCryptoAppKeyLoadMemory instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN3062"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3064"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the PKCS12 binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the PKCS12 binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN3097"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYCERTLOAD"></a><h3>xmlSecCryptoAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeyCertLoad"></a><h3>xmlSecCryptoAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN3118"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3120"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN3141"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPKEYCERTLOADMEMORY"></a><h3>xmlSecCryptoAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppKeyCertLoadMemory"></a><h3>xmlSecCryptoAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Reads the certificate from memory buffer and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN3164"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3166"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN3193"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecCryptoAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
-xmlSecCryptoAppGetDefaultPwdCallback (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoAppGetDefaultPwdCallback"></a><h3>xmlSecCryptoAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecCryptoAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN3206"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAAESID"></a><h3>xmlSecKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataAesId xmlSecKeyDataAesGetKlass()</pre>
+<div class="refsect1">
+<a name="xmlsec-app.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecKeyDataAesId"></a><h3>xmlSecKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecKeyDataAesId xmlSecKeyDataAesGetKlass()
+</pre>
<p>The AES key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADESID"></a><h3>xmlSecKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataDesId xmlSecKeyDataDesGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDesId"></a><h3>xmlSecKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecKeyDataDesId xmlSecKeyDataDesGetKlass()
+</pre>
<p>The DES key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADSAID"></a><h3>xmlSecKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataDsaId xmlSecKeyDataDsaGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDsaId"></a><h3>xmlSecKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecKeyDataDsaId xmlSecKeyDataDsaGetKlass()
+</pre>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAECDSAID"></a><h3>xmlSecKeyDataEcdsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataEcdsaId xmlSecKeyDataEcdsaGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataEcdsaId"></a><h3>xmlSecKeyDataEcdsaId</h3>
+<pre class="programlisting">#define xmlSecKeyDataEcdsaId xmlSecKeyDataEcdsaGetKlass()
+</pre>
<p>The ECDSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOST2001ID"></a><h3>xmlSecKeyDataGost2001Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataGost2001Id xmlSecKeyDataGost2001GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGost2001Id"></a><h3>xmlSecKeyDataGost2001Id</h3>
+<pre class="programlisting">#define xmlSecKeyDataGost2001Id xmlSecKeyDataGost2001GetKlass()
+</pre>
<p>The GOST2001 key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOSTR3410-2012-256ID"></a><h3>xmlSecKeyDataGostR3410_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataGostR3410_2012_256Id xmlSecKeyDataGostR3410_2012_256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGostR3410-2012-256Id"></a><h3>xmlSecKeyDataGostR3410_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecKeyDataGostR3410_2012_256Id xmlSecKeyDataGostR3410_2012_256GetKlass()
+</pre>
<p>The GOST R 34.10-2012 256 bit key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGOSTR3410-2012-512ID"></a><h3>xmlSecKeyDataGostR3410_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataGostR3410_2012_512Id xmlSecKeyDataGostR3410_2012_512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGostR3410-2012-512Id"></a><h3>xmlSecKeyDataGostR3410_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecKeyDataGostR3410_2012_512Id xmlSecKeyDataGostR3410_2012_512GetKlass()
+</pre>
<p>The GOST R 34.10-2012 512 bit key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAHMACID"></a><h3>xmlSecKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataHmacId xmlSecKeyDataHmacGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataHmacId"></a><h3>xmlSecKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecKeyDataHmacId xmlSecKeyDataHmacGetKlass()
+</pre>
<p>The DHMAC key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARSAID"></a><h3>xmlSecKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataRsaId xmlSecKeyDataRsaGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataRsaId"></a><h3>xmlSecKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecKeyDataRsaId xmlSecKeyDataRsaGetKlass()
+</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAX509ID"></a><h3>xmlSecKeyDataX509Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataX509Id xmlSecKeyDataX509GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataX509Id"></a><h3>xmlSecKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecKeyDataX509Id xmlSecKeyDataX509GetKlass()
+</pre>
<p>The X509 data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARAWX509CERTID"></a><h3>xmlSecKeyDataRawX509CertId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataRawX509CertId xmlSecKeyDataRawX509CertGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataRawX509CertId"></a><h3>xmlSecKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecKeyDataRawX509CertId xmlSecKeyDataRawX509CertGetKlass()
+</pre>
<p>The raw X509 certificate klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECX509STOREID"></a><h3>xmlSecX509StoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecX509StoreId xmlSecX509StoreGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecX509StoreId"></a><h3>xmlSecX509StoreId</h3>
+<pre class="programlisting">#define xmlSecX509StoreId xmlSecX509StoreGetKlass()
+</pre>
<p>The X509 store klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES128CBCID"></a><h3>xmlSecTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformAes128CbcId xmlSecTransformAes128CbcGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes128CbcId"></a><h3>xmlSecTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecTransformAes128CbcId xmlSecTransformAes128CbcGetKlass()
+</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES192CBCID"></a><h3>xmlSecTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformAes192CbcId xmlSecTransformAes192CbcGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes192CbcId"></a><h3>xmlSecTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecTransformAes192CbcId xmlSecTransformAes192CbcGetKlass()
+</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMAES256CBCID"></a><h3>xmlSecTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformAes256CbcId xmlSecTransformAes256CbcGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes256CbcId"></a><h3>xmlSecTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecTransformAes256CbcId xmlSecTransformAes256CbcGetKlass()
+</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES128ID"></a><h3>xmlSecTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformKWAes128Id xmlSecTransformKWAes128GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformAes128GcmId"></a><h3>xmlSecTransformAes128GcmId</h3>
+<pre class="programlisting">#define xmlSecTransformAes128GcmId xmlSecTransformAes128GcmGetKlass()
+</pre>
+<p>The AES128 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformAes192GcmId"></a><h3>xmlSecTransformAes192GcmId</h3>
+<pre class="programlisting">#define xmlSecTransformAes192GcmId xmlSecTransformAes192GcmGetKlass()
+</pre>
+<p>The AES192 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformAes256GcmId"></a><h3>xmlSecTransformAes256GcmId</h3>
+<pre class="programlisting">#define xmlSecTransformAes256GcmId xmlSecTransformAes256GcmGetKlass()
+</pre>
+<p>The AES256 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes128Id"></a><h3>xmlSecTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecTransformKWAes128Id xmlSecTransformKWAes128GetKlass()
+</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES192ID"></a><h3>xmlSecTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformKWAes192Id xmlSecTransformKWAes192GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes192Id"></a><h3>xmlSecTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecTransformKWAes192Id xmlSecTransformKWAes192GetKlass()
+</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWAES256ID"></a><h3>xmlSecTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformKWAes256Id xmlSecTransformKWAes256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWAes256Id"></a><h3>xmlSecTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecTransformKWAes256Id xmlSecTransformKWAes256GetKlass()
+</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDES3CBCID"></a><h3>xmlSecTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDes3CbcId xmlSecTransformDes3CbcGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDes3CbcId"></a><h3>xmlSecTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecTransformDes3CbcId xmlSecTransformDes3CbcGetKlass()
+</pre>
<p>The Triple DES encryption transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKWDES3ID"></a><h3>xmlSecTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformKWDes3Id xmlSecTransformKWDes3GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKWDes3Id"></a><h3>xmlSecTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecTransformKWDes3Id xmlSecTransformKWDes3GetKlass()
+</pre>
<p>The DES3 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDSASHA1ID"></a><h3>xmlSecTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDsaSha1Id xmlSecTransformDsaSha1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDsaSha1Id"></a><h3>xmlSecTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecTransformDsaSha1Id xmlSecTransformDsaSha1GetKlass()
+</pre>
<p>The DSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDSASHA256ID"></a><h3>xmlSecTransformDsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDsaSha256Id xmlSecTransformDsaSha256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDsaSha256Id"></a><h3>xmlSecTransformDsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecTransformDsaSha256Id xmlSecTransformDsaSha256GetKlass()
+</pre>
<p>The DSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA1ID"></a><h3>xmlSecTransformEcdsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEcdsaSha1Id xmlSecTransformEcdsaSha1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha1Id"></a><h3>xmlSecTransformEcdsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecTransformEcdsaSha1Id xmlSecTransformEcdsaSha1GetKlass()
+</pre>
<p>The ECDSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA224ID"></a><h3>xmlSecTransformEcdsaSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEcdsaSha224Id xmlSecTransformEcdsaSha224GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha224Id"></a><h3>xmlSecTransformEcdsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecTransformEcdsaSha224Id xmlSecTransformEcdsaSha224GetKlass()
+</pre>
<p>The ECDSA-SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA256ID"></a><h3>xmlSecTransformEcdsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEcdsaSha256Id xmlSecTransformEcdsaSha256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha256Id"></a><h3>xmlSecTransformEcdsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecTransformEcdsaSha256Id xmlSecTransformEcdsaSha256GetKlass()
+</pre>
<p>The ECDSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA384ID"></a><h3>xmlSecTransformEcdsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEcdsaSha384Id xmlSecTransformEcdsaSha384GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha384Id"></a><h3>xmlSecTransformEcdsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecTransformEcdsaSha384Id xmlSecTransformEcdsaSha384GetKlass()
+</pre>
<p>The ECDS-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMECDSASHA512ID"></a><h3>xmlSecTransformEcdsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEcdsaSha512Id xmlSecTransformEcdsaSha512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEcdsaSha512Id"></a><h3>xmlSecTransformEcdsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecTransformEcdsaSha512Id xmlSecTransformEcdsaSha512GetKlass()
+</pre>
<p>The ECDSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOST2001GOSTR3411-94ID"></a><h3>xmlSecTransformGost2001GostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGost2001GostR3411_94Id xmlSecTransformGost2001GostR3411_94GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGost2001GostR3411-94Id"></a><h3>xmlSecTransformGost2001GostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecTransformGost2001GostR3411_94Id xmlSecTransformGost2001GostR3411_94GetKlass()
+</pre>
<p>The GOST2001-GOSTR3411_94 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-256ID"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGostR3410_2012GostR3411_2012_256Id xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-256Id"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecTransformGostR3410_2012GostR3411_2012_256Id xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass()
+</pre>
<p>The GOST R 34.10-2012 - GOST R 34.11-2012 256 bit signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3410-2012GOSTR3411-2012-512ID"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGostR3410_2012GostR3411_2012_512Id xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3410-2012GostR3411-2012-512Id"></a><h3>xmlSecTransformGostR3410_2012GostR3411_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecTransformGostR3410_2012GostR3411_2012_512Id xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass()
+</pre>
<p>The GOST R 34.10-2012 - GOST R 34.11-2012 512 bit signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACMD5ID"></a><h3>xmlSecTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacMd5Id xmlSecTransformHmacMd5GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacMd5Id"></a><h3>xmlSecTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacMd5Id xmlSecTransformHmacMd5GetKlass()
+</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACRIPEMD160ID"></a><h3>xmlSecTransformHmacRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacRipemd160Id xmlSecTransformHmacRipemd160GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacRipemd160Id"></a><h3>xmlSecTransformHmacRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacRipemd160Id xmlSecTransformHmacRipemd160GetKlass()
+</pre>
<p>The HMAC with RipeMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA1ID"></a><h3>xmlSecTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacSha1Id xmlSecTransformHmacSha1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha1Id"></a><h3>xmlSecTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacSha1Id xmlSecTransformHmacSha1GetKlass()
+</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA224ID"></a><h3>xmlSecTransformHmacSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacSha224Id xmlSecTransformHmacSha224GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha224Id"></a><h3>xmlSecTransformHmacSha224Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacSha224Id xmlSecTransformHmacSha224GetKlass()
+</pre>
<p>The HMAC with SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA256ID"></a><h3>xmlSecTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacSha256Id xmlSecTransformHmacSha256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha256Id"></a><h3>xmlSecTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacSha256Id xmlSecTransformHmacSha256GetKlass()
+</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA384ID"></a><h3>xmlSecTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacSha384Id xmlSecTransformHmacSha384GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha384Id"></a><h3>xmlSecTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacSha384Id xmlSecTransformHmacSha384GetKlass()
+</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMHMACSHA512ID"></a><h3>xmlSecTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformHmacSha512Id xmlSecTransformHmacSha512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformHmacSha512Id"></a><h3>xmlSecTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecTransformHmacSha512Id xmlSecTransformHmacSha512GetKlass()
+</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMD5ID"></a><h3>xmlSecTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformMd5Id xmlSecTransformMd5GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformMd5Id"></a><h3>xmlSecTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecTransformMd5Id xmlSecTransformMd5GetKlass()
+</pre>
<p>The MD5 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRIPEMD160ID"></a><h3>xmlSecTransformRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRipemd160Id xmlSecTransformRipemd160GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRipemd160Id"></a><h3>xmlSecTransformRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecTransformRipemd160Id xmlSecTransformRipemd160GetKlass()
+</pre>
<p>The RIPEMD160 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAMD5ID"></a><h3>xmlSecTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaMd5Id xmlSecTransformRsaMd5GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaMd5Id"></a><h3>xmlSecTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaMd5Id xmlSecTransformRsaMd5GetKlass()
+</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSARIPEMD160ID"></a><h3>xmlSecTransformRsaRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaRipemd160Id xmlSecTransformRsaRipemd160GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaRipemd160Id"></a><h3>xmlSecTransformRsaRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaRipemd160Id xmlSecTransformRsaRipemd160GetKlass()
+</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA1ID"></a><h3>xmlSecTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaSha1Id xmlSecTransformRsaSha1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha1Id"></a><h3>xmlSecTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaSha1Id xmlSecTransformRsaSha1GetKlass()
+</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA224ID"></a><h3>xmlSecTransformRsaSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaSha224Id xmlSecTransformRsaSha224GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha224Id"></a><h3>xmlSecTransformRsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaSha224Id xmlSecTransformRsaSha224GetKlass()
+</pre>
<p>The RSA-SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA256ID"></a><h3>xmlSecTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaSha256Id xmlSecTransformRsaSha256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha256Id"></a><h3>xmlSecTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaSha256Id xmlSecTransformRsaSha256GetKlass()
+</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA384ID"></a><h3>xmlSecTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaSha384Id xmlSecTransformRsaSha384GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha384Id"></a><h3>xmlSecTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaSha384Id xmlSecTransformRsaSha384GetKlass()
+</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSASHA512ID"></a><h3>xmlSecTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaSha512Id xmlSecTransformRsaSha512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaSha512Id"></a><h3>xmlSecTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaSha512Id xmlSecTransformRsaSha512GetKlass()
+</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAPKCS1ID"></a><h3>xmlSecTransformRsaPkcs1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaPkcs1Id xmlSecTransformRsaPkcs1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaPkcs1Id"></a><h3>xmlSecTransformRsaPkcs1Id</h3>
+<pre class="programlisting">#define xmlSecTransformRsaPkcs1Id xmlSecTransformRsaPkcs1GetKlass()
+</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMRSAOAEPID"></a><h3>xmlSecTransformRsaOaepId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRsaOaepId xmlSecTransformRsaOaepGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRsaOaepId"></a><h3>xmlSecTransformRsaOaepId</h3>
+<pre class="programlisting">#define xmlSecTransformRsaOaepId xmlSecTransformRsaOaepGetKlass()
+</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-94ID"></a><h3>xmlSecTransformGostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGostR3411_94Id xmlSecTransformGostR3411_94GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-94Id"></a><h3>xmlSecTransformGostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecTransformGostR3411_94Id xmlSecTransformGostR3411_94GetKlass()
+</pre>
<p>The GOSTR3411_94 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-2012-256ID"></a><h3>xmlSecTransformGostR3411_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGostR3411_2012_256Id xmlSecTransformGostR3411_2012_256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-2012-256Id"></a><h3>xmlSecTransformGostR3411_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecTransformGostR3411_2012_256Id xmlSecTransformGostR3411_2012_256GetKlass()
+</pre>
<p>The GOST R 34.11-2012 256 bit digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGOSTR3411-2012-512ID"></a><h3>xmlSecTransformGostR3411_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGostR3411_2012_512Id xmlSecTransformGostR3411_2012_512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGostR3411-2012-512Id"></a><h3>xmlSecTransformGostR3411_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecTransformGostR3411_2012_512Id xmlSecTransformGostR3411_2012_512GetKlass()
+</pre>
<p>The GOST R 34.11-2012 512 bit digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA1ID"></a><h3>xmlSecTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformSha1Id xmlSecTransformSha1GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha1Id"></a><h3>xmlSecTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecTransformSha1Id xmlSecTransformSha1GetKlass()
+</pre>
<p>The SHA1 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA224ID"></a><h3>xmlSecTransformSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformSha224Id xmlSecTransformSha224GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha224Id"></a><h3>xmlSecTransformSha224Id</h3>
+<pre class="programlisting">#define xmlSecTransformSha224Id xmlSecTransformSha224GetKlass()
+</pre>
<p>The SHA224 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA256ID"></a><h3>xmlSecTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformSha256Id xmlSecTransformSha256GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha256Id"></a><h3>xmlSecTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecTransformSha256Id xmlSecTransformSha256GetKlass()
+</pre>
<p>The SHA256 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA384ID"></a><h3>xmlSecTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformSha384Id xmlSecTransformSha384GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha384Id"></a><h3>xmlSecTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecTransformSha384Id xmlSecTransformSha384GetKlass()
+</pre>
<p>The SHA384 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSHA512ID"></a><h3>xmlSecTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformSha512Id xmlSecTransformSha512GetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSha512Id"></a><h3>xmlSecTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecTransformSha512Id xmlSecTransformSha512GetKlass()
+</pre>
<p>The SHA512 digest transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-ref.html"><b>&lt;&lt;&lt; XML Security Core Library API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-base64.html"><b>base64 &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-base64.html b/docs/api/xmlsec-base64.html
index 73e61fae..a8798b9e 100644
--- a/docs/api/xmlsec-base64.html
+++ b/docs/api/xmlsec-base64.html
@@ -1,575 +1,495 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>base64</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-app.html">
-<link rel="NEXT" title="bn" href="xmlsec-bn.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>base64: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-app.html" title="app">
+<link rel="next" href="xmlsec-bn.html" title="bn">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-base64.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-bn.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-BASE64"></a>base64</h1>
-<div class="REFNAMEDIV">
-<a name="AEN3552"></a><h2>Name</h2>base64 -- Base64 encoding/decoding functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BASE64.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3557"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-base64"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-base64.top_of_page"></a>base64</span></h2>
+<p>base64 — Base64 encoding/decoding functions and base64 transform implementation.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-base64.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-base64.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64GETDEFAULTLINESIZE">xmlSecBase64GetDefaultLineSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64GetDefaultLineSize" title="xmlSecBase64GetDefaultLineSize ()">xmlSecBase64GetDefaultLineSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64SETDEFAULTLINESIZE">xmlSecBase64SetDefaultLineSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64SetDefaultLineSize" title="xmlSecBase64SetDefaultLineSize ()">xmlSecBase64SetDefaultLineSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecBase64CtxPtr</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXCREATE">xmlSecBase64CtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecBase64CtxPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxCreate" title="xmlSecBase64CtxCreate ()">xmlSecBase64CtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXDESTROY">xmlSecBase64CtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxDestroy" title="xmlSecBase64CtxDestroy ()">xmlSecBase64CtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXINITIALIZE">xmlSecBase64CtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxInitialize" title="xmlSecBase64CtxInitialize ()">xmlSecBase64CtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXFINALIZE">xmlSecBase64CtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxFinalize" title="xmlSecBase64CtxFinalize ()">xmlSecBase64CtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXUPDATE">xmlSecBase64CtxUpdate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxUpdate" title="xmlSecBase64CtxUpdate ()">xmlSecBase64CtxUpdate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64CTXFINAL">xmlSecBase64CtxFinal</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64CtxFinal" title="xmlSecBase64CtxFinal ()">xmlSecBase64CtxFinal</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64ENCODE">xmlSecBase64Encode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64Encode" title="xmlSecBase64Encode ()">xmlSecBase64Encode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-base64.html#XMLSECBASE64DECODE">xmlSecBase64Decode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-base64.html#xmlSecBase64Decode" title="xmlSecBase64Decode ()">xmlSecBase64Decode</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BASE64.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3632"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-base64.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-base64.html#XMLSEC-BASE64-LINESIZE:CAPS">XMLSEC_BASE64_LINESIZE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-base64.html#XMLSEC-BASE64-LINESIZE:CAPS" title="XMLSEC_BASE64_LINESIZE">XMLSEC_BASE64_LINESIZE</a></td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-base64.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BASE64.DESCRIPTION"></a><h2>Description</h2>
-<p>Base64 encoding/decoding functions.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BASE64.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECBASE64GETDEFAULTLINESIZE"></a><h3>xmlSecBase64GetDefaultLineSize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBase64GetDefaultLineSize (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-base64.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecBase64GetDefaultLineSize"></a><h3>xmlSecBase64GetDefaultLineSize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBase64GetDefaultLineSize (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the current default line size.</p>
-<div class="REFSECT3">
-<a name="AEN3654"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64GetDefaultLineSize.returns"></a><h4>Returns</h4>
<p> the current default line size.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64SETDEFAULTLINESIZE"></a><h3>xmlSecBase64SetDefaultLineSize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBase64SetDefaultLineSize (<code class="PARAMETER"><font><span class="TYPE">int</span></font> columns</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64SetDefaultLineSize"></a><h3>xmlSecBase64SetDefaultLineSize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBase64SetDefaultLineSize (<em class="parameter"><code><font><span class="type">int</span></font> columns</code></em>);</pre>
<p>Sets the current default line size.</p>
-<div class="REFSECT3">
-<a name="AEN3668"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3670"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64SetDefaultLineSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>columns</p></td>
-<td><p>number of columns</p></td>
-<td> </td>
+<td class="parameter_name"><p>columns</p></td>
+<td class="parameter_description"><p>number of columns</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXCREATE"></a><h3>xmlSecBase64CtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecBase64CtxPtr</span></font>
-xmlSecBase64CtxCreate (<code class="PARAMETER"><font><span class="TYPE">int</span></font> encode</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> columns</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64CtxCreate"></a><h3>xmlSecBase64CtxCreate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecBase64CtxPtr</span></font>
+xmlSecBase64CtxCreate (<em class="parameter"><code><font><span class="type">int</span></font> encode</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> columns</code></em>);</pre>
<p>Allocates and initializes new base64 context.</p>
-<div class="REFSECT3">
-<a name="AEN3693"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3695"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encode</p></td>
-<td><p>the encode/decode flag (1 - encode, 0 - decode)</p></td>
-<td> </td>
+<td class="parameter_name"><p>encode</p></td>
+<td class="parameter_description"><p>the encode/decode flag (1 - encode, 0 - decode)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>columns</p></td>
-<td><p>the max line length.</p></td>
-<td> </td>
+<td class="parameter_name"><p>columns</p></td>
+<td class="parameter_description"><p>the max line length.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN3710"></a><h4>Returns</h4>
-<p> a pointer to newly created <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure
+<div class="refsect3">
+<a name="xmlSecBase64CtxCreate.returns"></a><h4>Returns</h4>
+<p> a pointer to newly created <font><span class="type">xmlSecBase64Ctx</span></font> structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXDESTROY"></a><h3>xmlSecBase64CtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBase64CtxDestroy (<code class="PARAMETER"><font><span class="TYPE">xmlSecBase64CtxPtr</span></font> ctx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64CtxDestroy"></a><h3>xmlSecBase64CtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBase64CtxDestroy (<em class="parameter"><code><font><span class="type">xmlSecBase64CtxPtr</span></font> ctx</code></em>);</pre>
<p>Destroys base64 context.</p>
-<div class="REFSECT3">
-<a name="AEN3726"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3728"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to <font><span class="type">xmlSecBase64Ctx</span></font> structure.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXINITIALIZE"></a><h3>xmlSecBase64CtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBase64CtxInitialize (<code class="PARAMETER"><font><span class="TYPE">xmlSecBase64CtxPtr</span></font> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> encode</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> columns</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64CtxInitialize"></a><h3>xmlSecBase64CtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBase64CtxInitialize (<em class="parameter"><code><font><span class="type">xmlSecBase64CtxPtr</span></font> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> encode</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> columns</code></em>);</pre>
<p>Initializes new base64 context.</p>
-<div class="REFSECT3">
-<a name="AEN3756"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3758"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure,</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to <font><span class="type">xmlSecBase64Ctx</span></font> structure,</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>encode</p></td>
-<td><p>the encode/decode flag (1 - encode, 0 - decode)</p></td>
-<td> </td>
+<td class="parameter_name"><p>encode</p></td>
+<td class="parameter_description"><p>the encode/decode flag (1 - encode, 0 - decode)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>columns</p></td>
-<td><p>the max line length.</p></td>
-<td> </td>
+<td class="parameter_name"><p>columns</p></td>
+<td class="parameter_description"><p>the max line length.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN3781"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64CtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXFINALIZE"></a><h3>xmlSecBase64CtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBase64CtxFinalize (<code class="PARAMETER"><font><span class="TYPE">xmlSecBase64CtxPtr</span></font> ctx</code>);</pre>
-<p>Frees all the resources allocated by <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecBase64CtxFinalize"></a><h3>xmlSecBase64CtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBase64CtxFinalize (<em class="parameter"><code><font><span class="type">xmlSecBase64CtxPtr</span></font> ctx</code></em>);</pre>
+<p>Frees all the resources allocated by <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN3796"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3798"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure,</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to <font><span class="type">xmlSecBase64Ctx</span></font> structure,</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXUPDATE"></a><h3>xmlSecBase64CtxUpdate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBase64CtxUpdate (<code class="PARAMETER"><font><span class="TYPE">xmlSecBase64CtxPtr</span></font> ctx</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *in</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> inSize</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *out</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> outSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64CtxUpdate"></a><h3>xmlSecBase64CtxUpdate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBase64CtxUpdate (<em class="parameter"><code><font><span class="type">xmlSecBase64CtxPtr</span></font> ctx</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *in</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> inSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *out</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> outSize</code></em>);</pre>
<p>Encodes or decodes the next piece of data from input buffer.</p>
-<div class="REFSECT3">
-<a name="AEN3832"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3834"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxUpdate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to <font><span class="type">xmlSecBase64Ctx</span></font> structure</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>in</p></td>
-<td><p>the input buffer</p></td>
-<td> </td>
+<td class="parameter_name"><p>in</p></td>
+<td class="parameter_description"><p>the input buffer</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>inSize</p></td>
-<td><p>the input buffer size</p></td>
-<td> </td>
+<td class="parameter_name"><p>inSize</p></td>
+<td class="parameter_description"><p>the input buffer size</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>out</p></td>
-<td><p>the output buffer</p></td>
-<td> </td>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>the output buffer</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>outSize</p></td>
-<td><p>the output buffer size</p></td>
-<td> </td>
+<td class="parameter_name"><p>outSize</p></td>
+<td class="parameter_description"><p>the output buffer size</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN3869"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64CtxUpdate.returns"></a><h4>Returns</h4>
<p> the number of bytes written to output buffer or
-1 if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64CTXFINAL"></a><h3>xmlSecBase64CtxFinal ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBase64CtxFinal (<code class="PARAMETER"><font><span class="TYPE">xmlSecBase64CtxPtr</span></font> ctx</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *out</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> outSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64CtxFinal"></a><h3>xmlSecBase64CtxFinal ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBase64CtxFinal (<em class="parameter"><code><font><span class="type">xmlSecBase64CtxPtr</span></font> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *out</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> outSize</code></em>);</pre>
<p>Encodes or decodes the last piece of data stored in the context
and finalizes the result.</p>
-<div class="REFSECT3">
-<a name="AEN3889"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3891"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64CtxFinal.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to <font><span class="TYPE">xmlSecBase64Ctx</span></font> structure</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to <font><span class="type">xmlSecBase64Ctx</span></font> structure</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>out</p></td>
-<td><p>the output buffer</p></td>
-<td> </td>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>the output buffer</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>outSize</p></td>
-<td><p>the output buffer size</p></td>
-<td> </td>
+<td class="parameter_name"><p>outSize</p></td>
+<td class="parameter_description"><p>the output buffer size</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN3914"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64CtxFinal.returns"></a><h4>Returns</h4>
<p> the number of bytes written to output buffer or
-1 if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64ENCODE"></a><h3>xmlSecBase64Encode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecBase64Encode (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> len</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> columns</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64Encode"></a><h3>xmlSecBase64Encode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecBase64Encode (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> len</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> columns</code></em>);</pre>
<p>Encodes the data from input buffer and allocates the string for the result.
The caller is responsible for freeing returned buffer using
-<font><code class="FUNCTION">xmlFree()</code></font> function.</p>
-<div class="REFSECT3">
-<a name="AEN3936"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3938"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<font><code class="function">xmlFree()</code></font> function.</p>
+<div class="refsect3">
+<a name="xmlSecBase64Encode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the input buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the input buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>len</p></td>
-<td><p>the input buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>the input buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>columns</p></td>
-<td><p>the output max line length (if 0 then no line breaks
+<td class="parameter_name"><p>columns</p></td>
+<td class="parameter_description"><p>the output max line length (if 0 then no line breaks
would be inserted)</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN3959"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64Encode.returns"></a><h4>Returns</h4>
<p> newly allocated string with base64 encoded data
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBASE64DECODE"></a><h3>xmlSecBase64Decode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBase64Decode (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> len</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBase64Decode"></a><h3>xmlSecBase64Decode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBase64Decode (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> len</code></em>);</pre>
<p>Decodes input base64 encoded string and puts result into
the output buffer.</p>
-<div class="REFSECT3">
-<a name="AEN3979"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN3981"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBase64Decode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>str</p></td>
-<td><p>the input buffer with base64 encoded string</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the input buffer with base64 encoded string</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the output buffer</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the output buffer</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>len</p></td>
-<td><p>the output buffer size</p></td>
-<td> </td>
+<td class="parameter_name"><p>len</p></td>
+<td class="parameter_description"><p>the output buffer size</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4002"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBase64Decode.returns"></a><h4>Returns</h4>
<p> the number of bytes written to the output buffer or
a negative value if an error occurs</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BASE64.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-base64.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
<a name="XMLSEC-BASE64-LINESIZE:CAPS"></a><h3>XMLSEC_BASE64_LINESIZE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_BASE64_LINESIZE 64</pre>
+<pre class="programlisting">#define XMLSEC_BASE64_LINESIZE 64
+</pre>
<p>The default maximum base64 encoded line size.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-bn.html"><b>bn &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-bn.html b/docs/api/xmlsec-bn.html
index d863fd3a..287a171c 100644
--- a/docs/api/xmlsec-bn.html
+++ b/docs/api/xmlsec-bn.html
@@ -1,1217 +1,1129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>bn</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="base64" href="xmlsec-base64.html">
-<link rel="NEXT" title="buffer" href="xmlsec-buffer.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>bn: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-base64.html" title="base64">
+<link rel="next" href="xmlsec-buffer.html" title="buffer">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-bn.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-base64.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-base64.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-buffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-BN"></a>bn</h1>
-<div class="REFNAMEDIV">
-<a name="AEN4018"></a><h2>Name</h2>bn -- Big numbers support functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BN.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4023"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-bn"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-bn.top_of_page"></a>bn</span></h2>
+<p>bn — Big numbers support functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-bn.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-bn.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecBnPtr</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNCREATE">xmlSecBnCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecBnPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnCreate" title="xmlSecBnCreate ()">xmlSecBnCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNDESTROY">xmlSecBnDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnDestroy" title="xmlSecBnDestroy ()">xmlSecBnDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNINITIALIZE">xmlSecBnInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnInitialize" title="xmlSecBnInitialize ()">xmlSecBnInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNFINALIZE">xmlSecBnFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnFinalize" title="xmlSecBnFinalize ()">xmlSecBnFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="RETURNVALUE">xmlSecByte</span></a> *</td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNGETDATA">xmlSecBnGetData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="returnvalue">xmlSecByte</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnGetData" title="xmlSecBnGetData ()">xmlSecBnGetData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNSETDATA">xmlSecBnSetData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnSetData" title="xmlSecBnSetData ()">xmlSecBnSetData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNGETSIZE">xmlSecBnGetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnGetSize" title="xmlSecBnGetSize ()">xmlSecBnGetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNZERO">xmlSecBnZero</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnZero" title="xmlSecBnZero ()">xmlSecBnZero</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNFROMSTRING">xmlSecBnFromString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnFromString" title="xmlSecBnFromString ()">xmlSecBnFromString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNTOSTRING">xmlSecBnToString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnToString" title="xmlSecBnToString ()">xmlSecBnToString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNFROMHEXSTRING">xmlSecBnFromHexString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnFromHexString" title="xmlSecBnFromHexString ()">xmlSecBnFromHexString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNTOHEXSTRING">xmlSecBnToHexString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnToHexString" title="xmlSecBnToHexString ()">xmlSecBnToHexString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNFROMDECSTRING">xmlSecBnFromDecString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnFromDecString" title="xmlSecBnFromDecString ()">xmlSecBnFromDecString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNTODECSTRING">xmlSecBnToDecString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnToDecString" title="xmlSecBnToDecString ()">xmlSecBnToDecString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNMUL">xmlSecBnMul</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnMul" title="xmlSecBnMul ()">xmlSecBnMul</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNDIV">xmlSecBnDiv</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnDiv" title="xmlSecBnDiv ()">xmlSecBnDiv</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNADD">xmlSecBnAdd</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnAdd" title="xmlSecBnAdd ()">xmlSecBnAdd</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNREVERSE">xmlSecBnReverse</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnReverse" title="xmlSecBnReverse ()">xmlSecBnReverse</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNCOMPARE">xmlSecBnCompare</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnCompare" title="xmlSecBnCompare ()">xmlSecBnCompare</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNCOMPAREREVERSE">xmlSecBnCompareReverse</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnCompareReverse" title="xmlSecBnCompareReverse ()">xmlSecBnCompareReverse</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNGETNODEVALUE">xmlSecBnGetNodeValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnGetNodeValue" title="xmlSecBnGetNodeValue ()">xmlSecBnGetNodeValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNSETNODEVALUE">xmlSecBnSetNodeValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnSetNodeValue" title="xmlSecBnSetNodeValue ()">xmlSecBnSetNodeValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-bn.html#XMLSECBNBLOBSETNODEVALUE">xmlSecBnBlobSetNodeValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-bn.html#xmlSecBnBlobSetNodeValue" title="xmlSecBnBlobSetNodeValue ()">xmlSecBnBlobSetNodeValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BN.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4189"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-bn.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>enum</td>
-<td><a href="xmlsec-bn.html#XMLSECBNFORMAT">xmlSecBnFormat</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-bn.html#xmlSecBnFormat" title="enum xmlSecBnFormat">xmlSecBnFormat</a></td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-bn.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BN.DESCRIPTION"></a><h2>Description</h2>
-<p>Big numbers support functions.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BN.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECBNCREATE"></a><h3>xmlSecBnCreate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecBnPtr</span></font>
-xmlSecBnCreate (<code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-bn.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecBnCreate"></a><h3>xmlSecBnCreate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecBnPtr</span></font>
+xmlSecBnCreate (<em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
<p>Creates a new BN object. Caller is responsible for destroying it
-by calling <code class="PARAMETER">xmlSecBnDestroy</code>
+by calling <em class="parameter"><code>xmlSecBnDestroy</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN4213"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4215"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>size</p></td>
-<td><p>the initial allocated BN size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the initial allocated BN size.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4224"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnCreate.returns"></a><h4>Returns</h4>
<p> the newly BN or a NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNDESTROY"></a><h3>xmlSecBnDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBnDestroy (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Destroys <code class="PARAMETER">bn</code>
- object created with <code class="PARAMETER">xmlSecBnCreate</code>
+<div class="refsect2">
+<a name="xmlSecBnDestroy"></a><h3>xmlSecBnDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBnDestroy (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Destroys <em class="parameter"><code>bn</code></em>
+ object created with <em class="parameter"><code>xmlSecBnCreate</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN4240"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4242"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNINITIALIZE"></a><h3>xmlSecBnInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnInitialize (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBnInitialize"></a><h3>xmlSecBnInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnInitialize (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
<p>Initializes a BN object. Caller is responsible for destroying it
-by calling <code class="PARAMETER">xmlSecBnFinalize</code>
+by calling <em class="parameter"><code>xmlSecBnFinalize</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN4266"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4268"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the initial allocated BN size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the initial allocated BN size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4283"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNFINALIZE"></a><h3>xmlSecBnFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBnFinalize (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Destroys <code class="PARAMETER">bn</code>
- object created with <code class="PARAMETER">xmlSecBnInitialize</code>
+<div class="refsect2">
+<a name="xmlSecBnFinalize"></a><h3>xmlSecBnFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBnFinalize (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Destroys <em class="parameter"><code>bn</code></em>
+ object created with <em class="parameter"><code>xmlSecBnInitialize</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN4299"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4301"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNGETDATA"></a><h3>xmlSecBnGetData ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="RETURNVALUE">xmlSecByte</span></a> *
-xmlSecBnGetData (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Gets pointer to the binary <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnGetData"></a><h3>xmlSecBnGetData ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="returnvalue">xmlSecByte</span></a> *
+xmlSecBnGetData (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Gets pointer to the binary <em class="parameter"><code>bn</code></em>
representation.</p>
-<div class="REFSECT3">
-<a name="AEN4322"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4324"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnGetData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4333"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnGetData.returns"></a><h4>Returns</h4>
<p> pointer to binary BN data or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNSETDATA"></a><h3>xmlSecBnSetData ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnSetData (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Sets the value of <code class="PARAMETER">bn</code>
- to <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBnSetData"></a><h3>xmlSecBnSetData ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnSetData (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Sets the value of <em class="parameter"><code>bn</code></em>
+ to <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4355"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4357"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnSetData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to new BN binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to new BN binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the size of new BN data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the size of new BN data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4378"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnSetData.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNGETSIZE"></a><h3>xmlSecBnGetSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecBnGetSize (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Gets the size of binary data in <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnGetSize"></a><h3>xmlSecBnGetSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecBnGetSize (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Gets the size of binary data in <em class="parameter"><code>bn</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4393"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4395"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnGetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4404"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnGetSize.returns"></a><h4>Returns</h4>
<p> the size of binary data.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNZERO"></a><h3>xmlSecBnZero ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBnZero (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Sets the value of <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnZero"></a><h3>xmlSecBnZero ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBnZero (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Sets the value of <em class="parameter"><code>bn</code></em>
to zero.</p>
-<div class="REFSECT3">
-<a name="AEN4419"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4421"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnZero.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNFROMSTRING"></a><h3>xmlSecBnFromString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnFromString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> base</code>);</pre>
-<p>Reads <code class="PARAMETER">bn</code>
- from string <code class="PARAMETER">str</code>
- assuming it has base <code class="PARAMETER">base</code>
+<div class="refsect2">
+<a name="xmlSecBnFromString"></a><h3>xmlSecBnFromString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnFromString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> base</code></em>);</pre>
+<p>Reads <em class="parameter"><code>bn</code></em>
+ from string <em class="parameter"><code>str</code></em>
+ assuming it has base <em class="parameter"><code>base</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4450"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4452"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnFromString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>str</p></td>
-<td><p>the string with BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string with BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>base</p></td>
-<td><p>the base for <code class="PARAMETER">str</code>
+<td class="parameter_name"><p>base</p></td>
+<td class="parameter_description"><p>the base for <em class="parameter"><code>str</code></em>
.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4474"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnFromString.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNTOSTRING"></a><h3>xmlSecBnToString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecBnToString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> base</code>);</pre>
-<p>Writes <code class="PARAMETER">bn</code>
- to string with base <code class="PARAMETER">base</code>
+<div class="refsect2">
+<a name="xmlSecBnToString"></a><h3>xmlSecBnToString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecBnToString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> base</code></em>);</pre>
+<p>Writes <em class="parameter"><code>bn</code></em>
+ to string with base <em class="parameter"><code>base</code></em>
. Caller is responsible for
-freeing returned string with <code class="PARAMETER">xmlFree</code>
+freeing returned string with <em class="parameter"><code>xmlFree</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4494"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4496"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnToString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>base</p></td>
-<td><p>the base for returned string.</p></td>
-<td> </td>
+<td class="parameter_name"><p>base</p></td>
+<td class="parameter_description"><p>the base for returned string.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4511"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnToString.returns"></a><h4>Returns</h4>
<p> the string represenataion if BN or a NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNFROMHEXSTRING"></a><h3>xmlSecBnFromHexString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnFromHexString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Reads <code class="PARAMETER">bn</code>
- from hex string <code class="PARAMETER">str</code>
+<div class="refsect2">
+<a name="xmlSecBnFromHexString"></a><h3>xmlSecBnFromHexString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnFromHexString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Reads <em class="parameter"><code>bn</code></em>
+ from hex string <em class="parameter"><code>str</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4530"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4532"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnFromHexString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>str</p></td>
-<td><p>the string with BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string with BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4547"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnFromHexString.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNTOHEXSTRING"></a><h3>xmlSecBnToHexString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecBnToHexString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Writes <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnToHexString"></a><h3>xmlSecBnToHexString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecBnToHexString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Writes <em class="parameter"><code>bn</code></em>
to hex string. Caller is responsible for
-freeing returned string with <code class="PARAMETER">xmlFree</code>
+freeing returned string with <em class="parameter"><code>xmlFree</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4563"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4565"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnToHexString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4574"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnToHexString.returns"></a><h4>Returns</h4>
<p> the string represenataion if BN or a NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNFROMDECSTRING"></a><h3>xmlSecBnFromDecString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnFromDecString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Reads <code class="PARAMETER">bn</code>
- from decimal string <code class="PARAMETER">str</code>
+<div class="refsect2">
+<a name="xmlSecBnFromDecString"></a><h3>xmlSecBnFromDecString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnFromDecString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Reads <em class="parameter"><code>bn</code></em>
+ from decimal string <em class="parameter"><code>str</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4593"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4595"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnFromDecString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>str</p></td>
-<td><p>the string with BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string with BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4610"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnFromDecString.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNTODECSTRING"></a><h3>xmlSecBnToDecString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecBnToDecString (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Writes <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnToDecString"></a><h3>xmlSecBnToDecString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecBnToDecString (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Writes <em class="parameter"><code>bn</code></em>
to decimal string. Caller is responsible for
-freeing returned string with <code class="PARAMETER">xmlFree</code>
+freeing returned string with <em class="parameter"><code>xmlFree</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4626"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4628"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnToDecString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4637"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnToDecString.returns"></a><h4>Returns</h4>
<p> the string represenataion if BN or a NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNMUL"></a><h3>xmlSecBnMul ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnMul (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> multiplier</code>);</pre>
-<p>Multiplies <code class="PARAMETER">bn</code>
- with <code class="PARAMETER">multiplier</code>
+<div class="refsect2">
+<a name="xmlSecBnMul"></a><h3>xmlSecBnMul ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnMul (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> multiplier</code></em>);</pre>
+<p>Multiplies <em class="parameter"><code>bn</code></em>
+ with <em class="parameter"><code>multiplier</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4656"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4658"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnMul.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>multiplier</p></td>
-<td><p>the multiplier.</p></td>
-<td> </td>
+<td class="parameter_name"><p>multiplier</p></td>
+<td class="parameter_description"><p>the multiplier.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4673"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnMul.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNDIV"></a><h3>xmlSecBnDiv ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnDiv (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> divider</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> *mod</code>);</pre>
-<p>Divides <code class="PARAMETER">bn</code>
- by <code class="PARAMETER">divider</code>
- and places modulus into <code class="PARAMETER">mod</code>
+<div class="refsect2">
+<a name="xmlSecBnDiv"></a><h3>xmlSecBnDiv ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnDiv (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> divider</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> *mod</code></em>);</pre>
+<p>Divides <em class="parameter"><code>bn</code></em>
+ by <em class="parameter"><code>divider</code></em>
+ and places modulus into <em class="parameter"><code>mod</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4696"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4698"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnDiv.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>divider</p></td>
-<td><p>the divider</p></td>
-<td> </td>
+<td class="parameter_name"><p>divider</p></td>
+<td class="parameter_description"><p>the divider</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mod</p></td>
-<td><p>the pointer for modulus result.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mod</p></td>
+<td class="parameter_description"><p>the pointer for modulus result.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4719"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnDiv.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNADD"></a><h3>xmlSecBnAdd ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnAdd (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> delta</code>);</pre>
-<p>Adds <code class="PARAMETER">delta</code>
- to <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnAdd"></a><h3>xmlSecBnAdd ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnAdd (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> delta</code></em>);</pre>
+<p>Adds <em class="parameter"><code>delta</code></em>
+ to <em class="parameter"><code>bn</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4738"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4740"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnAdd.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>delta</p></td>
-<td><p>the delta.</p></td>
-<td> </td>
+<td class="parameter_name"><p>delta</p></td>
+<td class="parameter_description"><p>the delta.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4755"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnAdd.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNREVERSE"></a><h3>xmlSecBnReverse ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnReverse (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>);</pre>
-<p>Reverses bytes order in <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnReverse"></a><h3>xmlSecBnReverse ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnReverse (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>);</pre>
+<p>Reverses bytes order in <em class="parameter"><code>bn</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4770"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4772"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnReverse.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4781"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnReverse.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNCOMPARE"></a><h3>xmlSecBnCompare ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnCompare (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>);</pre>
-<p>Compares the <code class="PARAMETER">bn</code>
- with <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBnCompare"></a><h3>xmlSecBnCompare ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnCompare (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>);</pre>
+<p>Compares the <em class="parameter"><code>bn</code></em>
+ with <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4803"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4805"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnCompare.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the data to compare BN to.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data to compare BN to.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the <code class="PARAMETER">data</code>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the <em class="parameter"><code>data</code></em>
size.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4827"></a><h4>Returns</h4>
-<p> 0 if data is equal, negative value if <code class="PARAMETER">bn</code>
-is less or positive value if <code class="PARAMETER">bn</code>
-is greater than <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecBnCompare.returns"></a><h4>Returns</h4>
+<p> 0 if data is equal, negative value if <em class="parameter"><code>bn</code></em>
+is less or positive value if <em class="parameter"><code>bn</code></em>
+is greater than <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNCOMPAREREVERSE"></a><h3>xmlSecBnCompareReverse ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnCompareReverse (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>);</pre>
-<p>Compares the <code class="PARAMETER">bn</code>
- with reverse <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBnCompareReverse"></a><h3>xmlSecBnCompareReverse ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnCompareReverse (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>);</pre>
+<p>Compares the <em class="parameter"><code>bn</code></em>
+ with reverse <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4852"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4854"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnCompareReverse.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the data to compare BN to.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data to compare BN to.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the <code class="PARAMETER">data</code>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the <em class="parameter"><code>data</code></em>
size.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN4876"></a><h4>Returns</h4>
-<p> 0 if data is equal, negative value if <code class="PARAMETER">bn</code>
-is less or positive value if <code class="PARAMETER">bn</code>
-is greater than <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecBnCompareReverse.returns"></a><h4>Returns</h4>
+<p> 0 if data is equal, negative value if <em class="parameter"><code>bn</code></em>
+is less or positive value if <em class="parameter"><code>bn</code></em>
+is greater than <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNGETNODEVALUE"></a><h3>xmlSecBnGetNodeValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnGetNodeValue (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><a href="xmlsec-bn.html#XMLSECBNFORMAT"><span class="TYPE">xmlSecBnFormat</span></a> format</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reverse</code>);</pre>
-<p>Converts the node content from <code class="PARAMETER">format</code>
- to <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnGetNodeValue"></a><h3>xmlSecBnGetNodeValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnGetNodeValue (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-bn.html#xmlSecBnFormat" title="enum xmlSecBnFormat"><span class="type">xmlSecBnFormat</span></a> format</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reverse</code></em>);</pre>
+<p>Converts the node content from <em class="parameter"><code>format</code></em>
+ to <em class="parameter"><code>bn</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN4904"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4906"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnGetNodeValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the poitner to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the BN format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the BN format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reverse</p></td>
-<td><p>if set then reverse read buffer after reading.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reverse</p></td>
+<td class="parameter_description"><p>if set then reverse read buffer after reading.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4933"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnGetNodeValue.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative values if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNSETNODEVALUE"></a><h3>xmlSecBnSetNodeValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnSetNodeValue (<code class="PARAMETER"><font><span class="TYPE">xmlSecBnPtr</span></font> bn</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><a href="xmlsec-bn.html#XMLSECBNFORMAT"><span class="TYPE">xmlSecBnFormat</span></a> format</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reverse</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> addLineBreaks</code>);</pre>
-<p>Converts the <code class="PARAMETER">bn</code>
+<div class="refsect2">
+<a name="xmlSecBnSetNodeValue"></a><h3>xmlSecBnSetNodeValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnSetNodeValue (<em class="parameter"><code><font><span class="type">xmlSecBnPtr</span></font> bn</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-bn.html#xmlSecBnFormat" title="enum xmlSecBnFormat"><span class="type">xmlSecBnFormat</span></a> format</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reverse</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> addLineBreaks</code></em>);</pre>
+<p>Converts the <em class="parameter"><code>bn</code></em>
and sets it to node content.</p>
-<div class="REFSECT3">
-<a name="AEN4960"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN4962"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnSetNodeValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bn</p></td>
-<td><p>the pointer to BN.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bn</p></td>
+<td class="parameter_description"><p>the pointer to BN.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the poitner to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the BN format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the BN format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reverse</p></td>
-<td><p>the flag that indicates whether to reverse the buffer before writing.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reverse</p></td>
+<td class="parameter_description"><p>the flag that indicates whether to reverse the buffer before writing.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>addLineBreaks</p></td>
-<td><p>the flag; it is equal to 1 then linebreaks will be added before and after new buffer content.</p></td>
-<td> </td>
+<td class="parameter_name"><p>addLineBreaks</p></td>
+<td class="parameter_description"><p>the flag; it is equal to 1 then linebreaks will be added before and after new buffer content.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN4995"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnSetNodeValue.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative values if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBNBLOBSETNODEVALUE"></a><h3>xmlSecBnBlobSetNodeValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBnBlobSetNodeValue (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><a href="xmlsec-bn.html#XMLSECBNFORMAT"><span class="TYPE">xmlSecBnFormat</span></a> format</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reverse</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> addLineBreaks</code>);</pre>
-<p>Converts the <code class="PARAMETER">blob</code>
+<div class="refsect2">
+<a name="xmlSecBnBlobSetNodeValue"></a><h3>xmlSecBnBlobSetNodeValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBnBlobSetNodeValue (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-bn.html#xmlSecBnFormat" title="enum xmlSecBnFormat"><span class="type">xmlSecBnFormat</span></a> format</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reverse</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> addLineBreaks</code></em>);</pre>
+<p>Converts the <em class="parameter"><code>blob</code></em>
and sets it to node content.</p>
-<div class="REFSECT3">
-<a name="AEN5025"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5027"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnBlobSetNodeValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to BN blob.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to BN blob.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of BN blob.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of BN blob.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the poitner to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the BN format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the BN format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reverse</p></td>
-<td><p>the flag that indicates whether to reverse the buffer before writing.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reverse</p></td>
+<td class="parameter_description"><p>the flag that indicates whether to reverse the buffer before writing.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>addLineBreaks</p></td>
-<td><p>if the flag is equal to 1 then
+<td class="parameter_name"><p>addLineBreaks</p></td>
+<td class="parameter_description"><p>if the flag is equal to 1 then
linebreaks will be added before and after
new buffer content.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5066"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBnBlobSetNodeValue.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative values if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BN.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECBNFORMAT"></a><h3>enum xmlSecBnFormat</h3>
+<div class="refsect1">
+<a name="xmlsec-bn.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecBnFormat"></a><h3>enum xmlSecBnFormat</h3>
<p>The big numbers formats.</p>
-<div class="REFSECT3">
-<a name="AEN5076"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5078"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBnFormat.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecBnBase64</p></td>
-<td><p>the base64 decoded binary blob.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecBnBase64"></a>xmlSecBnBase64</p></td>
+<td class="enum_member_description"><p>the base64 decoded binary blob.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecBnHex</p></td>
-<td><p>the hex number.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecBnHex"></a>xmlSecBnHex</p></td>
+<td class="enum_member_description"><p>the hex number.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecBnDec</p></td>
-<td><p>the decimal number.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecBnDec"></a>xmlSecBnDec</p></td>
+<td class="enum_member_description"><p>the decimal number.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-base64.html"><b>&lt;&lt;&lt; base64</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-buffer.html"><b>buffer &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-buffer.html b/docs/api/xmlsec-buffer.html
index e06c5c90..61fc4b3d 100644
--- a/docs/api/xmlsec-buffer.html
+++ b/docs/api/xmlsec-buffer.html
@@ -1,1047 +1,961 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>buffer</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="bn" href="xmlsec-bn.html">
-<link rel="NEXT" title="dl" href="xmlsec-dl.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>buffer: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-bn.html" title="bn">
+<link rel="next" href="xmlsec-dl.html" title="dl">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-buffer.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-bn.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-bn.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-dl.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-BUFFER"></a>buffer</h1>
-<div class="REFNAMEDIV">
-<a name="AEN5104"></a><h2>Name</h2>buffer -- Binary buffer implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BUFFER.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5109"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-buffer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-buffer.top_of_page"></a>buffer</span></h2>
+<p>buffer — Binary memory buffer functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-buffer.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-buffer.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERSETDEFAULTALLOCMODE">xmlSecBufferSetDefaultAllocMode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferSetDefaultAllocMode" title="xmlSecBufferSetDefaultAllocMode ()">xmlSecBufferSetDefaultAllocMode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERCREATE">xmlSecBufferCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferCreate" title="xmlSecBufferCreate ()">xmlSecBufferCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERDESTROY">xmlSecBufferDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferDestroy" title="xmlSecBufferDestroy ()">xmlSecBufferDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERINITIALIZE">xmlSecBufferInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferInitialize" title="xmlSecBufferInitialize ()">xmlSecBufferInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERFINALIZE">xmlSecBufferFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferFinalize" title="xmlSecBufferFinalize ()">xmlSecBufferFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="RETURNVALUE">xmlSecByte</span></a> *</td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERGETDATA">xmlSecBufferGetData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="returnvalue">xmlSecByte</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferGetData" title="xmlSecBufferGetData ()">xmlSecBufferGetData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERSETDATA">xmlSecBufferSetData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferSetData" title="xmlSecBufferSetData ()">xmlSecBufferSetData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERGETSIZE">xmlSecBufferGetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferGetSize" title="xmlSecBufferGetSize ()">xmlSecBufferGetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERSETSIZE">xmlSecBufferSetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferSetSize" title="xmlSecBufferSetSize ()">xmlSecBufferSetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERGETMAXSIZE">xmlSecBufferGetMaxSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferGetMaxSize" title="xmlSecBufferGetMaxSize ()">xmlSecBufferGetMaxSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERSETMAXSIZE">xmlSecBufferSetMaxSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferSetMaxSize" title="xmlSecBufferSetMaxSize ()">xmlSecBufferSetMaxSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFEREMPTY">xmlSecBufferEmpty</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferEmpty" title="xmlSecBufferEmpty ()">xmlSecBufferEmpty</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERAPPEND">xmlSecBufferAppend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferAppend" title="xmlSecBufferAppend ()">xmlSecBufferAppend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERPREPEND">xmlSecBufferPrepend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferPrepend" title="xmlSecBufferPrepend ()">xmlSecBufferPrepend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERREMOVEHEAD">xmlSecBufferRemoveHead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferRemoveHead" title="xmlSecBufferRemoveHead ()">xmlSecBufferRemoveHead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERREMOVETAIL">xmlSecBufferRemoveTail</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferRemoveTail" title="xmlSecBufferRemoveTail ()">xmlSecBufferRemoveTail</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERREADFILE">xmlSecBufferReadFile</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferReadFile" title="xmlSecBufferReadFile ()">xmlSecBufferReadFile</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERBASE64NODECONTENTREAD">xmlSecBufferBase64NodeContentRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferBase64NodeContentRead" title="xmlSecBufferBase64NodeContentRead ()">xmlSecBufferBase64NodeContentRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERBASE64NODECONTENTWRITE">xmlSecBufferBase64NodeContentWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferBase64NodeContentWrite" title="xmlSecBufferBase64NodeContentWrite ()">xmlSecBufferBase64NodeContentWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlOutputBufferPtr</span></font></td>
-<td>
-<a href="xmlsec-buffer.html#XMLSECBUFFERCREATEOUTPUTBUFFER">xmlSecBufferCreateOutputBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlOutputBufferPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferCreateOutputBuffer" title="xmlSecBufferCreateOutputBuffer ()">xmlSecBufferCreateOutputBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BUFFER.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5254"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-buffer.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-buffer.html#XMLSECALLOCMODE">xmlSecAllocMode</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode">xmlSecAllocMode</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER">xmlSecBuffer</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer">xmlSecBuffer</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-buffer.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BUFFER.DESCRIPTION"></a><h2>Description</h2>
-<p>Binary buffer implementation.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BUFFER.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERSETDEFAULTALLOCMODE"></a><h3>xmlSecBufferSetDefaultAllocMode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBufferSetDefaultAllocMode (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECALLOCMODE"><span class="TYPE">xmlSecAllocMode</span></a> defAllocMode</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> defInitialSize</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-buffer.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecBufferSetDefaultAllocMode"></a><h3>xmlSecBufferSetDefaultAllocMode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBufferSetDefaultAllocMode (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode"><span class="type">xmlSecAllocMode</span></a> defAllocMode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> defInitialSize</code></em>);</pre>
<p>Sets new global default allocation mode and minimal intial size.</p>
-<div class="REFSECT3">
-<a name="AEN5284"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5286"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferSetDefaultAllocMode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>defAllocMode</p></td>
-<td><p>the new default buffer allocation mode.</p></td>
-<td> </td>
+<td class="parameter_name"><p>defAllocMode</p></td>
+<td class="parameter_description"><p>the new default buffer allocation mode.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>defInitialSize</p></td>
-<td><p>the new default buffer minimal intial size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>defInitialSize</p></td>
+<td class="parameter_description"><p>the new default buffer minimal intial size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERCREATE"></a><h3>xmlSecBufferCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
-xmlSecBufferCreate (<code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Allocates and initalizes new memory buffer with given size.
-Caller is responsible for calling <a href="xmlsec-buffer.html#XMLSECBUFFERDESTROY"><span class="TYPE">xmlSecBufferDestroy</span></a> function
+<div class="refsect2">
+<a name="xmlSecBufferCreate"></a><h3>xmlSecBufferCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+xmlSecBufferCreate (<em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Allocates and initializes new memory buffer with given size.
+Caller is responsible for calling <a class="link" href="xmlsec-buffer.html#xmlSecBufferDestroy" title="xmlSecBufferDestroy ()"><span class="type">xmlSecBufferDestroy</span></a> function
to free the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5314"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5316"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>size</p></td>
-<td><p>the intial size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the intial size.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5325"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated buffer or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERDESTROY"></a><h3>xmlSecBufferDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBufferDestroy (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
-<p>Desrtoys buffer object created with <a href="xmlsec-buffer.html#XMLSECBUFFERCREATE"><span class="TYPE">xmlSecBufferCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN5341"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5343"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecBufferDestroy"></a><h3>xmlSecBufferDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBufferDestroy (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
+<p>Destroys buffer object created with <a class="link" href="xmlsec-buffer.html#xmlSecBufferCreate" title="xmlSecBufferCreate ()"><span class="type">xmlSecBufferCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecBufferDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERINITIALIZE"></a><h3>xmlSecBufferInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferInitialize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Initializes buffer object <code class="PARAMETER">buf</code>
+<div class="refsect2">
+<a name="xmlSecBufferInitialize"></a><h3>xmlSecBufferInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferInitialize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Initializes buffer object <em class="parameter"><code>buf</code></em>
. Caller is responsible for calling
-<a href="xmlsec-buffer.html#XMLSECBUFFERFINALIZE"><span class="TYPE">xmlSecBufferFinalize</span></a> function to free allocated resources.</p>
-<div class="REFSECT3">
-<a name="AEN5369"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5371"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-buffer.html#xmlSecBufferFinalize" title="xmlSecBufferFinalize ()"><span class="type">xmlSecBufferFinalize</span></a> function to free allocated resources.</p>
+<div class="refsect3">
+<a name="xmlSecBufferInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the initial buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the initial buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5386"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERFINALIZE"></a><h3>xmlSecBufferFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBufferFinalize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
-<p>Frees allocated resource for a buffer intialized with <a href="xmlsec-buffer.html#XMLSECBUFFERINITIALIZE"><span class="TYPE">xmlSecBufferInitialize</span></a>
+<div class="refsect2">
+<a name="xmlSecBufferFinalize"></a><h3>xmlSecBufferFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBufferFinalize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
+<p>Frees allocated resource for a buffer initialized with <a class="link" href="xmlsec-buffer.html#xmlSecBufferInitialize" title="xmlSecBufferInitialize ()"><span class="type">xmlSecBufferInitialize</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN5402"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5404"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERGETDATA"></a><h3>xmlSecBufferGetData ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="RETURNVALUE">xmlSecByte</span></a> *
-xmlSecBufferGetData (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferGetData"></a><h3>xmlSecBufferGetData ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="returnvalue">xmlSecByte</span></a> *
+xmlSecBufferGetData (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
<p>Gets pointer to buffer's data.</p>
-<div class="REFSECT3">
-<a name="AEN5424"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5426"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferGetData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5435"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferGetData.returns"></a><h4>Returns</h4>
<p> pointer to buffer's data.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERSETDATA"></a><h3>xmlSecBufferSetData ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferSetData (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Sets the value of the buffer to <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBufferSetData"></a><h3>xmlSecBufferSetData ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferSetData (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Sets the value of the buffer to <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN5456"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5458"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferSetData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5479"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferSetData.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERGETSIZE"></a><h3>xmlSecBufferGetSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecBufferGetSize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferGetSize"></a><h3>xmlSecBufferGetSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecBufferGetSize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
<p>Gets the current buffer data size.</p>
-<div class="REFSECT3">
-<a name="AEN5493"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5495"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferGetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5504"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferGetSize.returns"></a><h4>Returns</h4>
<p> the current data size.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERSETSIZE"></a><h3>xmlSecBufferSetSize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferSetSize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferSetSize"></a><h3>xmlSecBufferSetSize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferSetSize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
<p>Sets new buffer data size. If necessary, buffer grows to
-have at least <code class="PARAMETER">size</code>
+have at least <em class="parameter"><code>size</code></em>
bytes.</p>
-<div class="REFSECT3">
-<a name="AEN5522"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5524"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferSetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the new data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the new data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5539"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferSetSize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERGETMAXSIZE"></a><h3>xmlSecBufferGetMaxSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecBufferGetMaxSize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferGetMaxSize"></a><h3>xmlSecBufferGetMaxSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecBufferGetMaxSize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
<p>Gets the maximum (allocated) buffer size.</p>
-<div class="REFSECT3">
-<a name="AEN5553"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5555"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferGetMaxSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5564"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferGetMaxSize.returns"></a><h4>Returns</h4>
<p> the maximum (allocated) buffer size.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERSETMAXSIZE"></a><h3>xmlSecBufferSetMaxSize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferSetMaxSize (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferSetMaxSize"></a><h3>xmlSecBufferSetMaxSize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferSetMaxSize (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
<p>Sets new buffer maximum size. If necessary, buffer grows to
-have at least <code class="PARAMETER">size</code>
+have at least <em class="parameter"><code>size</code></em>
bytes.</p>
-<div class="REFSECT3">
-<a name="AEN5582"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5584"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferSetMaxSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the new maximum size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the new maximum size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5599"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferSetMaxSize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFEREMPTY"></a><h3>xmlSecBufferEmpty ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecBufferEmpty (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecBufferEmpty"></a><h3>xmlSecBufferEmpty ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecBufferEmpty (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
<p>Empties the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5613"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5615"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferEmpty.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERAPPEND"></a><h3>xmlSecBufferAppend ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferAppend (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Appends the <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBufferAppend"></a><h3>xmlSecBufferAppend ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferAppend (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Appends the <em class="parameter"><code>data</code></em>
after the current data stored in the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5642"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5644"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferAppend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5665"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferAppend.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERPREPEND"></a><h3>xmlSecBufferPrepend ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferPrepend (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Prepends the <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecBufferPrepend"></a><h3>xmlSecBufferPrepend ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferPrepend (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Prepends the <em class="parameter"><code>data</code></em>
before the current data stored in the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5686"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5688"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferPrepend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5709"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferPrepend.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERREMOVEHEAD"></a><h3>xmlSecBufferRemoveHead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferRemoveHead (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Removes <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecBufferRemoveHead"></a><h3>xmlSecBufferRemoveHead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferRemoveHead (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Removes <em class="parameter"><code>size</code></em>
bytes from the beginning of the current buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5727"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5729"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferRemoveHead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the number of bytes to be removed.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the number of bytes to be removed.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5744"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferRemoveHead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERREMOVETAIL"></a><h3>xmlSecBufferRemoveTail ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferRemoveTail (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Removes <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecBufferRemoveTail"></a><h3>xmlSecBufferRemoveTail ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferRemoveTail (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Removes <em class="parameter"><code>size</code></em>
bytes from the end of current buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5762"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5764"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferRemoveTail.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the number of bytes to be removed.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the number of bytes to be removed.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5779"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferRemoveTail.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERREADFILE"></a><h3>xmlSecBufferReadFile ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferReadFile (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>);</pre>
-<p>Reads the content of the file <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecBufferReadFile"></a><h3>xmlSecBufferReadFile ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferReadFile (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>);</pre>
+<p>Reads the content of the file <em class="parameter"><code>filename</code></em>
in the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5797"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5799"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferReadFile.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5814"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferReadFile.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERBASE64NODECONTENTREAD"></a><h3>xmlSecBufferBase64NodeContentRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferBase64NodeContentRead (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Reads the content of the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecBufferBase64NodeContentRead"></a><h3>xmlSecBufferBase64NodeContentRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferBase64NodeContentRead (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Reads the content of the <em class="parameter"><code>node</code></em>
, base64 decodes it and stores the
result in the buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5832"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5834"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferBase64NodeContentRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN5849"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferBase64NodeContentRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERBASE64NODECONTENTWRITE"></a><h3>xmlSecBufferBase64NodeContentWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecBufferBase64NodeContentWrite (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> columns</code>);</pre>
-<p>Sets the content of the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecBufferBase64NodeContentWrite"></a><h3>xmlSecBufferBase64NodeContentWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecBufferBase64NodeContentWrite (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> columns</code></em>);</pre>
+<p>Sets the content of the <em class="parameter"><code>node</code></em>
to the base64 encoded buffer data.</p>
-<div class="REFSECT3">
-<a name="AEN5870"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5872"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferBase64NodeContentWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to a node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to a node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>columns</p></td>
-<td><p>the max line size fro base64 encoded data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>columns</p></td>
+<td class="parameter_description"><p>the max line size for base64 encoded data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5893"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferBase64NodeContentWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFERCREATEOUTPUTBUFFER"></a><h3>xmlSecBufferCreateOutputBuffer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlOutputBufferPtr</span></font>
-xmlSecBufferCreateOutputBuffer (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buf</code>);</pre>
-<p>Creates new LibXML output buffer to store data in the <code class="PARAMETER">buf</code>
+<div class="refsect2">
+<a name="xmlSecBufferCreateOutputBuffer"></a><h3>xmlSecBufferCreateOutputBuffer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlOutputBufferPtr</span></font>
+xmlSecBufferCreateOutputBuffer (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buf</code></em>);</pre>
+<p>Creates new LibXML output buffer to store data in the <em class="parameter"><code>buf</code></em>
. Caller is
-responsible for destroying <code class="PARAMETER">buf</code>
+responsible for destroying <em class="parameter"><code>buf</code></em>
when processing is done.</p>
-<div class="REFSECT3">
-<a name="AEN5909"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5911"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBufferCreateOutputBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>buf</p></td>
-<td><p>the pointer to buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN5920"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecBufferCreateOutputBuffer.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated output buffer or NULL if an error
occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-BUFFER.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECALLOCMODE"></a><h3>enum xmlSecAllocMode</h3>
-<p>The memory allocation mode (used by <code class="PARAMETER">xmlSecBuffer</code>
- and <code class="PARAMETER">xmlSecList</code>
+<div class="refsect1">
+<a name="xmlsec-buffer.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecAllocMode"></a><h3>enum xmlSecAllocMode</h3>
+<p>The memory allocation mode (used by <em class="parameter"><code>xmlSecBuffer</code></em>
+ and <em class="parameter"><code>xmlSecList</code></em>
).</p>
-<div class="REFSECT3">
-<a name="AEN5932"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5934"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAllocMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecAllocModeExact</p></td>
-<td><p>the memory allocation mode that minimizes total
+<td class="enum_member_name"><p><a name="xmlSecAllocModeExact"></a>xmlSecAllocModeExact</p></td>
+<td class="enum_member_description"><p>the memory allocation mode that minimizes total
allocated memory size.</p></td>
-<td> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecAllocModeDouble</p></td>
-<td><p>the memory allocation mode that tries to minimize
+<td class="enum_member_name"><p><a name="xmlSecAllocModeDouble"></a>xmlSecAllocModeDouble</p></td>
+<td class="enum_member_description"><p>the memory allocation mode that tries to minimize
the number of malloc calls.</p></td>
-<td> </td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBUFFER"></a><h3>struct xmlSecBuffer</h3>
-<pre class="PROGRAMLISTING">struct xmlSecBuffer {
+<div class="refsect2">
+<a name="xmlSecBuffer"></a><h3>struct xmlSecBuffer</h3>
+<pre class="programlisting">struct xmlSecBuffer {
xmlSecByte* data;
xmlSecSize size;
xmlSecSize maxSize;
xmlSecAllocMode allocMode;
-};</pre>
+};
+</pre>
<p>Binary data buffer.</p>
-<div class="REFSECT3">
-<a name="AEN5955"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN5957"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecBuffer.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *<code class="STRUCTFIELD">data</code>;</p></td>
-<td><p>the pointer to buffer data.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *<em class="structfield"><code><a name="xmlSecBuffer.data"></a>data</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to buffer data.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">size</code>;</p></td>
-<td><p>the current data size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecBuffer.size"></a>size</code></em>;</p></td>
+<td class="struct_member_description"><p>the current data size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">maxSize</code>;</p></td>
-<td><p>the max data size (allocated buffer size).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecBuffer.maxSize"></a>maxSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the max data size (allocated buffer size).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECALLOCMODE"><span class="TYPE">xmlSecAllocMode</span></a> <code class="STRUCTFIELD">allocMode</code>;</p></td>
-<td><p>the buffer memory allocation mode.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode"><span class="type">xmlSecAllocMode</span></a> <em class="structfield"><code><a name="xmlSecBuffer.allocMode"></a>allocMode</code></em>;</p></td>
+<td class="struct_member_description"><p>the buffer memory allocation mode.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-bn.html"><b>&lt;&lt;&lt; bn</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-dl.html"><b>dl &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-custom-keys-manager.html b/docs/api/xmlsec-custom-keys-manager.html
index 7f5d8991..a9f6a4d3 100644
--- a/docs/api/xmlsec-custom-keys-manager.html
+++ b/docs/api/xmlsec-custom-keys-manager.html
@@ -1,124 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Writing a custom keys manager.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Decrypting data with keys manager." href="xmlsec-decrypt-with-keys-mngr.html">
-<link rel="NEXT" title="APPENDIX A. XML Security Library Signature Klasses." href="xmlsec-signature-klasses.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Writing a custom keys manager.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-decrypt-with-keys-mngr.html" title="Decrypting data with keys manager.">
+<link rel="next" href="xmlsec-signature-klasses.html" title="APPENDIX A. XML Security Library Signature Klasses.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-decrypt-with-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-decrypt-with-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-signature-klasses.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-CUSTOM-KEYS-MANAGER">Writing a custom keys manager.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-DECRYPT3">decrypt3.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN986"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-custom-keys-manager"></a>Writing a custom keys manager.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-decrypt3"></a>decrypt3.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Decrypting an encrypted file using a custom keys manager.
*
* Decrypts encrypted XML file using a custom files based keys manager.
- * We assume that key's name in <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> element is just
+ * We assume that key's name in &lt;dsig:KeyName/&gt; element is just
* key's file name in the current folder.
*
* Usage:
@@ -131,7 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -210,10 +122,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -391,7 +303,7 @@ create_files_keys_mngr(void) {
/****************************************************************************
*
* Files Keys Store: we assume that key's name (content of the
- * <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> element is a name of the file with a key (in the
+ * &lt;dsig:KeyName/&gt; element is a name of the file with a key (in the
* current folder).
* Attention: this probably not a good solution for high traffic systems.
*
@@ -429,7 +341,7 @@ files_keys_store_get_klass(void) {
* files_keys_store_find_key:
* @store: the pointer to simple keys store.
* @name: the desired key name.
- * @keyInfoCtx: the pointer to <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.
+ * @keyInfoCtx: the pointer to &lt;dsig:KeyInfo/&gt; node processing context.
*
* Lookups key in the @store. The caller is responsible for destroying
* returned key with #xmlSecKeyDestroy function.
@@ -484,15 +396,12 @@ files_keys_store_find_key(xmlSecKeyStorePtr store, const xmlChar* name, xmlSecKe
}
return(key);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-decrypt-with-keys-mngr.html"><b>&lt;&lt;&lt; Decrypting data with keys manager.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-signature-klasses.html"><b>APPENDIX A. XML Security Library Signature Klasses. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-decrypt-with-keys-mngr.html b/docs/api/xmlsec-decrypt-with-keys-mngr.html
index ad1bcc1f..49502694 100644
--- a/docs/api/xmlsec-decrypt-with-keys-mngr.html
+++ b/docs/api/xmlsec-decrypt-with-keys-mngr.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Decrypting data with keys manager.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Decrypting data with a single key." href="xmlsec-decrypt-with-signle-key.html">
-<link rel="NEXT" title="Writing a custom keys manager." href="xmlsec-custom-keys-manager.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Decrypting data with keys manager.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-decrypt-with-signle-key.html" title="Decrypting data with a single key.">
+<link rel="next" href="xmlsec-custom-keys-manager.html" title="Writing a custom keys manager.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-decrypt-with-signle-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-decrypt-with-signle-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-custom-keys-manager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-DECRYPT-WITH-KEYS-MNGR">Decrypting data with keys manager.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-DECRYPT2">decrypt2.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN979"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-decrypt-with-keys-mngr"></a>Decrypting data with keys manager.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-decrypt2"></a>decrypt2.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Decrypting an encrypted file using keys manager.
*
* Decrypts encrypted XML file using keys manager and a list of
@@ -130,7 +42,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -208,10 +120,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -267,7 +179,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load DES keys from #files in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
@@ -405,15 +317,12 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-decrypt-with-signle-key.html"><b>&lt;&lt;&lt; Decrypting data with a single key.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-custom-keys-manager.html"><b>Writing a custom keys manager. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-decrypt-with-signle-key.html b/docs/api/xmlsec-decrypt-with-signle-key.html
index 90b00331..33e4e6f8 100644
--- a/docs/api/xmlsec-decrypt-with-signle-key.html
+++ b/docs/api/xmlsec-decrypt-with-signle-key.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Decrypting data with a single key.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Encrypting data with a session key." href="xmlsec-encrypt-with-session-key.html">
-<link rel="NEXT" title="Decrypting data with keys manager." href="xmlsec-decrypt-with-keys-mngr.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Decrypting data with a single key.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-encrypt-with-session-key.html" title="Encrypting data with a session key.">
+<link rel="next" href="xmlsec-decrypt-with-keys-mngr.html" title="Decrypting data with keys manager.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-encrypt-with-session-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-encrypt-with-session-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-decrypt-with-keys-mngr.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-DECRYPT-WITH-SIGNLE-KEY">Decrypting data with a single key.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-DECRYPT1">decrypt1.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN972"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-decrypt-with-signle-key"></a>Decrypting data with a single key.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-decrypt1"></a>decrypt1.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Decrypting an encrypted file using a single key.
*
* Decrypts encrypted XML file using a single DES key from a binary file
@@ -129,7 +41,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -205,10 +117,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -335,15 +247,12 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-encrypt-with-session-key.html"><b>&lt;&lt;&lt; Encrypting data with a session key.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-decrypt-with-keys-mngr.html"><b>Decrypting data with keys manager. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-dl.html b/docs/api/xmlsec-dl.html
index 7a1ca43f..93051eef 100644
--- a/docs/api/xmlsec-dl.html
+++ b/docs/api/xmlsec-dl.html
@@ -1,375 +1,302 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>dl</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="buffer" href="xmlsec-buffer.html">
-<link rel="NEXT" title="errors" href="xmlsec-errors.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>dl: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-buffer.html" title="buffer">
+<link rel="next" href="xmlsec-errors.html" title="errors">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-dl.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-errors.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-DL"></a>dl</h1>
-<div class="REFNAMEDIV">
-<a name="AEN6001"></a><h2>Name</h2>dl -- Dynamic crypto-engine library loading support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-DL.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6006"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-dl"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-dl.top_of_page"></a>dl</span></h2>
+<p>dl — Dynamic crypto-engine library loading functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-dl.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-dl.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLFUNCTIONSREGISTERKEYDATAANDTRANSFORMS">xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms" title="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ()">xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLINIT">xmlSecCryptoDLInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLInit" title="xmlSecCryptoDLInit ()">xmlSecCryptoDLInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLSHUTDOWN">xmlSecCryptoDLShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLShutdown" title="xmlSecCryptoDLShutdown ()">xmlSecCryptoDLShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY">xmlSecCryptoDLLoadLibrary</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()">xmlSecCryptoDLLoadLibrary</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLGETLIBRARYFUNCTIONS">xmlSecCryptoDLGetLibraryFunctions</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions" title="xmlSecCryptoDLGetLibraryFunctions ()">xmlSecCryptoDLGetLibraryFunctions</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY">xmlSecCryptoDLUnloadLibrary</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary" title="xmlSecCryptoDLUnloadLibrary ()">xmlSecCryptoDLUnloadLibrary</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLSETFUNCTIONS">xmlSecCryptoDLSetFunctions</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLSetFunctions" title="xmlSecCryptoDLSetFunctions ()">xmlSecCryptoDLSetFunctions</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-dl.html#XMLSECCRYPTODLGETFUNCTIONS">xmlSecCryptoDLGetFunctions</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetFunctions" title="xmlSecCryptoDLGetFunctions ()">xmlSecCryptoDLGetFunctions</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-DL.DESCRIPTION"></a><h2>Description</h2>
-<p>Dynamic crypto-engine library loading support.</p>
+<div class="refsect1">
+<a name="xmlsec-dl.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-DL.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLFUNCTIONSREGISTERKEYDATAANDTRANSFORMS"></a><h3>xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect1">
+<a name="xmlsec-dl.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms"></a><h3>xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms
- (<code class="PARAMETER"><font><span class="TYPE">xmlSecCryptoDLFunctionsPtr</span></font> functions</code>);</pre>
-<p>Registers the key data and transforms klasses from <code class="PARAMETER">functions</code>
+ (<em class="parameter"><code><font><span class="type">xmlSecCryptoDLFunctionsPtr</span></font> functions</code></em>);</pre>
+<p>Registers the key data and transforms klasses from <em class="parameter"><code>functions</code></em>
table in xmlsec.</p>
-<div class="REFSECT3">
-<a name="AEN6082"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6084"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>functions</p></td>
-<td><p>the functions table.</p></td>
-<td> </td>
+<td class="parameter_name"><p>functions</p></td>
+<td class="parameter_description"><p>the functions table.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN6093"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLINIT"></a><h3>xmlSecCryptoDLInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoDLInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLInit"></a><h3>xmlSecCryptoDLInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoDLInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Initializes dynamic loading engine. This is an internal function
and should not be called by application directly.</p>
-<div class="REFSECT3">
-<a name="AEN6106"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLSHUTDOWN"></a><h3>xmlSecCryptoDLShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoDLShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLShutdown"></a><h3>xmlSecCryptoDLShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoDLShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Shutdowns dynamic loading engine. This is an internal function
and should not be called by application directly.</p>
-<div class="REFSECT3">
-<a name="AEN6119"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLLOADLIBRARY"></a><h3>xmlSecCryptoDLLoadLibrary ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoDLLoadLibrary (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *crypto</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLLoadLibrary"></a><h3>xmlSecCryptoDLLoadLibrary ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoDLLoadLibrary (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *crypto</code></em>);</pre>
<p>Loads the xmlsec-$crypto library. This function is NOT thread safe,
-application MUST NOT call <a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLLoadLibrary</span></a>, <a href="xmlsec-dl.html#XMLSECCRYPTODLGETLIBRARYFUNCTIONS"><span class="TYPE">xmlSecCryptoDLGetLibraryFunctions</span></a>,
-and <a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
-<div class="REFSECT3">
-<a name="AEN6139"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6141"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+application MUST NOT call <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()"><span class="type">xmlSecCryptoDLLoadLibrary</span></a>, <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions" title="xmlSecCryptoDLGetLibraryFunctions ()"><span class="type">xmlSecCryptoDLGetLibraryFunctions</span></a>,
+and <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary" title="xmlSecCryptoDLUnloadLibrary ()"><span class="type">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
+<div class="refsect3">
+<a name="xmlSecCryptoDLLoadLibrary.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>crypto</p></td>
-<td><p>the desired crypto library name ("openssl", "nss", ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>crypto</p></td>
+<td class="parameter_description"><p>the desired crypto library name ("openssl", "nss", ...). If NULL
+then the default crypto engine will be used.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN6150"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLLoadLibrary.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLGETLIBRARYFUNCTIONS"></a><h3>xmlSecCryptoDLGetLibraryFunctions ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoDLGetLibraryFunctions (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *crypto</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLGetLibraryFunctions"></a><h3>xmlSecCryptoDLGetLibraryFunctions ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoDLGetLibraryFunctions (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *crypto</code></em>);</pre>
<p>Loads the xmlsec-$crypto library and gets global crypto functions/transforms/keys data/keys store
-table. This function is NOT thread safe, application MUST NOT call <a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLLoadLibrary</span></a>,
-<a href="xmlsec-dl.html#XMLSECCRYPTODLGETLIBRARYFUNCTIONS"><span class="TYPE">xmlSecCryptoDLGetLibraryFunctions</span></a>, and <a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
-<div class="REFSECT3">
-<a name="AEN6170"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6172"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+table. This function is NOT thread safe, application MUST NOT call <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()"><span class="type">xmlSecCryptoDLLoadLibrary</span></a>,
+<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions" title="xmlSecCryptoDLGetLibraryFunctions ()"><span class="type">xmlSecCryptoDLGetLibraryFunctions</span></a>, and <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary" title="xmlSecCryptoDLUnloadLibrary ()"><span class="type">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
+<div class="refsect3">
+<a name="xmlSecCryptoDLGetLibraryFunctions.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>crypto</p></td>
-<td><p>the desired crypto library name ("openssl", "nss", ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>crypto</p></td>
+<td class="parameter_description"><p>the desired crypto library name ("openssl", "nss", ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN6181"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLGetLibraryFunctions.returns"></a><h4>Returns</h4>
<p> the table or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLUNLOADLIBRARY"></a><h3>xmlSecCryptoDLUnloadLibrary ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoDLUnloadLibrary (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *crypto</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLUnloadLibrary"></a><h3>xmlSecCryptoDLUnloadLibrary ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoDLUnloadLibrary (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *crypto</code></em>);</pre>
<p>Unloads the xmlsec-$crypto library. All pointers to this library
functions tables became invalid. This function is NOT thread safe,
-application MUST NOT call <a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLLoadLibrary</span></a>, <a href="xmlsec-dl.html#XMLSECCRYPTODLGETLIBRARYFUNCTIONS"><span class="TYPE">xmlSecCryptoDLGetLibraryFunctions</span></a>,
-and <a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY"><span class="TYPE">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
-<div class="REFSECT3">
-<a name="AEN6201"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6203"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+application MUST NOT call <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()"><span class="type">xmlSecCryptoDLLoadLibrary</span></a>, <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions" title="xmlSecCryptoDLGetLibraryFunctions ()"><span class="type">xmlSecCryptoDLGetLibraryFunctions</span></a>,
+and <a class="link" href="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary" title="xmlSecCryptoDLUnloadLibrary ()"><span class="type">xmlSecCryptoDLUnloadLibrary</span></a> functions from multiple threads.</p>
+<div class="refsect3">
+<a name="xmlSecCryptoDLUnloadLibrary.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>crypto</p></td>
-<td><p>the desired crypto library name ("openssl", "nss", ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>crypto</p></td>
+<td class="parameter_description"><p>the desired crypto library name ("openssl", "nss", ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN6212"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLUnloadLibrary.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLSETFUNCTIONS"></a><h3>xmlSecCryptoDLSetFunctions ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCryptoDLSetFunctions (<code class="PARAMETER"><font><span class="TYPE">xmlSecCryptoDLFunctionsPtr</span></font> functions</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLSetFunctions"></a><h3>xmlSecCryptoDLSetFunctions ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCryptoDLSetFunctions (<em class="parameter"><code><font><span class="type">xmlSecCryptoDLFunctionsPtr</span></font> functions</code></em>);</pre>
<p>Sets global crypto functions/transforms/keys data/keys store table.</p>
-<div class="REFSECT3">
-<a name="AEN6226"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6228"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCryptoDLSetFunctions.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>functions</p></td>
-<td><p>the new table</p></td>
-<td> </td>
+<td class="parameter_name"><p>functions</p></td>
+<td class="parameter_description"><p>the new table</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN6237"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLSetFunctions.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTODLGETFUNCTIONS"></a><h3>xmlSecCryptoDLGetFunctions ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoDLGetFunctions (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCryptoDLGetFunctions"></a><h3>xmlSecCryptoDLGetFunctions ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoDLGetFunctions (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets global crypto functions/transforms/keys data/keys store table.</p>
-<div class="REFSECT3">
-<a name="AEN6250"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoDLGetFunctions.returns"></a><h4>Returns</h4>
<p> the table.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-DL.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-dl.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-buffer.html"><b>&lt;&lt;&lt; buffer</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-errors.html"><b>errors &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-encrypt-dynamic-template.html b/docs/api/xmlsec-encrypt-dynamic-template.html
index 6e3acb4d..dd84d887 100644
--- a/docs/api/xmlsec-encrypt-dynamic-template.html
+++ b/docs/api/xmlsec-encrypt-dynamic-template.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Encrypting data with a dynamicaly created template.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Encrypting data with a template file." href="xmlsec-encrypt-template-file.html">
-<link rel="NEXT" title="Encrypting data with a session key." href="xmlsec-encrypt-with-session-key.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Encrypting data with a dynamicaly created template.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-encrypt-template-file.html" title="Encrypting data with a template file.">
+<link rel="next" href="xmlsec-encrypt-with-session-key.html" title="Encrypting data with a session key.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-encrypt-template-file.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-encrypt-template-file.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-encrypt-with-session-key.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-ENCRYPT-DYNAMIC-TEMPLATE">Encrypting data with a dynamicaly created template.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT2">encrypt2.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN928"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-encrypt-dynamic-template"></a>Encrypting data with a dynamicaly created template.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt2"></a>encrypt2.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Encrypting XML file with a dynamicaly created template.
*
* Encrypts XML file using a dynamicaly created template file and a DES key
@@ -132,7 +44,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -208,10 +120,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -288,13 +200,13 @@ encrypt_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* we want to put encrypted data in the <a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top">&lt;enc:CipherValue/&gt;</a> node */
+ /* we want to put encrypted data in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> and <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> nodes to put key name in the signed document */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -356,16 +268,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT2-DOC">encrypt2-doc.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN936"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt2-doc"></a>encrypt2-doc.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file before encryption (encrypt2 example).
--&gt;
@@ -373,16 +284,14 @@ XML Security Library example: Original XML doc file before encryption (encrypt2
&lt;Data&gt;
Hello, World!
&lt;/Data&gt;
-&lt;/Envelope&gt;</pre>
-<p></p>
-</div>
+&lt;/Envelope&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT2-RES">encrypt2-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN941"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt2-res"></a>encrypt2-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Encrypted XML file (encrypt2 example).
--&gt;
@@ -395,15 +304,11 @@ XML Security Library example: Encrypted XML file (encrypt2 example).
&lt;CipherValue&gt;WXlDyktaADlUe+PywKwS3KdKlahCteEKxi/hRlHcXNQlGwNGrYKy8aQ6dLtX1bKg
IgL/XoAQN3B27zD91b1ZLGh6QQ9CjnVD98+hYJ9TPp4piPnII4vGUA==&lt;/CipherValue&gt;
&lt;/CipherData&gt;
-&lt;/EncryptedData&gt;</pre>
-<p></p>
+&lt;/EncryptedData&gt;
+</pre></div>
</div>
</div>
-</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-encrypt-template-file.html"><b>&lt;&lt;&lt; Encrypting data with a template file.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-encrypt-with-session-key.html"><b>Encrypting data with a session key. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-encrypt-template-file.html b/docs/api/xmlsec-encrypt-template-file.html
index ae312a66..44c49edc 100644
--- a/docs/api/xmlsec-encrypt-template-file.html
+++ b/docs/api/xmlsec-encrypt-template-file.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Encrypting data with a template file.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Verifying a signature with additional restrictions." href="xmlsec-verify-with-restrictions.html">
-<link rel="NEXT" title="Encrypting data with a dynamicaly created template." href="xmlsec-encrypt-dynamic-template.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Encrypting data with a template file.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-verify-with-restrictions.html" title="Verifying a signature with additional restrictions.">
+<link rel="next" href="xmlsec-encrypt-dynamic-template.html" title="Encrypting data with a dynamicaly created template.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-verify-with-restrictions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-verify-with-restrictions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-encrypt-dynamic-template.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-ENCRYPT-TEMPLATE-FILE">Encrypting data with a template file.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT1">encrypt1.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN911"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-encrypt-template-file"></a>Encrypting data with a template file.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt1"></a>encrypt1.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Encrypting data using a template file.
*
* Encrypts binary data using a template file and a DES key from a binary file
@@ -131,7 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -207,10 +119,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -331,16 +243,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT1-TMPL">encrypt1-tmpl.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN916"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt1-tmpl"></a>encrypt1-tmpl.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0"?&gt;
&lt;!--
XML Security Library example: Simple encryption template file for encrypt1 example.
--&gt;
@@ -352,16 +263,14 @@ XML Security Library example: Simple encryption template file for encrypt1 examp
&lt;CipherData&gt;
&lt;CipherValue&gt;&lt;/CipherValue&gt;
&lt;/CipherData&gt;
-&lt;/EncryptedData&gt;</pre>
-<p></p>
-</div>
+&lt;/EncryptedData&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT1-RES">encrypt1-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN921"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt1-res"></a>encrypt1-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0"?&gt;
&lt;!--
XML Security Library example: Encrypted binary data (encrypt1 example).
--&gt;
@@ -373,15 +282,11 @@ XML Security Library example: Encrypted binary data (encrypt1 example).
&lt;CipherData&gt;
&lt;CipherValue&gt;t6JVBMihIgRyiK8AS8AX5NcXTfkdXPTK&lt;/CipherValue&gt;
&lt;/CipherData&gt;
-&lt;/EncryptedData&gt;</pre>
-<p></p>
+&lt;/EncryptedData&gt;
+</pre></div>
</div>
</div>
-</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-verify-with-restrictions.html"><b>&lt;&lt;&lt; Verifying a signature with additional restrictions.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-encrypt-dynamic-template.html"><b>Encrypting data with a dynamicaly created template. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-encrypt-with-session-key.html b/docs/api/xmlsec-encrypt-with-session-key.html
index 7f1db6c5..89c31554 100644
--- a/docs/api/xmlsec-encrypt-with-session-key.html
+++ b/docs/api/xmlsec-encrypt-with-session-key.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Encrypting data with a session key.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Encrypting data with a dynamicaly created template." href="xmlsec-encrypt-dynamic-template.html">
-<link rel="NEXT" title="Decrypting data with a single key." href="xmlsec-decrypt-with-signle-key.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Encrypting data with a session key.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-encrypt-dynamic-template.html" title="Encrypting data with a dynamicaly created template.">
+<link rel="next" href="xmlsec-decrypt-with-signle-key.html" title="Decrypting data with a single key.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-encrypt-dynamic-template.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-encrypt-dynamic-template.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-decrypt-with-signle-key.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-ENCRYPT-WITH-SESSION-KEY">Encrypting data with a session key.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT3">encrypt3.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN948"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-encrypt-with-session-key"></a>Encrypting data with a session key.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt3"></a>encrypt3.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Encrypting XML file with a session key and dynamicaly created template.
*
* Encrypts XML file using a dynamicaly created template file and a session
@@ -132,7 +44,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -210,10 +122,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -269,7 +181,7 @@ main(int argc, char **argv) {
* @key_file: the key filename.
*
* Creates simple keys manager and load RSA key from #key_file in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
@@ -367,20 +279,20 @@ encrypt_file(xmlSecKeysMngrPtr mngr, const char* xml_file, const char* key_name)
goto done;
}
- /* we want to put encrypted data in the <a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top">&lt;enc:CipherValue/&gt;</a> node */
+ /* we want to put encrypted data in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> */
+ /* add &lt;dsig:KeyInfo/&gt; */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top">&lt;enc:EncryptedKey/&gt;</a> to store the encrypted session key */
+ /* add &lt;enc:EncryptedKey/&gt; to store the encrypted session key */
encKeyNode = xmlSecTmplKeyInfoAddEncryptedKey(keyInfoNode,
xmlSecTransformRsaPkcs1Id,
NULL, NULL, NULL);
@@ -389,13 +301,13 @@ encrypt_file(xmlSecKeysMngrPtr mngr, const char* xml_file, const char* key_name)
goto done;
}
- /* we want to put encrypted key in the <a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top">&lt;enc:CipherValue/&gt;</a> node */
+ /* we want to put encrypted key in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encKeyNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> and <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> nodes to <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top">&lt;enc:EncryptedKey/&gt;</a> */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to &lt;enc:EncryptedKey/&gt; */
keyInfoNode2 = xmlSecTmplEncDataEnsureKeyInfo(encKeyNode, NULL);
if(keyInfoNode2 == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -452,16 +364,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT3-DOC">encrypt3-doc.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN960"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt3-doc"></a>encrypt3-doc.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file before encryption (encrypt3 example).
--&gt;
@@ -469,16 +380,14 @@ XML Security Library example: Original XML doc file before encryption (encrypt3
&lt;Data&gt;
Hello, World!
&lt;/Data&gt;
-&lt;/Envelope&gt;</pre>
-<p></p>
-</div>
+&lt;/Envelope&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-ENCRYPT3-RES">encrypt3-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN965"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-encrypt3-res"></a>encrypt3-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file before encryption (encrypt3 example).
--&gt;
@@ -500,15 +409,11 @@ MLOtSy26mWrQ+XqfPGuyaA==&lt;/CipherValue&gt;
&lt;CipherValue&gt;+UiDv73SE8K8KwXuOmHLHK7N2hNWDakTAEu6NprbCdULC1w/LXT9FLtNRJetmwwO
XpBqTY56AAMeMgpxPWN3SPO0ETeQw7pR+bp0IjUvcGlFSXz6yE1qgQ==&lt;/CipherValue&gt;
&lt;/CipherData&gt;
-&lt;/EncryptedData&gt;</pre>
-<p></p>
+&lt;/EncryptedData&gt;
+</pre></div>
</div>
</div>
-</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-encrypt-dynamic-template.html"><b>&lt;&lt;&lt; Encrypting data with a dynamicaly created template.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-decrypt-with-signle-key.html"><b>Decrypting data with a single key. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-encryption-klasses.html b/docs/api/xmlsec-encryption-klasses.html
index b83767be..5a913c48 100644
--- a/docs/api/xmlsec-encryption-klasses.html
+++ b/docs/api/xmlsec-encryption-klasses.html
@@ -1,124 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>APPENDIX B. XML Security Library Encryption Klasses.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="APPENDIX A. XML Security Library Signature Klasses." href="xmlsec-signature-klasses.html">
-<link rel="NEXT" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>APPENDIX B. XML Security Library Encryption Klasses.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-signature-klasses.html" title="APPENDIX A. XML Security Library Signature Klasses.">
+<link rel="next" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-signature-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-signature-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-reference.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-ENCRYPTION-KLASSES"></a>APPENDIX B. XML Security Library Encryption Klasses.</h1>
-<div class="FIGURE">
-<a name="AEN998"></a><p><b>Figure 1. XML Security Library Encryption Klasses.</b></p>
-<p><img src="images/encryption-structure.png" align="CENTER"></p>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-encryption-klasses"></a>APPENDIX B. XML Security Library Encryption Klasses.</h2></div></div></div>
+<div class="figure">
+<a name="id-1.2.17.2"></a><p class="title"><b>Figure 12. XML Security Library Encryption Klasses.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/encryption-structure.png" align="middle" alt="XML Security Library Encryption Klasses."></div></div>
</div>
+<br class="figure-break">
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-signature-klasses.html"><b>&lt;&lt;&lt; APPENDIX A. XML Security Library Signature Klasses.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-reference.html"><b>XML Security Library API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-errors.html b/docs/api/xmlsec-errors.html
index 53aac93f..5920f0a2 100644
--- a/docs/api/xmlsec-errors.html
+++ b/docs/api/xmlsec-errors.html
@@ -1,1136 +1,1123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>errors</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="dl" href="xmlsec-dl.html">
-<link rel="NEXT" title="io" href="xmlsec-io.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>errors: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-dl.html" title="dl">
+<link rel="next" href="xmlsec-io.html" title="io">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-errors.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-dl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-dl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-io.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-ERRORS"></a>errors</h1>
-<div class="REFNAMEDIV">
-<a name="AEN6261"></a><h2>Name</h2>errors -- Error/log messages support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-ERRORS.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6266"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-errors"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-errors.top_of_page"></a>errors</span></h2>
+<p>errors — Error reporting and logging functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-errors.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-errors.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-errors.html#XMLSECERRORSCALLBACK">*xmlSecErrorsCallback</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-errors.html#xmlSecErrorsCallback" title="xmlSecErrorsCallback ()">*xmlSecErrorsCallback</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSINIT">xmlSecErrorsInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsInit" title="xmlSecErrorsInit ()">xmlSecErrorsInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSSHUTDOWN">xmlSecErrorsShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsShutdown" title="xmlSecErrorsShutdown ()">xmlSecErrorsShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSSETCALLBACK">xmlSecErrorsSetCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsSetCallback" title="xmlSecErrorsSetCallback ()">xmlSecErrorsSetCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSDEFAULTCALLBACK">xmlSecErrorsDefaultCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsDefaultCallback" title="xmlSecErrorsDefaultCallback ()">xmlSecErrorsDefaultCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSDEFAULTCALLBACKENABLEOUTPUT">xmlSecErrorsDefaultCallbackEnableOutput</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsDefaultCallbackEnableOutput" title="xmlSecErrorsDefaultCallbackEnableOutput ()">xmlSecErrorsDefaultCallbackEnableOutput</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSGETCODE">xmlSecErrorsGetCode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsGetCode" title="xmlSecErrorsGetCode ()">xmlSecErrorsGetCode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">char</span></font> *</td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSGETMSG">xmlSecErrorsGetMsg</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">const <font><span class="returnvalue">char</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsGetMsg" title="xmlSecErrorsGetMsg ()">xmlSecErrorsGetMsg</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERRORSSAFESTRING">xmlSecErrorsSafeString</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecErrorsSafeString" title="xmlSecErrorsSafeString()">xmlSecErrorsSafeString</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-errors.html#XMLSECERROR">xmlSecError</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecError" title="xmlSecError ()">xmlSecError</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-errors.html#XMLSECASSERT">xmlSecAssert</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecAssert" title="xmlSecAssert()">xmlSecAssert</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-errors.html#XMLSECASSERT2">xmlSecAssert2</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-errors.html#xmlSecAssert2" title="xmlSecAssert2()">xmlSecAssert2</a><span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-ERRORS.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6351"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-errors.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-XMLSEC-FAILED:CAPS">XMLSEC_ERRORS_R_XMLSEC_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-XMLSEC-FAILED:CAPS" title="XMLSEC_ERRORS_R_XMLSEC_FAILED">XMLSEC_ERRORS_R_XMLSEC_FAILED</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-MALLOC-FAILED:CAPS" title="XMLSEC_ERRORS_R_MALLOC_FAILED">XMLSEC_ERRORS_R_MALLOC_FAILED</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-STRDUP-FAILED:CAPS" title="XMLSEC_ERRORS_R_STRDUP_FAILED">XMLSEC_ERRORS_R_STRDUP_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-MALLOC-FAILED:CAPS">XMLSEC_ERRORS_R_MALLOC_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CRYPTO-FAILED:CAPS" title="XMLSEC_ERRORS_R_CRYPTO_FAILED">XMLSEC_ERRORS_R_CRYPTO_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-STRDUP-FAILED:CAPS">XMLSEC_ERRORS_R_STRDUP_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-XML-FAILED:CAPS" title="XMLSEC_ERRORS_R_XML_FAILED">XMLSEC_ERRORS_R_XML_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CRYPTO-FAILED:CAPS">XMLSEC_ERRORS_R_CRYPTO_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-XSLT-FAILED:CAPS" title="XMLSEC_ERRORS_R_XSLT_FAILED">XMLSEC_ERRORS_R_XSLT_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-XML-FAILED:CAPS">XMLSEC_ERRORS_R_XML_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-IO-FAILED:CAPS" title="XMLSEC_ERRORS_R_IO_FAILED">XMLSEC_ERRORS_R_IO_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-XSLT-FAILED:CAPS">XMLSEC_ERRORS_R_XSLT_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-DISABLED:CAPS" title="XMLSEC_ERRORS_R_DISABLED">XMLSEC_ERRORS_R_DISABLED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-IO-FAILED:CAPS">XMLSEC_ERRORS_R_IO_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-NOT-IMPLEMENTED:CAPS" title="XMLSEC_ERRORS_R_NOT_IMPLEMENTED">XMLSEC_ERRORS_R_NOT_IMPLEMENTED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-DISABLED:CAPS">XMLSEC_ERRORS_R_DISABLED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-CONFIG:CAPS" title="XMLSEC_ERRORS_R_INVALID_CONFIG">XMLSEC_ERRORS_R_INVALID_CONFIG</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-NOT-IMPLEMENTED:CAPS">XMLSEC_ERRORS_R_NOT_IMPLEMENTED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-SIZE:CAPS" title="XMLSEC_ERRORS_R_INVALID_SIZE">XMLSEC_ERRORS_R_INVALID_SIZE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-SIZE:CAPS">XMLSEC_ERRORS_R_INVALID_SIZE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-DATA:CAPS" title="XMLSEC_ERRORS_R_INVALID_DATA">XMLSEC_ERRORS_R_INVALID_DATA</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-DATA:CAPS">XMLSEC_ERRORS_R_INVALID_DATA</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-RESULT:CAPS" title="XMLSEC_ERRORS_R_INVALID_RESULT">XMLSEC_ERRORS_R_INVALID_RESULT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-RESULT:CAPS">XMLSEC_ERRORS_R_INVALID_RESULT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TYPE:CAPS" title="XMLSEC_ERRORS_R_INVALID_TYPE">XMLSEC_ERRORS_R_INVALID_TYPE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TYPE:CAPS">XMLSEC_ERRORS_R_INVALID_TYPE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-OPERATION:CAPS" title="XMLSEC_ERRORS_R_INVALID_OPERATION">XMLSEC_ERRORS_R_INVALID_OPERATION</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-OPERATION:CAPS">XMLSEC_ERRORS_R_INVALID_OPERATION</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-STATUS:CAPS" title="XMLSEC_ERRORS_R_INVALID_STATUS">XMLSEC_ERRORS_R_INVALID_STATUS</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-STATUS:CAPS">XMLSEC_ERRORS_R_INVALID_STATUS</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-FORMAT:CAPS" title="XMLSEC_ERRORS_R_INVALID_FORMAT">XMLSEC_ERRORS_R_INVALID_FORMAT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-FORMAT:CAPS">XMLSEC_ERRORS_R_INVALID_FORMAT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-DATA-NOT-MATCH:CAPS" title="XMLSEC_ERRORS_R_DATA_NOT_MATCH">XMLSEC_ERRORS_R_DATA_NOT_MATCH</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-DATA-NOT-MATCH:CAPS">XMLSEC_ERRORS_R_DATA_NOT_MATCH</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-VERSION:CAPS" title="XMLSEC_ERRORS_R_INVALID_VERSION">XMLSEC_ERRORS_R_INVALID_VERSION</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE:CAPS">XMLSEC_ERRORS_R_INVALID_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE:CAPS" title="XMLSEC_ERRORS_R_INVALID_NODE">XMLSEC_ERRORS_R_INVALID_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-CONTENT:CAPS">XMLSEC_ERRORS_R_INVALID_NODE_CONTENT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-CONTENT:CAPS" title="XMLSEC_ERRORS_R_INVALID_NODE_CONTENT">XMLSEC_ERRORS_R_INVALID_NODE_CONTENT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE:CAPS">XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE:CAPS" title="XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE">XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE:CAPS">XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE:CAPS" title="XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE">XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT:CAPS">XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT:CAPS" title="XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT">XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-UNEXPECTED-NODE:CAPS">XMLSEC_ERRORS_R_UNEXPECTED_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-UNEXPECTED-NODE:CAPS" title="XMLSEC_ERRORS_R_UNEXPECTED_NODE">XMLSEC_ERRORS_R_UNEXPECTED_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-NOT-FOUND:CAPS">XMLSEC_ERRORS_R_NODE_NOT_FOUND</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-NOT-FOUND:CAPS" title="XMLSEC_ERRORS_R_NODE_NOT_FOUND">XMLSEC_ERRORS_R_NODE_NOT_FOUND</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM:CAPS">XMLSEC_ERRORS_R_INVALID_TRANSFORM</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM:CAPS" title="XMLSEC_ERRORS_R_INVALID_TRANSFORM">XMLSEC_ERRORS_R_INVALID_TRANSFORM</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY:CAPS">XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY:CAPS" title="XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY">XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-URI-TYPE:CAPS">XMLSEC_ERRORS_R_INVALID_URI_TYPE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-URI-TYPE:CAPS" title="XMLSEC_ERRORS_R_INVALID_URI_TYPE">XMLSEC_ERRORS_R_INVALID_URI_TYPE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED:CAPS">XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED:CAPS" title="XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED">XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-DISABLED:CAPS">XMLSEC_ERRORS_R_TRANSFORM_DISABLED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-DISABLED:CAPS" title="XMLSEC_ERRORS_R_TRANSFORM_DISABLED">XMLSEC_ERRORS_R_TRANSFORM_DISABLED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA:CAPS">XMLSEC_ERRORS_R_INVALID_KEY_DATA</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA:CAPS" title="XMLSEC_ERRORS_R_INVALID_KEY_DATA">XMLSEC_ERRORS_R_INVALID_KEY_DATA</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND:CAPS">XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND:CAPS" title="XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND">XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST:CAPS">XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST:CAPS" title="XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST">XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE:CAPS">XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE:CAPS" title="XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE">XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-NOT-FOUND:CAPS">XMLSEC_ERRORS_R_KEY_NOT_FOUND</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-NOT-FOUND:CAPS" title="XMLSEC_ERRORS_R_KEY_NOT_FOUND">XMLSEC_ERRORS_R_KEY_NOT_FOUND</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEYDATA-DISABLED:CAPS">XMLSEC_ERRORS_R_KEYDATA_DISABLED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-KEYDATA-DISABLED:CAPS" title="XMLSEC_ERRORS_R_KEYDATA_DISABLED">XMLSEC_ERRORS_R_KEYDATA_DISABLED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL:CAPS">XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL:CAPS" title="XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL">XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH:CAPS">XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH:CAPS" title="XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH">XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL:CAPS">XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL:CAPS" title="XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL">XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-VERIFY-FAILED:CAPS">XMLSEC_ERRORS_R_CERT_VERIFY_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-VERIFY-FAILED:CAPS" title="XMLSEC_ERRORS_R_CERT_VERIFY_FAILED">XMLSEC_ERRORS_R_CERT_VERIFY_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-FOUND:CAPS">XMLSEC_ERRORS_R_CERT_NOT_FOUND</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-FOUND:CAPS" title="XMLSEC_ERRORS_R_CERT_NOT_FOUND">XMLSEC_ERRORS_R_CERT_NOT_FOUND</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-REVOKED:CAPS">XMLSEC_ERRORS_R_CERT_REVOKED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-REVOKED:CAPS" title="XMLSEC_ERRORS_R_CERT_REVOKED">XMLSEC_ERRORS_R_CERT_REVOKED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-ISSUER-FAILED:CAPS">XMLSEC_ERRORS_R_CERT_ISSUER_FAILED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-ISSUER-FAILED:CAPS" title="XMLSEC_ERRORS_R_CERT_ISSUER_FAILED">XMLSEC_ERRORS_R_CERT_ISSUER_FAILED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-YET-VALID:CAPS">XMLSEC_ERRORS_R_CERT_NOT_YET_VALID</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-YET-VALID:CAPS" title="XMLSEC_ERRORS_R_CERT_NOT_YET_VALID">XMLSEC_ERRORS_R_CERT_NOT_YET_VALID</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-HAS-EXPIRED:CAPS">XMLSEC_ERRORS_R_CERT_HAS_EXPIRED</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-HAS-EXPIRED:CAPS" title="XMLSEC_ERRORS_R_CERT_HAS_EXPIRED">XMLSEC_ERRORS_R_CERT_HAS_EXPIRED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-NO-REFERENCES:CAPS">XMLSEC_ERRORS_R_DSIG_NO_REFERENCES</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-NO-REFERENCES:CAPS" title="XMLSEC_ERRORS_R_DSIG_NO_REFERENCES">XMLSEC_ERRORS_R_DSIG_NO_REFERENCES</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE:CAPS">XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE:CAPS" title="XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE">XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-R-ASSERTION:CAPS">XMLSEC_ERRORS_R_ASSERTION</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-R-ASSERTION:CAPS" title="XMLSEC_ERRORS_R_ASSERTION">XMLSEC_ERRORS_R_ASSERTION</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-MAX-NUMBER:CAPS">XMLSEC_ERRORS_MAX_NUMBER</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-MAX-NUMBER:CAPS" title="XMLSEC_ERRORS_MAX_NUMBER">XMLSEC_ERRORS_MAX_NUMBER</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-HERE:CAPS">XMLSEC_ERRORS_HERE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-HERE:CAPS" title="XMLSEC_ERRORS_HERE">XMLSEC_ERRORS_HERE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-errors.html#XMLSEC-ERRORS-NO-MESSAGE:CAPS">XMLSEC_ERRORS_NO_MESSAGE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-errors.html#XMLSEC-ERRORS-NO-MESSAGE:CAPS" title="XMLSEC_ERRORS_NO_MESSAGE">XMLSEC_ERRORS_NO_MESSAGE</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-errors.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-ERRORS.DESCRIPTION"></a><h2>Description</h2>
-<p>Error/log messages support.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-ERRORS.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECERRORSCALLBACK"></a><h3>xmlSecErrorsCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecErrorsCallback<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-errors.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecErrorsCallback"></a><h3>xmlSecErrorsCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecErrorsCallback<span class="c_punctuation">)</span> (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>);</pre>
<p>The errors reporting callback function.</p>
-<div class="REFSECT3">
-<a name="AEN6590"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6592"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location file name (__FILE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location file name (__FILE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function name (__func__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function name (__func__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the additional error message.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the additional error message.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSINIT"></a><h3>xmlSecErrorsInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecErrorsInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>Initializes the errors reporting. It is called from <a href="xmlsec-xmlsec.html#XMLSECINIT"><span class="TYPE">xmlSecInit</span></a> function.
+<div class="refsect2">
+<a name="xmlSecErrorsInit"></a><h3>xmlSecErrorsInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecErrorsInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Initializes the errors reporting. It is called from <a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()"><span class="type">xmlSecInit</span></a> function.
and applications must not call this function directly.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSSHUTDOWN"></a><h3>xmlSecErrorsShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecErrorsShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>Cleanups the errors reporting. It is called from <a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN"><span class="TYPE">xmlSecShutdown</span></a> function.
+<div class="refsect2">
+<a name="xmlSecErrorsShutdown"></a><h3>xmlSecErrorsShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecErrorsShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Cleanups the errors reporting. It is called from <a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()"><span class="type">xmlSecShutdown</span></a> function.
and applications must not call this function directly.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSSETCALLBACK"></a><h3>xmlSecErrorsSetCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecErrorsSetCallback (<code class="PARAMETER"><a href="xmlsec-errors.html#XMLSECERRORSCALLBACK"><span class="TYPE">xmlSecErrorsCallback</span></a> callback</code>);</pre>
-<p>Sets the errors callback function to <code class="PARAMETER">callback</code>
+<div class="refsect2">
+<a name="xmlSecErrorsSetCallback"></a><h3>xmlSecErrorsSetCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecErrorsSetCallback (<em class="parameter"><code><a class="link" href="xmlsec-errors.html#xmlSecErrorsCallback" title="xmlSecErrorsCallback ()"><span class="type">xmlSecErrorsCallback</span></a> callback</code></em>);</pre>
+<p>Sets the errors callback function to <em class="parameter"><code>callback</code></em>
that will be called
every time an error occurs.</p>
-<div class="REFSECT3">
-<a name="AEN6673"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6675"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsSetCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>callback</p></td>
-<td><p>the new errors callback function.</p></td>
-<td> </td>
+<td class="parameter_name"><p>callback</p></td>
+<td class="parameter_description"><p>the new errors callback function.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSDEFAULTCALLBACK"></a><h3>xmlSecErrorsDefaultCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecErrorsDefaultCallback (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecErrorsDefaultCallback"></a><h3>xmlSecErrorsDefaultCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecErrorsDefaultCallback (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>);</pre>
<p>The default error reporting callback that utilizes LibXML
-error reporting <font><span class="TYPE">xmlGenericError</span></font> function.</p>
-<div class="REFSECT3">
-<a name="AEN6715"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6717"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+error reporting <font><span class="type">xmlGenericError</span></font> function.</p>
+<div class="refsect3">
+<a name="xmlSecErrorsDefaultCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location file name (__FILE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location file name (__FILE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function name (__FUNCTION__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function name (__FUNCTION__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the additional error message.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the additional error message.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSDEFAULTCALLBACKENABLEOUTPUT"></a><h3>xmlSecErrorsDefaultCallbackEnableOutput ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
+<div class="refsect2">
+<a name="xmlSecErrorsDefaultCallbackEnableOutput"></a><h3>xmlSecErrorsDefaultCallbackEnableOutput ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecErrorsDefaultCallbackEnableOutput
- (<code class="PARAMETER"><font><span class="TYPE">int</span></font> enabled</code>);</pre>
+ (<em class="parameter"><code><font><span class="type">int</span></font> enabled</code></em>);</pre>
<p>Enables or disables calling LibXML2 callback from the default
errors callback.</p>
-<div class="REFSECT3">
-<a name="AEN6773"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6775"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsDefaultCallbackEnableOutput.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>enabled</p></td>
-<td><p>the flag.</p></td>
-<td> </td>
+<td class="parameter_name"><p>enabled</p></td>
+<td class="parameter_description"><p>the flag.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSGETCODE"></a><h3>xmlSecErrorsGetCode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecErrorsGetCode (<code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
-<p>Gets the known error code at position <code class="PARAMETER">pos</code>
+<div class="refsect2">
+<a name="xmlSecErrorsGetCode"></a><h3>xmlSecErrorsGetCode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecErrorsGetCode (<em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Gets the known error code at position <em class="parameter"><code>pos</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN6796"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6798"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsGetCode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>pos</p></td>
-<td><p>the error position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the error position.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN6807"></a><h4>Returns</h4>
-<p> the known error code or 0 if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecErrorsGetCode.returns"></a><h4>Returns</h4>
+<p> the known error code or 0 if <em class="parameter"><code>pos</code></em>
is greater than
total number of known error codes.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSGETMSG"></a><h3>xmlSecErrorsGetMsg ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">char</span></font> *
-xmlSecErrorsGetMsg (<code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
-<p>Gets the known error message at position <code class="PARAMETER">pos</code>
+<div class="refsect2">
+<a name="xmlSecErrorsGetMsg"></a><h3>xmlSecErrorsGetMsg ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">char</span></font> *
+xmlSecErrorsGetMsg (<em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Gets the known error message at position <em class="parameter"><code>pos</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN6823"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6825"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsGetMsg.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>pos</p></td>
-<td><p>the error position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the error position.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN6834"></a><h4>Returns</h4>
-<p> the known error message or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecErrorsGetMsg.returns"></a><h4>Returns</h4>
+<p> the known error message or NULL if <em class="parameter"><code>pos</code></em>
is greater than
total number of known error codes.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERRORSSAFESTRING"></a><h3>xmlSecErrorsSafeString()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecErrorsSafeString(str)</pre>
-<p>Macro. Returns <code class="PARAMETER">str</code>
+<div class="refsect2">
+<a name="xmlSecErrorsSafeString"></a><h3>xmlSecErrorsSafeString()</h3>
+<pre class="programlisting">#define xmlSecErrorsSafeString(str)</pre>
+<p>Macro. Returns <em class="parameter"><code>str</code></em>
if it is not NULL or pointer to "NULL" otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN6845"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6847"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecErrorsSafeString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string.</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECERROR"></a><h3>xmlSecError ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecError (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>,
- <code class="PARAMETER">...</code>);</pre>
-<p>Reports an error to the default (<a href="xmlsec-errors.html#XMLSECERRORSDEFAULTCALLBACK"><span class="TYPE">xmlSecErrorsDefaultCallback</span></a>) or
-application specific callback installed using <a href="xmlsec-errors.html#XMLSECERRORSSETCALLBACK"><span class="TYPE">xmlSecErrorsSetCallback</span></a>
+<div class="refsect2">
+<a name="xmlSecError"></a><h3>xmlSecError ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecError (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+<p>Reports an error to the default (<a class="link" href="xmlsec-errors.html#xmlSecErrorsDefaultCallback" title="xmlSecErrorsDefaultCallback ()"><span class="type">xmlSecErrorsDefaultCallback</span></a>) or
+application specific callback installed using <a class="link" href="xmlsec-errors.html#xmlSecErrorsSetCallback" title="xmlSecErrorsSetCallback ()"><span class="type">xmlSecErrorsSetCallback</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN6890"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6892"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecError.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location filename (__FILE__).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location filename (__FILE__).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function (__FUNCTIION__).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function (__FUNCTION__).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object (e.g. transform, key data, etc).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject (e.g. failed function name).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the error message in printf format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the error message in printf format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>...</p></td>
-<td><p>the parameters for the <code class="PARAMETER">msg</code>
+<td class="parameter_name"><p>...</p></td>
+<td class="parameter_description"><p>the parameters for the <em class="parameter"><code>msg</code></em>
.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECASSERT"></a><h3>xmlSecAssert()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecAssert( p )</pre>
-<p>Macro. Verifies that <code class="PARAMETER">p</code>
- is true and calls <font><code class="FUNCTION">return()</code></font> otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN6953"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6955"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecAssert"></a><h3>xmlSecAssert()</h3>
+<pre class="programlisting">#define xmlSecAssert( p )</pre>
+<p>Macro. Verifies that <em class="parameter"><code>p</code></em>
+ is true and calls <font><code class="function">return()</code></font> otherwise.</p>
+<div class="refsect3">
+<a name="xmlSecAssert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>p</p></td>
-<td><p>the expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>p</p></td>
+<td class="parameter_description"><p>the expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECASSERT2"></a><h3>xmlSecAssert2()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecAssert2( p, ret )</pre>
-<p>Macro. Verifies that <code class="PARAMETER">p</code>
- is true and calls return(<code class="PARAMETER">ret</code>
+<div class="refsect2">
+<a name="xmlSecAssert2"></a><h3>xmlSecAssert2()</h3>
+<pre class="programlisting">#define xmlSecAssert2( p, ret )</pre>
+<p>Macro. Verifies that <em class="parameter"><code>p</code></em>
+ is true and calls return(<em class="parameter"><code>ret</code></em>
) otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN6972"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN6974"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAssert2.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>p</p></td>
-<td><p>the expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>p</p></td>
+<td class="parameter_description"><p>the expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ret</p></td>
-<td><p>the return value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ret</p></td>
+<td class="parameter_description"><p>the return value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-ERRORS.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-errors.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-XMLSEC-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_XMLSEC_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_XMLSEC_FAILED 1</pre>
-<p>An XMLSec function failed (error subject is the failed function).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_XMLSEC_FAILED 1
+</pre>
+<p>An XMLSec function failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-MALLOC-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_MALLOC_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_MALLOC_FAILED 2</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_MALLOC_FAILED 2
+</pre>
<p>Failed to allocate memory error.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-STRDUP-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_STRDUP_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_STRDUP_FAILED 3</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_STRDUP_FAILED 3
+</pre>
<p>Failed to duplicate string error.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CRYPTO-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_CRYPTO_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CRYPTO_FAILED 4</pre>
-<p>Crypto (OpenSSL) function failed (error subject is the failed function).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CRYPTO_FAILED 4
+</pre>
+<p>Crypto (e.g. OpenSSL) function failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-XML-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_XML_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_XML_FAILED 5</pre>
-<p>LibXML function failed (error subject is the failed function).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_XML_FAILED 5
+</pre>
+<p>LibXML function failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-XSLT-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_XSLT_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_XSLT_FAILED 6</pre>
-<p>LibXSLT function failed (error subject is the failed function).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_XSLT_FAILED 6
+</pre>
+<p>LibXSLT function failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-IO-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_IO_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_IO_FAILED 7</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_IO_FAILED 7
+</pre>
<p>IO operation failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-DISABLED:CAPS"></a><h3>XMLSEC_ERRORS_R_DISABLED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_DISABLED 8</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_DISABLED 8
+</pre>
<p>The feature is disabled during compilation.
Check './configure --help' for details on how to
enable it.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-NOT-IMPLEMENTED:CAPS"></a><h3>XMLSEC_ERRORS_R_NOT_IMPLEMENTED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_NOT_IMPLEMENTED 9</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_NOT_IMPLEMENTED 9
+</pre>
<p>Feature is not implemented.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
+<a name="XMLSEC-ERRORS-R-INVALID-CONFIG:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_CONFIG</h3>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_CONFIG 10
+</pre>
+<p>The configuration is invalid.</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-SIZE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_SIZE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_SIZE 11</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_SIZE 11
+</pre>
<p>Invalid size.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-DATA:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_DATA</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_DATA 12</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_DATA 12
+</pre>
<p>Invalid data.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-RESULT:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_RESULT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_RESULT 13</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_RESULT 13
+</pre>
<p>Invalid result.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-TYPE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_TYPE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_TYPE 14</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_TYPE 14
+</pre>
<p>Invalid type.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-OPERATION:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_OPERATION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_OPERATION 15</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_OPERATION 15
+</pre>
<p>Invalid operation.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-STATUS:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_STATUS</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_STATUS 16</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_STATUS 16
+</pre>
<p>Invalid status.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-FORMAT:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_FORMAT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_FORMAT 17</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_FORMAT 17
+</pre>
<p>Invalid format.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-DATA-NOT-MATCH:CAPS"></a><h3>XMLSEC_ERRORS_R_DATA_NOT_MATCH</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_DATA_NOT_MATCH 18</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_DATA_NOT_MATCH 18
+</pre>
<p>The data do not match our expectation.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
+<a name="XMLSEC-ERRORS-R-INVALID-VERSION:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_VERSION</h3>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_VERSION 19
+</pre>
+<p>Version mismatch.</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-NODE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_NODE 21</pre>
-<p>Invalid node (error subject is the node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_NODE 21
+</pre>
+<p>Invalid node.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-NODE-CONTENT:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_NODE_CONTENT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_NODE_CONTENT 22</pre>
-<p>Invalid node content (error subject is the node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_NODE_CONTENT 22
+</pre>
+<p>Invalid node content.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE 23</pre>
-<p>Invalid node attribute (error subject is the node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE 23
+</pre>
+<p>Invalid node attribute.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE:CAPS"></a><h3>XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE 25</pre>
-<p>Missing node attribute (error subject is the node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE 25
+</pre>
+<p>Missing node attribute.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT:CAPS"></a><h3>XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT 26</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT 26
+</pre>
<p>Node already present,</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-UNEXPECTED-NODE:CAPS"></a><h3>XMLSEC_ERRORS_R_UNEXPECTED_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_UNEXPECTED_NODE 27</pre>
-<p>Unexpected node (error subject is the node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_UNEXPECTED_NODE 27
+</pre>
+<p>Unexpected node.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-NODE-NOT-FOUND:CAPS"></a><h3>XMLSEC_ERRORS_R_NODE_NOT_FOUND</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_NODE_NOT_FOUND 28</pre>
-<p>Node not found (error subject is the required node name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_NODE_NOT_FOUND 28
+</pre>
+<p>Node not found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-TRANSFORM:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_TRANSFORM</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_TRANSFORM 31</pre>
-<p>This transform is invlaid here.</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_TRANSFORM 31
+</pre>
+<p>This transform is invalid.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY 32</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY 32
+</pre>
<p>Key is invalid for this transform.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-URI-TYPE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_URI_TYPE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_URI_TYPE 33</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_URI_TYPE 33
+</pre>
<p>Invalid URI type.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED:CAPS"></a><h3>XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED 34</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED 34
+</pre>
<p>The transform requires the input document to be the same as context.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-TRANSFORM-DISABLED:CAPS"></a><h3>XMLSEC_ERRORS_R_TRANSFORM_DISABLED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_TRANSFORM_DISABLED 35</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_TRANSFORM_DISABLED 35
+</pre>
<p>The transform is disabled.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-KEY-DATA:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_KEY_DATA</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_KEY_DATA 41</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_KEY_DATA 41
+</pre>
<p>Key data is invalid.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND:CAPS"></a><h3>XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND 42</pre>
-<p>Data is not found (error subject is the data name).</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND 42
+</pre>
+<p>Data is not found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST:CAPS"></a><h3>XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST 43</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST 43
+</pre>
<p>The key data is already exist.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE:CAPS"></a><h3>XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE 44</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE 44
+</pre>
<p>Invalid key size.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-KEY-NOT-FOUND:CAPS"></a><h3>XMLSEC_ERRORS_R_KEY_NOT_FOUND</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_KEY_NOT_FOUND 45</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_KEY_NOT_FOUND 45
+</pre>
<p>Key not found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-KEYDATA-DISABLED:CAPS"></a><h3>XMLSEC_ERRORS_R_KEYDATA_DISABLED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_KEYDATA_DISABLED 46</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_KEYDATA_DISABLED 46
+</pre>
<p>The key data type disabled.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL:CAPS"></a><h3>XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL 51</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL 51
+</pre>
<p>Max allowed retrievals level reached.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH:CAPS"></a><h3>XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH 52</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH 52
+</pre>
<p>The retrieved key data type does not match the one specified
-in the &lt;dsig:RetrievalMethod/&gt; node.</p>
+in the <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> node.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL:CAPS"></a><h3>XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL 61</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL 61
+</pre>
<p>Max EncryptedKey level reached.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-VERIFY-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_VERIFY_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_VERIFY_FAILED 71</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_VERIFY_FAILED 71
+</pre>
<p>Certificate verification failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-NOT-FOUND:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_NOT_FOUND</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_NOT_FOUND 72</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_NOT_FOUND 72
+</pre>
<p>Requested certificate is not found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-REVOKED:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_REVOKED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_REVOKED 73</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_REVOKED 73
+</pre>
<p>The certificate is revoked.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-ISSUER-FAILED:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_ISSUER_FAILED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_ISSUER_FAILED 74</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_ISSUER_FAILED 74
+</pre>
<p>Failed to get certificate issuer.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-NOT-YET-VALID:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_NOT_YET_VALID</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_NOT_YET_VALID 75</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_NOT_YET_VALID 75
+</pre>
<p>"Not valid before" verification failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-CERT-HAS-EXPIRED:CAPS"></a><h3>XMLSEC_ERRORS_R_CERT_HAS_EXPIRED</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_CERT_HAS_EXPIRED 76</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_CERT_HAS_EXPIRED 76
+</pre>
<p>"Not valid after" verification failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-DSIG-NO-REFERENCES:CAPS"></a><h3>XMLSEC_ERRORS_R_DSIG_NO_REFERENCES</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_DSIG_NO_REFERENCES 81</pre>
-<p>The &lt;dsig:Reference&gt; nodes not found.</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_DSIG_NO_REFERENCES 81
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> nodes not found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE:CAPS"></a><h3>XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE 82</pre>
-<p>The &lt;dsig:Reference&gt; validation failed.</p>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE 82
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> validation failed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-R-ASSERTION:CAPS"></a><h3>XMLSEC_ERRORS_R_ASSERTION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_R_ASSERTION 100</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_R_ASSERTION 100
+</pre>
<p>Invalid assertion.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-MAX-NUMBER:CAPS"></a><h3>XMLSEC_ERRORS_MAX_NUMBER</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_MAX_NUMBER 256</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_MAX_NUMBER 256
+</pre>
<p>The maximum xmlsec errors number.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-HERE:CAPS"></a><h3>XMLSEC_ERRORS_HERE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_HERE __FILE__,__LINE__,__XMLSEC_FUNCTION__</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_HERE __FILE__,__LINE__,__XMLSEC_FUNCTION__
+</pre>
<p>The macro that specifies the location (file, line and function)
-for the <a href="xmlsec-errors.html#XMLSECERROR"><code class="FUNCTION">xmlSecError()</code></a> function.</p>
+for the <a class="link" href="xmlsec-errors.html#xmlSecError" title="xmlSecError ()"><code class="function">xmlSecError()</code></a> function.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ERRORS-NO-MESSAGE:CAPS"></a><h3>XMLSEC_ERRORS_NO_MESSAGE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ERRORS_NO_MESSAGE " "</pre>
+<pre class="programlisting">#define XMLSEC_ERRORS_NO_MESSAGE " "
+</pre>
<p>Empty error message " ".</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-dl.html"><b>&lt;&lt;&lt; dl</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-io.html"><b>io &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-examples-sign-dynamimc-template.html b/docs/api/xmlsec-examples-sign-dynamimc-template.html
index 9605503a..0fb3816d 100644
--- a/docs/api/xmlsec-examples-sign-dynamimc-template.html
+++ b/docs/api/xmlsec-examples-sign-dynamimc-template.html
@@ -1,125 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing a dynamicaly created template.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Signing a template file." href="xmlsec-examples-sign-template-file.html">
-<link rel="NEXT" title="Signing with X509 certificate." href="xmlsec-examples-sign-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing a dynamicaly created template.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-examples-sign-template-file.html" title="Signing a template file.">
+<link rel="next" href="xmlsec-examples-sign-x509.html" title="Signing with X509 certificate.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-examples-sign-template-file.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-examples-sign-template-file.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-examples-sign-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-EXAMPLES-SIGN-DYNAMIMC-TEMPLATE">Signing a dynamicaly created template.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN2">sign2.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN812"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-examples-sign-dynamimc-template"></a>Signing a dynamicaly created template.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign2"></a>sign2.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Signing a file with a dynamicaly created template.
*
* Signs a file using a dynamicaly created template and key from PEM file.
* The signature has one reference with one enveloped transform to sign
- * the whole document except the <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a> node itself.
+ * the whole document except the &lt;dsig:Signature/&gt; node itself.
*
* Usage:
* sign2 &lt;xml-doc&gt; &lt;pem-key&gt;
@@ -133,7 +45,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -209,10 +121,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -289,7 +201,7 @@ sign_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a> node to the doc */
+ /* add &lt;dsig:Signature/&gt; node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
@@ -306,7 +218,7 @@ sign_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> and <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> nodes to put key name in the signed document */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -360,16 +272,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN2-DOC">sign2-doc.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN821"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign2-doc"></a>sign2-doc.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file for sign2 example.
--&gt;
@@ -377,16 +288,14 @@ XML Security Library example: Original XML doc file for sign2 example.
&lt;Data&gt;
Hello, World!
&lt;/Data&gt;
-&lt;/Envelope&gt;</pre>
-<p></p>
-</div>
+&lt;/Envelope&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN2-RES">sign2-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN826"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign2-res"></a>sign2-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file for sign2 example.
--&gt;
@@ -411,15 +320,11 @@ nIH/KUqvIvtk9nb2IjF5Uw==&lt;/SignatureValue&gt;
&lt;KeyInfo&gt;
&lt;KeyName&gt;rsakey.pem&lt;/KeyName&gt;
&lt;/KeyInfo&gt;
-&lt;/Signature&gt;&lt;/Envelope&gt;</pre>
-<p></p>
+&lt;/Signature&gt;&lt;/Envelope&gt;
+</pre></div>
</div>
</div>
-</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-examples-sign-template-file.html"><b>&lt;&lt;&lt; Signing a template file.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-examples-sign-x509.html"><b>Signing with X509 certificate. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-examples-sign-template-file.html b/docs/api/xmlsec-examples-sign-template-file.html
index e1b9c321..f02cf4d6 100644
--- a/docs/api/xmlsec-examples-sign-template-file.html
+++ b/docs/api/xmlsec-examples-sign-template-file.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing a template file.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Examples." href="xmlsec-examples.html">
-<link rel="NEXT" title="Signing a dynamicaly created template." href="xmlsec-examples-sign-dynamimc-template.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing a template file.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-examples.html" title="Examples.">
+<link rel="next" href="xmlsec-examples-sign-dynamimc-template.html" title="Signing a dynamicaly created template.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-examples-sign-dynamimc-template.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-EXAMPLES-SIGN-TEMPLATE-FILE">Signing a template file.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN1">sign1.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN795"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-examples-sign-template-file"></a>Signing a template file.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign1"></a>sign1.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Signing a template file.
*
* Signs a template file using a key from PEM file
@@ -131,7 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -206,10 +118,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -324,16 +236,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN1-TMPL">sign1-tmpl.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN800"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign1-tmpl"></a>sign1-tmpl.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Simple signature template file for sign1 example.
--&gt;
@@ -358,16 +269,15 @@ XML Security Library example: Simple signature template file for sign1 example.
&lt;KeyName/&gt;
&lt;/KeyInfo&gt;
&lt;/Signature&gt;
-&lt;/Envelope&gt; </pre>
-<p></p>
-</div>
+&lt;/Envelope&gt;
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN1-RES">sign1-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN805"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign1-res"></a>sign1-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Simple signature template file for sign1 example.
--&gt;
@@ -393,15 +303,11 @@ elOnt4fo2gPK1a3IVEhMGg==&lt;/SignatureValue&gt;
&lt;KeyName&gt;rsakey.pem&lt;/KeyName&gt;
&lt;/KeyInfo&gt;
&lt;/Signature&gt;
-&lt;/Envelope&gt;</pre>
-<p></p>
-</div>
+&lt;/Envelope&gt;
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-examples.html"><b>&lt;&lt;&lt; Examples.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-examples-sign-dynamimc-template.html"><b>Signing a dynamicaly created template. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-examples-sign-x509.html b/docs/api/xmlsec-examples-sign-x509.html
index 9f07b379..66a48988 100644
--- a/docs/api/xmlsec-examples-sign-x509.html
+++ b/docs/api/xmlsec-examples-sign-x509.html
@@ -1,126 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing with X509 certificate.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Signing a dynamicaly created template." href="xmlsec-examples-sign-dynamimc-template.html">
-<link rel="NEXT" title="Verifying a signature with a single key." href="xmlsec-verify-with-key.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing with X509 certificate.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-examples-sign-dynamimc-template.html" title="Signing a dynamicaly created template.">
+<link rel="next" href="xmlsec-verify-with-key.html" title="Verifying a signature with a single key.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-examples-sign-dynamimc-template.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-examples-sign-dynamimc-template.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-verify-with-key.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-EXAMPLES-SIGN-X509">Signing with X509 certificate.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN3">sign3.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN833"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-examples-sign-x509"></a>Signing with X509 certificate.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign3"></a>sign3.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Signing a file with a dynamicaly created template and an X509 certificate.
*
* Signs a file using a dynamicaly created template, key from PEM file and
* an X509 certificate. The signature has one reference with one enveloped
- * transform to sign the whole document except the <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a> node
- * itself. The key certificate is written in the <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a> node.
+ * transform to sign the whole document except the &lt;dsig:Signature/&gt; node
+ * itself. The key certificate is written in the &lt;dsig:X509Data/&gt; node.
*
* This example was developed and tested with OpenSSL crypto library. The
* certificates management policies for another crypto library may break it.
@@ -137,7 +49,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -213,10 +125,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -264,7 +176,7 @@ main(int argc, char **argv) {
*
* Signs the @xml_file using private key from @key_file and dynamicaly
* created enveloped signature template. The certificate from @cert_file
- * is placed in the <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a> node.
+ * is placed in the &lt;dsig:X509Data/&gt; node.
*
* Returns 0 on success or a negative value if an error occurs.
*/
@@ -274,6 +186,7 @@ sign_file(const char* xml_file, const char* key_file, const char* cert_file) {
xmlNodePtr signNode = NULL;
xmlNodePtr refNode = NULL;
xmlNodePtr keyInfoNode = NULL;
+ xmlNodePtr x509DataNode = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
@@ -296,7 +209,7 @@ sign_file(const char* xml_file, const char* key_file, const char* cert_file) {
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a> node to the doc */
+ /* add &lt;dsig:Signature/&gt; node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
@@ -313,18 +226,29 @@ sign_file(const char* xml_file, const char* key_file, const char* cert_file) {
goto done;
}
- /* add <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> and <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a> */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:X509Data/&gt; */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
- if(xmlSecTmplKeyInfoAddX509Data(keyInfoNode) == NULL) {
+ x509DataNode = xmlSecTmplKeyInfoAddX509Data(keyInfoNode);
+ if(x509DataNode == NULL) {
fprintf(stderr, "Error: failed to add X509Data node\n");
goto done;
}
+ if(xmlSecTmplX509DataAddSubjectName(x509DataNode) == NULL) {
+ fprintf(stderr, "Error: failed to add X509SubjectName node\n");
+ goto done;
+ }
+
+ if(xmlSecTmplX509DataAddCertificate(x509DataNode) == NULL) {
+ fprintf(stderr, "Error: failed to add X509Certificate node\n");
+ goto done;
+ }
+
/* create signature context, we don't need keys manager in this example */
dsigCtx = xmlSecDSigCtxCreate(NULL);
if(dsigCtx == NULL) {
@@ -373,16 +297,15 @@ done:
xmlFreeDoc(doc);
}
return(res);
-} </pre>
-<p></p>
-</div>
+}
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN3-DOC">sign3-doc.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN844"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign3-doc"></a>sign3-doc.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file for sign3 example.
--&gt;
@@ -390,16 +313,14 @@ XML Security Library example: Original XML doc file for sign3 example.
&lt;Data&gt;
Hello, World!
&lt;/Data&gt;
-&lt;/Envelope&gt;</pre>
-<p></p>
+&lt;/Envelope&gt;
+</pre></div>
</div>
-</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-SIGN3-RES">sign3-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN849"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-sign3-res"></a>sign3-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: Original XML doc file for sign3 example.
--&gt;
@@ -445,15 +366,11 @@ hvcNAQEFBQADQQAOXBj0yICp1RmHXqnUlsppryLCW3pKBD1dkb4HWarO7RjA1yJJ
fBjXssrERn05kpBcrRfzou4r3DCgQFPhjxga&lt;/X509Certificate&gt;
&lt;/X509Data&gt;
&lt;/KeyInfo&gt;
-&lt;/Signature&gt;&lt;/Envelope&gt;</pre>
-<p></p>
-</div>
+&lt;/Signature&gt;&lt;/Envelope&gt;
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-examples-sign-dynamimc-template.html"><b>&lt;&lt;&lt; Signing a dynamicaly created template.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-verify-with-key.html"><b>Verifying a signature with a single key. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-examples.html b/docs/api/xmlsec-examples.html
index 2efb56d7..f683312d 100644
--- a/docs/api/xmlsec-examples.html
+++ b/docs/api/xmlsec-examples.html
@@ -1,142 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Examples.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Sharing the results." href="xmlsec-notes-new-crypto-sharing-results.html">
-<link rel="NEXT" title="Signing a template file." href="xmlsec-examples-sign-template-file.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Examples.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-new-crypto-sharing-results.html" title="Sharing the results.">
+<link rel="next" href="xmlsec-examples-sign-template-file.html" title="Signing a template file.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-sharing-results.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-sharing-results.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-examples-sign-template-file.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-EXAMPLES"></a>Examples.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-examples.html#XMLSEC-EXAMPLES-OVERVIEW">XML Security Library Examples.</a></dt>
-<dt><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></dt>
-<dt><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></dt>
-<dt><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></dt>
-<dt><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></dt>
-<dt><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></dt>
-<dt><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></dt>
-<dt><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></dt>
-<dt><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></dt>
-<dt><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></dt>
-<dt><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></dt>
-<dt><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></dt>
-<dt><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></dt>
-<dt><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-examples"></a>Examples.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-examples.html#xmlsec-examples-overview">XML Security Library Examples.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1">sign1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-tmpl">sign1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-res">sign1-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2">sign2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-doc">sign2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-res">sign2-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3">sign3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-doc">sign3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-res">sign3-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-key.html#xmlsec-example-verify1">verify1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-keys-mngr.html#xmlsec-example-verify2">verify2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-x509.html#xmlsec-example-verify3">verify3.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4">verify4.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-tmpl">verify4-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-res">verify4-res.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-tmpl">verify4-bad-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-res">verify4-bad-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1">encrypt1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-tmpl">encrypt1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-res">encrypt1-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2">encrypt2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-doc">encrypt2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-res">encrypt2-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3">encrypt3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-doc">encrypt3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-res">encrypt3-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-signle-key.html#xmlsec-example-decrypt1">decrypt1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-keys-mngr.html#xmlsec-example-decrypt2">decrypt2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-custom-keys-manager.html#xmlsec-example-decrypt3">decrypt3.c</a></span></dt></dl></dd>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-EXAMPLES-OVERVIEW">XML Security Library Examples.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-examples-overview"></a>XML Security Library Examples.</h2></div></div></div>
<p>This section contains several examples of using XML Security Library
to sign, veiryf, encrypt or decrypt XML documents.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-sharing-results.html"><b>&lt;&lt;&lt; Sharing the results.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-examples-sign-template-file.html"><b>Signing a template file. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gcrypt-app.html b/docs/api/xmlsec-gcrypt-app.html
index d7aabcfc..43c4d43a 100644
--- a/docs/api/xmlsec-gcrypt-app.html
+++ b/docs/api/xmlsec-gcrypt-app.html
@@ -1,864 +1,787 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for GCrypt API Reference." href="xmlsec-gcrypt-ref.html">
-<link rel="PREVIOUS" title="XML Security Library for GCrypt API Reference." href="xmlsec-gcrypt-ref.html">
-<link rel="NEXT" title="crypto" href="xmlsec-gcrypt-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-gcrypt-ref.html" title="XML Security Library for GCrypt API Reference.">
+<link rel="prev" href="xmlsec-gcrypt-ref.html" title="XML Security Library for GCrypt API Reference.">
+<link rel="next" href="xmlsec-gcrypt-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gcrypt-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-gcrypt-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-gcrypt-app.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-gcrypt-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gcrypt-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-gcrypt-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-GCRYPT-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN35997"></a><h2>Name</h2>app -- Application functions implementation for GnuTLS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36002"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-gcrypt-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-gcrypt-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for GCrypt.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPINIT">xmlSecGCryptAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppInit" title="xmlSecGCryptAppInit ()">xmlSecGCryptAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPSHUTDOWN">xmlSecGCryptAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppShutdown" title="xmlSecGCryptAppShutdown ()">xmlSecGCryptAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRINIT">xmlSecGCryptAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrInit" title="xmlSecGCryptAppDefaultKeysMngrInit ()">xmlSecGCryptAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecGCryptAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrAdoptKey" title="xmlSecGCryptAppDefaultKeysMngrAdoptKey ()">xmlSecGCryptAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRLOAD">xmlSecGCryptAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrLoad" title="xmlSecGCryptAppDefaultKeysMngrLoad ()">xmlSecGCryptAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRSAVE">xmlSecGCryptAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrSave" title="xmlSecGCryptAppDefaultKeysMngrSave ()">xmlSecGCryptAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYSMNGRCERTLOAD">xmlSecGCryptAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoad" title="xmlSecGCryptAppKeysMngrCertLoad ()">xmlSecGCryptAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYSMNGRCERTLOADMEMORY">xmlSecGCryptAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoadMemory" title="xmlSecGCryptAppKeysMngrCertLoadMemory ()">xmlSecGCryptAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYLOAD">xmlSecGCryptAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoad" title="xmlSecGCryptAppKeyLoad ()">xmlSecGCryptAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYLOADMEMORY">xmlSecGCryptAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoadMemory" title="xmlSecGCryptAppKeyLoadMemory ()">xmlSecGCryptAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPPKCS12LOAD">xmlSecGCryptAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12Load" title="xmlSecGCryptAppPkcs12Load ()">xmlSecGCryptAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPPKCS12LOADMEMORY">xmlSecGCryptAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12LoadMemory" title="xmlSecGCryptAppPkcs12LoadMemory ()">xmlSecGCryptAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYCERTLOAD">xmlSecGCryptAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoad" title="xmlSecGCryptAppKeyCertLoad ()">xmlSecGCryptAppKeyCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYCERTLOADMEMORY">xmlSecGCryptAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoadMemory" title="xmlSecGCryptAppKeyCertLoadMemory ()">xmlSecGCryptAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPGETDEFAULTPWDCALLBACK">xmlSecGCryptAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppGetDefaultPwdCallback" title="xmlSecGCryptAppGetDefaultPwdCallback ()">xmlSecGCryptAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Application functions implementation for GCrypt.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPINIT"></a><h3>xmlSecGCryptAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecGCryptAppInit"></a><h3>xmlSecGCryptAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN36127"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36129"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the path to GCrypt configuration (unused).</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to GCrypt configuration (unused).</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36138"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPSHUTDOWN"></a><h3>xmlSecGCryptAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppShutdown"></a><h3>xmlSecGCryptAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN36152"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecGCryptAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with simple keys store <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID"><span class="TYPE">xmlSecSimpleKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecGCryptAppDefaultKeysMngrInit"></a><h3>xmlSecGCryptAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
and a default GCrypt crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN36169"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36171"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36180"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecGCryptAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecGCryptAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecGCryptAppDefaultKeysMngrAdoptKey
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecGCryptAppDefaultKeysMngrInit</span></a>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrInit" title="xmlSecGCryptAppDefaultKeysMngrInit ()"><span class="type">xmlSecGCryptAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN36201"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36203"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36218"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecGCryptAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecGCryptAppDefaultKeysMngrLoad"></a><h3>xmlSecGCryptAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecGCryptAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN36239"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36241"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrInit" title="xmlSecGCryptAppDefaultKeysMngrInit ()"><span class="type">xmlSecGCryptAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36256"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecGCryptAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecGCryptAppDefaultKeysMngrSave"></a><h3>xmlSecGCryptAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN36277"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36279"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36300"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecGCryptAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeysMngrCertLoad"></a><h3>xmlSecGCryptAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
(not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN36325"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36327"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36355"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecGCryptAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppKeysMngrCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from binary buffer <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeysMngrCertLoadMemory"></a><h3>xmlSecGCryptAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppKeysMngrCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from binary buffer <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
(not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN36383"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36385"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate trusted or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36418"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYLOAD"></a><h3>xmlSecGCryptAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGCryptAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeyLoad"></a><h3>xmlSecGCryptAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGCryptAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN36444"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36446"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36479"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYLOADMEMORY"></a><h3>xmlSecGCryptAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGCryptAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeyLoadMemory"></a><h3>xmlSecGCryptAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGCryptAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the memory buffer.</p>
-<div class="REFSECT3">
-<a name="AEN36508"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36510"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of binary key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of binary key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36549"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPPKCS12LOAD"></a><h3>xmlSecGCryptAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGCryptAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppPkcs12Load"></a><h3>xmlSecGCryptAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGCryptAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file
(not implemented yet).
For uniformity, call xmlSecGCryptAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN36572"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36574"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36601"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPPKCS12LOADMEMORY"></a><h3>xmlSecGCryptAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGCryptAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppPkcs12LoadMemory"></a><h3>xmlSecGCryptAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGCryptAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 data in memory buffer.
For uniformity, call xmlSecGCryptAppKeyLoadMemory instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12 (not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN36627"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36629"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the PKCS12 binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the PKCS12 binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36662"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYCERTLOAD"></a><h3>xmlSecGCryptAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeyCertLoad"></a><h3>xmlSecGCryptAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key
(not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN36683"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36685"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN36706"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPKEYCERTLOADMEMORY"></a><h3>xmlSecGCryptAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppKeyCertLoadMemory"></a><h3>xmlSecGCryptAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Reads the certificate from memory buffer and adds it to key (not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN36729"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36731"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN36758"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecGCryptAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
-xmlSecGCryptAppGetDefaultPwdCallback (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptAppGetDefaultPwdCallback"></a><h3>xmlSecGCryptAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecGCryptAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN36771"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-app.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gcrypt-ref.html"><b>&lt;&lt;&lt; XML Security Library for GCrypt API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gcrypt-crypto.html"><b>crypto &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gcrypt-crypto.html b/docs/api/xmlsec-gcrypt-crypto.html
index 3698d17a..767b82e1 100644
--- a/docs/api/xmlsec-gcrypt-crypto.html
+++ b/docs/api/xmlsec-gcrypt-crypto.html
@@ -1,1666 +1,1656 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>crypto</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for GCrypt API Reference." href="xmlsec-gcrypt-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-gcrypt-app.html">
-<link rel="NEXT" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-gcrypt-ref.html" title="XML Security Library for GCrypt API Reference.">
+<link rel="prev" href="xmlsec-gcrypt-app.html" title="app">
+<link rel="next" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gcrypt-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-gcrypt-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-gcrypt-crypto.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-gcrypt-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gcrypt-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-GCRYPT-CRYPTO"></a>crypto</h1>
-<div class="REFNAMEDIV">
-<a name="AEN36782"></a><h2>Name</h2>crypto -- Crypto transforms implementation for GCrypt.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-CRYPTO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN36787"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-gcrypt-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-gcrypt-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for GCrypt.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECCRYPTOGETFUNCTIONS-GCRYPT">xmlSecCryptoGetFunctions_gcrypt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecCryptoGetFunctions-gcrypt" title="xmlSecCryptoGetFunctions_gcrypt ()">xmlSecCryptoGetFunctions_gcrypt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTINIT">xmlSecGCryptInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptInit" title="xmlSecGCryptInit ()">xmlSecGCryptInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTSHUTDOWN">xmlSecGCryptShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptShutdown" title="xmlSecGCryptShutdown ()">xmlSecGCryptShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYSMNGRINIT">xmlSecGCryptKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeysMngrInit" title="xmlSecGCryptKeysMngrInit ()">xmlSecGCryptKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTGENERATERANDOM">xmlSecGCryptGenerateRandom</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptGenerateRandom" title="xmlSecGCryptGenerateRandom ()">xmlSecGCryptGenerateRandom</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESGETKLASS">xmlSecGCryptKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesGetKlass" title="xmlSecGCryptKeyDataAesGetKlass ()">xmlSecGCryptKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESSET">xmlSecGCryptKeyDataAesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesSet" title="xmlSecGCryptKeyDataAesSet ()">xmlSecGCryptKeyDataAesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES128CBCGETKLASS">xmlSecGCryptTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcGetKlass" title="xmlSecGCryptTransformAes128CbcGetKlass ()">xmlSecGCryptTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES192CBCGETKLASS">xmlSecGCryptTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcGetKlass" title="xmlSecGCryptTransformAes192CbcGetKlass ()">xmlSecGCryptTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES256CBCGETKLASS">xmlSecGCryptTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcGetKlass" title="xmlSecGCryptTransformAes256CbcGetKlass ()">xmlSecGCryptTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES128GETKLASS">xmlSecGCryptTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128GetKlass" title="xmlSecGCryptTransformKWAes128GetKlass ()">xmlSecGCryptTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES192GETKLASS">xmlSecGCryptTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192GetKlass" title="xmlSecGCryptTransformKWAes192GetKlass ()">xmlSecGCryptTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES256GETKLASS">xmlSecGCryptTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256GetKlass" title="xmlSecGCryptTransformKWAes256GetKlass ()">xmlSecGCryptTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESGETKLASS">xmlSecGCryptKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesGetKlass" title="xmlSecGCryptKeyDataDesGetKlass ()">xmlSecGCryptKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESSET">xmlSecGCryptKeyDataDesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesSet" title="xmlSecGCryptKeyDataDesSet ()">xmlSecGCryptKeyDataDesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDES3CBCGETKLASS">xmlSecGCryptTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcGetKlass" title="xmlSecGCryptTransformDes3CbcGetKlass ()">xmlSecGCryptTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWDES3GETKLASS">xmlSecGCryptTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3GetKlass" title="xmlSecGCryptTransformKWDes3GetKlass ()">xmlSecGCryptTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETKLASS">xmlSecGCryptKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetKlass" title="xmlSecGCryptKeyDataDsaGetKlass ()">xmlSecGCryptKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAADOPTKEY">xmlSecGCryptKeyDataDsaAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKey" title="xmlSecGCryptKeyDataDsaAdoptKey ()">xmlSecGCryptKeyDataDsaAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAADOPTKEYPAIR">xmlSecGCryptKeyDataDsaAdoptKeyPair</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKeyPair" title="xmlSecGCryptKeyDataDsaAdoptKeyPair ()">xmlSecGCryptKeyDataDsaAdoptKeyPair</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">gcry_sexp_t</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETPUBLICKEY">xmlSecGCryptKeyDataDsaGetPublicKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">gcry_sexp_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPublicKey" title="xmlSecGCryptKeyDataDsaGetPublicKey ()">xmlSecGCryptKeyDataDsaGetPublicKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">gcry_sexp_t</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETPRIVATEKEY">xmlSecGCryptKeyDataDsaGetPrivateKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">gcry_sexp_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPrivateKey" title="xmlSecGCryptKeyDataDsaGetPrivateKey ()">xmlSecGCryptKeyDataDsaGetPrivateKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDSASHA1GETKLASS">xmlSecGCryptTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1GetKlass" title="xmlSecGCryptTransformDsaSha1GetKlass ()">xmlSecGCryptTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTHMACGETMINOUTPUTLENGTH">xmlSecGCryptHmacGetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacGetMinOutputLength" title="xmlSecGCryptHmacGetMinOutputLength ()">xmlSecGCryptHmacGetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTHMACSETMINOUTPUTLENGTH">xmlSecGCryptHmacSetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacSetMinOutputLength" title="xmlSecGCryptHmacSetMinOutputLength ()">xmlSecGCryptHmacSetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACGETKLASS">xmlSecGCryptKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacGetKlass" title="xmlSecGCryptKeyDataHmacGetKlass ()">xmlSecGCryptKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACSET">xmlSecGCryptKeyDataHmacSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacSet" title="xmlSecGCryptKeyDataHmacSet ()">xmlSecGCryptKeyDataHmacSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACMD5GETKLASS">xmlSecGCryptTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5GetKlass" title="xmlSecGCryptTransformHmacMd5GetKlass ()">xmlSecGCryptTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACRIPEMD160GETKLASS">xmlSecGCryptTransformHmacRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160GetKlass" title="xmlSecGCryptTransformHmacRipemd160GetKlass ()">xmlSecGCryptTransformHmacRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA1GETKLASS">xmlSecGCryptTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1GetKlass" title="xmlSecGCryptTransformHmacSha1GetKlass ()">xmlSecGCryptTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA256GETKLASS">xmlSecGCryptTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256GetKlass" title="xmlSecGCryptTransformHmacSha256GetKlass ()">xmlSecGCryptTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA384GETKLASS">xmlSecGCryptTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384GetKlass" title="xmlSecGCryptTransformHmacSha384GetKlass ()">xmlSecGCryptTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA512GETKLASS">xmlSecGCryptTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512GetKlass" title="xmlSecGCryptTransformHmacSha512GetKlass ()">xmlSecGCryptTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETKLASS">xmlSecGCryptKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetKlass" title="xmlSecGCryptKeyDataRsaGetKlass ()">xmlSecGCryptKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAADOPTKEY">xmlSecGCryptKeyDataRsaAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKey" title="xmlSecGCryptKeyDataRsaAdoptKey ()">xmlSecGCryptKeyDataRsaAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAADOPTKEYPAIR">xmlSecGCryptKeyDataRsaAdoptKeyPair</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKeyPair" title="xmlSecGCryptKeyDataRsaAdoptKeyPair ()">xmlSecGCryptKeyDataRsaAdoptKeyPair</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">gcry_sexp_t</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETPUBLICKEY">xmlSecGCryptKeyDataRsaGetPublicKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">gcry_sexp_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPublicKey" title="xmlSecGCryptKeyDataRsaGetPublicKey ()">xmlSecGCryptKeyDataRsaGetPublicKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">gcry_sexp_t</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETPRIVATEKEY">xmlSecGCryptKeyDataRsaGetPrivateKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">gcry_sexp_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPrivateKey" title="xmlSecGCryptKeyDataRsaGetPrivateKey ()">xmlSecGCryptKeyDataRsaGetPrivateKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSAMD5GETKLASS">xmlSecGCryptTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5GetKlass" title="xmlSecGCryptTransformRsaMd5GetKlass ()">xmlSecGCryptTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSARIPEMD160GETKLASS">xmlSecGCryptTransformRsaRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160GetKlass" title="xmlSecGCryptTransformRsaRipemd160GetKlass ()">xmlSecGCryptTransformRsaRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA1GETKLASS">xmlSecGCryptTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1GetKlass" title="xmlSecGCryptTransformRsaSha1GetKlass ()">xmlSecGCryptTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA256GETKLASS">xmlSecGCryptTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256GetKlass" title="xmlSecGCryptTransformRsaSha256GetKlass ()">xmlSecGCryptTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA384GETKLASS">xmlSecGCryptTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384GetKlass" title="xmlSecGCryptTransformRsaSha384GetKlass ()">xmlSecGCryptTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA512GETKLASS">xmlSecGCryptTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512GetKlass" title="xmlSecGCryptTransformRsaSha512GetKlass ()">xmlSecGCryptTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA1GETKLASS">xmlSecGCryptTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1GetKlass" title="xmlSecGCryptTransformSha1GetKlass ()">xmlSecGCryptTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA256GETKLASS">xmlSecGCryptTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256GetKlass" title="xmlSecGCryptTransformSha256GetKlass ()">xmlSecGCryptTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA384GETKLASS">xmlSecGCryptTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384GetKlass" title="xmlSecGCryptTransformSha384GetKlass ()">xmlSecGCryptTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA512GETKLASS">xmlSecGCryptTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512GetKlass" title="xmlSecGCryptTransformSha512GetKlass ()">xmlSecGCryptTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMMD5GETKLASS">xmlSecGCryptTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5GetKlass" title="xmlSecGCryptTransformMd5GetKlass ()">xmlSecGCryptTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRIPEMD160GETKLASS">xmlSecGCryptTransformRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160GetKlass" title="xmlSecGCryptTransformRipemd160GetKlass ()">xmlSecGCryptTransformRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-CRYPTO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37142"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESID">xmlSecGCryptKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesId" title="xmlSecGCryptKeyDataAesId">xmlSecGCryptKeyDataAesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES128CBCID">xmlSecGCryptTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcId" title="xmlSecGCryptTransformAes128CbcId">xmlSecGCryptTransformAes128CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES192CBCID">xmlSecGCryptTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcId" title="xmlSecGCryptTransformAes192CbcId">xmlSecGCryptTransformAes192CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES256CBCID">xmlSecGCryptTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcId" title="xmlSecGCryptTransformAes256CbcId">xmlSecGCryptTransformAes256CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES128ID">xmlSecGCryptTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128Id" title="xmlSecGCryptTransformKWAes128Id">xmlSecGCryptTransformKWAes128Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES192ID">xmlSecGCryptTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192Id" title="xmlSecGCryptTransformKWAes192Id">xmlSecGCryptTransformKWAes192Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES256ID">xmlSecGCryptTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256Id" title="xmlSecGCryptTransformKWAes256Id">xmlSecGCryptTransformKWAes256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESID">xmlSecGCryptKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesId" title="xmlSecGCryptKeyDataDesId">xmlSecGCryptKeyDataDesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDES3CBCID">xmlSecGCryptTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcId" title="xmlSecGCryptTransformDes3CbcId">xmlSecGCryptTransformDes3CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWDES3ID">xmlSecGCryptTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3Id" title="xmlSecGCryptTransformKWDes3Id">xmlSecGCryptTransformKWDes3Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAID">xmlSecGCryptKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaId" title="xmlSecGCryptKeyDataDsaId">xmlSecGCryptKeyDataDsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDSASHA1ID">xmlSecGCryptTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1Id" title="xmlSecGCryptTransformDsaSha1Id">xmlSecGCryptTransformDsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACID">xmlSecGCryptKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacId" title="xmlSecGCryptKeyDataHmacId">xmlSecGCryptKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACMD5ID">xmlSecGCryptTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5Id" title="xmlSecGCryptTransformHmacMd5Id">xmlSecGCryptTransformHmacMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACRIPEMD160ID">xmlSecGCryptTransformHmacRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160Id" title="xmlSecGCryptTransformHmacRipemd160Id">xmlSecGCryptTransformHmacRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA1ID">xmlSecGCryptTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1Id" title="xmlSecGCryptTransformHmacSha1Id">xmlSecGCryptTransformHmacSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA256ID">xmlSecGCryptTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256Id" title="xmlSecGCryptTransformHmacSha256Id">xmlSecGCryptTransformHmacSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA384ID">xmlSecGCryptTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384Id" title="xmlSecGCryptTransformHmacSha384Id">xmlSecGCryptTransformHmacSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA512ID">xmlSecGCryptTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512Id" title="xmlSecGCryptTransformHmacSha512Id">xmlSecGCryptTransformHmacSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAID">xmlSecGCryptKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaId" title="xmlSecGCryptKeyDataRsaId">xmlSecGCryptKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSAMD5ID">xmlSecGCryptTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5Id" title="xmlSecGCryptTransformRsaMd5Id">xmlSecGCryptTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSARIPEMD160ID">xmlSecGCryptTransformRsaRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160Id" title="xmlSecGCryptTransformRsaRipemd160Id">xmlSecGCryptTransformRsaRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA1ID">xmlSecGCryptTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1Id" title="xmlSecGCryptTransformRsaSha1Id">xmlSecGCryptTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA256ID">xmlSecGCryptTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256Id" title="xmlSecGCryptTransformRsaSha256Id">xmlSecGCryptTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA384ID">xmlSecGCryptTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384Id" title="xmlSecGCryptTransformRsaSha384Id">xmlSecGCryptTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA512ID">xmlSecGCryptTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512Id" title="xmlSecGCryptTransformRsaSha512Id">xmlSecGCryptTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA1ID">xmlSecGCryptTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1Id" title="xmlSecGCryptTransformSha1Id">xmlSecGCryptTransformSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA256ID">xmlSecGCryptTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256Id" title="xmlSecGCryptTransformSha256Id">xmlSecGCryptTransformSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA384ID">xmlSecGCryptTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384Id" title="xmlSecGCryptTransformSha384Id">xmlSecGCryptTransformSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA512ID">xmlSecGCryptTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512Id" title="xmlSecGCryptTransformSha512Id">xmlSecGCryptTransformSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMMD5ID">xmlSecGCryptTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5Id" title="xmlSecGCryptTransformMd5Id">xmlSecGCryptTransformMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRIPEMD160ID">xmlSecGCryptTransformRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160Id" title="xmlSecGCryptTransformRipemd160Id">xmlSecGCryptTransformRipemd160Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-CRYPTO.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto transforms implementation for GCrypt.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-CRYPTO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOGETFUNCTIONS-GCRYPT"></a><h3>xmlSecCryptoGetFunctions_gcrypt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoGetFunctions_gcrypt (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-gcrypt"></a><h3>xmlSecCryptoGetFunctions_gcrypt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_gcrypt (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the pointer to xmlsec-gcrypt functions table.</p>
-<div class="REFSECT3">
-<a name="AEN37288"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-gcrypt.returns"></a><h4>Returns</h4>
<p> the xmlsec-gcrypt functions table or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTINIT"></a><h3>xmlSecGCryptInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptInit"></a><h3>xmlSecGCryptInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN37301"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTSHUTDOWN"></a><h3>xmlSecGCryptShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptShutdown"></a><h3>xmlSecGCryptShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN37314"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYSMNGRINIT"></a><h3>xmlSecGCryptKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeysMngrInit"></a><h3>xmlSecGCryptKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds GCrypt specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN37328"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37330"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN37339"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTGENERATERANDOM"></a><h3>xmlSecGCryptGenerateRandom ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptGenerateRandom (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Generates <code class="PARAMETER">size</code>
- random bytes and puts result in <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecGCryptGenerateRandom"></a><h3>xmlSecGCryptGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN37358"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37360"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the destination buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the numer of bytes to generate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN37375"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptGenerateRandom.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAAESGETKLASS"></a><h3>xmlSecGCryptKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGCryptKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataAesGetKlass"></a><h3>xmlSecGCryptKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGCryptKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN37388"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAAESSET"></a><h3>xmlSecGCryptKeyDataAesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataAesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataAesSet"></a><h3>xmlSecGCryptKeyDataAesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataAesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of AES key data.</p>
-<div class="REFSECT3">
-<a name="AEN37408"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37410"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataAesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to AES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to AES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37431"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataAesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecGCryptTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes128CbcGetKlass"></a><h3>xmlSecGCryptTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformAes128CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37444"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecGCryptTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes192CbcGetKlass"></a><h3>xmlSecGCryptTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformAes192CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37457"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecGCryptTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes256CbcGetKlass"></a><h3>xmlSecGCryptTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformAes256CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37470"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecGCryptTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformKWAes128GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes128GetKlass"></a><h3>xmlSecGCryptTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformKWAes128GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37483"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecGCryptTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformKWAes192GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes192GetKlass"></a><h3>xmlSecGCryptTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformKWAes192GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37496"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecGCryptTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformKWAes256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes256GetKlass"></a><h3>xmlSecGCryptTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformKWAes256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37509"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADESGETKLASS"></a><h3>xmlSecGCryptKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGCryptKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDesGetKlass"></a><h3>xmlSecGCryptKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGCryptKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN37522"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADESSET"></a><h3>xmlSecGCryptKeyDataDesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataDesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDesSet"></a><h3>xmlSecGCryptKeyDataDesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataDesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of DES key data.</p>
-<div class="REFSECT3">
-<a name="AEN37542"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37544"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37565"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecGCryptTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformDes3CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformDes3CbcGetKlass"></a><h3>xmlSecGCryptTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37578"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecGCryptTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWDes3GetKlass"></a><h3>xmlSecGCryptTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37591"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAGETKLASS"></a><h3>xmlSecGCryptKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGCryptKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaGetKlass"></a><h3>xmlSecGCryptKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGCryptKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN37604"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to DSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAADOPTKEY"></a><h3>xmlSecGCryptKeyDataDsaAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataDsaAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> dsa_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaAdoptKey"></a><h3>xmlSecGCryptKeyDataDsaAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataDsaAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> dsa_key</code></em>);</pre>
<p>Sets the value of DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37621"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37623"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dsa_key</p></td>
-<td><p>the pointer to GCrypt DSA key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsa_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt DSA key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37638"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAADOPTKEYPAIR"></a><h3>xmlSecGCryptKeyDataDsaAdoptKeyPair ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataDsaAdoptKeyPair (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> pub_key</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> priv_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaAdoptKeyPair"></a><h3>xmlSecGCryptKeyDataDsaAdoptKeyPair ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataDsaAdoptKeyPair (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> pub_key</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> priv_key</code></em>);</pre>
<p>Sets the value of DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37658"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37660"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaAdoptKeyPair.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pub_key</p></td>
-<td><p>the pointer to GCrypt DSA pub key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pub_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt DSA pub key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>priv_key</p></td>
-<td><p>the pointer to GCrypt DSA priv key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>priv_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt DSA priv key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37681"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaAdoptKeyPair.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAGETPUBLICKEY"></a><h3>xmlSecGCryptKeyDataDsaGetPublicKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">gcry_sexp_t</span></font>
-xmlSecGCryptKeyDataDsaGetPublicKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaGetPublicKey"></a><h3>xmlSecGCryptKeyDataDsaGetPublicKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gcry_sexp_t</span></font>
+xmlSecGCryptKeyDataDsaGetPublicKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the GCrypt DSA public key from DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37695"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37697"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaGetPublicKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN37706"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaGetPublicKey.returns"></a><h4>Returns</h4>
<p> pointer to GCrypt public DSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAGETPRIVATEKEY"></a><h3>xmlSecGCryptKeyDataDsaGetPrivateKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">gcry_sexp_t</span></font>
-xmlSecGCryptKeyDataDsaGetPrivateKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaGetPrivateKey"></a><h3>xmlSecGCryptKeyDataDsaGetPrivateKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gcry_sexp_t</span></font>
+xmlSecGCryptKeyDataDsaGetPrivateKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the GCrypt DSA private key from DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37720"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37722"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaGetPrivateKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37731"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataDsaGetPrivateKey.returns"></a><h4>Returns</h4>
<p> pointer to GCrypt private DSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecGCryptTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformDsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformDsaSha1GetKlass"></a><h3>xmlSecGCryptTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37744"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTHMACGETMINOUTPUTLENGTH"></a><h3>xmlSecGCryptHmacGetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptHmacGetMinOutputLength (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptHmacGetMinOutputLength"></a><h3>xmlSecGCryptHmacGetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptHmacGetMinOutputLength (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the value of min HMAC length.</p>
-<div class="REFSECT3">
-<a name="AEN37757"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptHmacGetMinOutputLength.returns"></a><h4>Returns</h4>
<p> the min HMAC output length</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTHMACSETMINOUTPUTLENGTH"></a><h3>xmlSecGCryptHmacSetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecGCryptHmacSetMinOutputLength (<code class="PARAMETER"><font><span class="TYPE">int</span></font> min_length</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptHmacSetMinOutputLength"></a><h3>xmlSecGCryptHmacSetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecGCryptHmacSetMinOutputLength (<em class="parameter"><code><font><span class="type">int</span></font> min_length</code></em>);</pre>
<p>Sets the min HMAC output length</p>
-<div class="REFSECT3">
-<a name="AEN37771"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37773"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptHmacSetMinOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>min_length</p></td>
-<td><p>the new min length</p></td>
-<td> </td>
+<td class="parameter_name"><p>min_length</p></td>
+<td class="parameter_description"><p>the new min length</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAHMACGETKLASS"></a><h3>xmlSecGCryptKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGCryptKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataHmacGetKlass"></a><h3>xmlSecGCryptKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGCryptKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN37792"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAHMACSET"></a><h3>xmlSecGCryptKeyDataHmacSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataHmacSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataHmacSet"></a><h3>xmlSecGCryptKeyDataHmacSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataHmacSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of HMAC key data.</p>
-<div class="REFSECT3">
-<a name="AEN37812"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37814"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataHmacSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to HMAC key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to HMAC key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37835"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataHmacSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecGCryptTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformHmacMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacMd5GetKlass"></a><h3>xmlSecGCryptTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37848"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACRIPEMD160GETKLASS"></a><h3>xmlSecGCryptTransformHmacRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacRipemd160GetKlass"></a><h3>xmlSecGCryptTransformHmacRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformHmacRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-RIPEMD160 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37861"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-RIPEMD160 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecGCryptTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformHmacSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha1GetKlass"></a><h3>xmlSecGCryptTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformHmacSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37874"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecGCryptTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha256GetKlass"></a><h3>xmlSecGCryptTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformHmacSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37887"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecGCryptTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha384GetKlass"></a><h3>xmlSecGCryptTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformHmacSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37900"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecGCryptTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha512GetKlass"></a><h3>xmlSecGCryptTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformHmacSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN37913"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAGETKLASS"></a><h3>xmlSecGCryptKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGCryptKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaGetKlass"></a><h3>xmlSecGCryptKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGCryptKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GCrypt RSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN37926"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GCrypt RSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAADOPTKEY"></a><h3>xmlSecGCryptKeyDataRsaAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataRsaAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> rsa_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaAdoptKey"></a><h3>xmlSecGCryptKeyDataRsaAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataRsaAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> rsa_key</code></em>);</pre>
<p>Sets the value of RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37943"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37945"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>rsa_key</p></td>
-<td><p>the pointer to GCrypt RSA key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>rsa_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt RSA key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN37960"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAADOPTKEYPAIR"></a><h3>xmlSecGCryptKeyDataRsaAdoptKeyPair ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGCryptKeyDataRsaAdoptKeyPair (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> pub_key</code>,
- <code class="PARAMETER"><font><span class="TYPE">gcry_sexp_t</span></font> priv_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaAdoptKeyPair"></a><h3>xmlSecGCryptKeyDataRsaAdoptKeyPair ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGCryptKeyDataRsaAdoptKeyPair (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> pub_key</code></em>,
+ <em class="parameter"><code><font><span class="type">gcry_sexp_t</span></font> priv_key</code></em>);</pre>
<p>Sets the value of RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN37980"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN37982"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaAdoptKeyPair.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pub_key</p></td>
-<td><p>the pointer to GCrypt RSA pub key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pub_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt RSA pub key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>priv_key</p></td>
-<td><p>the pointer to GCrypt RSA priv key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>priv_key</p></td>
+<td class="parameter_description"><p>the pointer to GCrypt RSA priv key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38003"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaAdoptKeyPair.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAGETPUBLICKEY"></a><h3>xmlSecGCryptKeyDataRsaGetPublicKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">gcry_sexp_t</span></font>
-xmlSecGCryptKeyDataRsaGetPublicKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaGetPublicKey"></a><h3>xmlSecGCryptKeyDataRsaGetPublicKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gcry_sexp_t</span></font>
+xmlSecGCryptKeyDataRsaGetPublicKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the GCrypt RSA public key from RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN38017"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38019"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaGetPublicKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38028"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaGetPublicKey.returns"></a><h4>Returns</h4>
<p> pointer to GCrypt public RSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAGETPRIVATEKEY"></a><h3>xmlSecGCryptKeyDataRsaGetPrivateKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">gcry_sexp_t</span></font>
-xmlSecGCryptKeyDataRsaGetPrivateKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaGetPrivateKey"></a><h3>xmlSecGCryptKeyDataRsaGetPrivateKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gcry_sexp_t</span></font>
+xmlSecGCryptKeyDataRsaGetPrivateKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the GCrypt RSA private key from RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN38042"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38044"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaGetPrivateKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38053"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptKeyDataRsaGetPrivateKey.returns"></a><h4>Returns</h4>
<p> pointer to GCrypt private RSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecGCryptTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaMd5GetKlass"></a><h3>xmlSecGCryptTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38066"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSARIPEMD160GETKLASS"></a><h3>xmlSecGCryptTransformRsaRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaRipemd160GetKlass"></a><h3>xmlSecGCryptTransformRsaRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformRsaRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38079"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-RIPEMD160 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecGCryptTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformRsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha1GetKlass"></a><h3>xmlSecGCryptTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38092"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecGCryptTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha256GetKlass"></a><h3>xmlSecGCryptTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformRsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38105"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecGCryptTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha384GetKlass"></a><h3>xmlSecGCryptTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformRsaSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38118"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecGCryptTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha512GetKlass"></a><h3>xmlSecGCryptTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformRsaSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38131"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA1GETKLASS"></a><h3>xmlSecGCryptTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha1GetKlass"></a><h3>xmlSecGCryptTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38144"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA256GETKLASS"></a><h3>xmlSecGCryptTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha256GetKlass"></a><h3>xmlSecGCryptTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38157"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA256 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA384GETKLASS"></a><h3>xmlSecGCryptTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha384GetKlass"></a><h3>xmlSecGCryptTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38170"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA384 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA512GETKLASS"></a><h3>xmlSecGCryptTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha512GetKlass"></a><h3>xmlSecGCryptTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38183"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA512 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMMD5GETKLASS"></a><h3>xmlSecGCryptTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGCryptTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformMd5GetKlass"></a><h3>xmlSecGCryptTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGCryptTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>MD5 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38196"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MD5 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRIPEMD160GETKLASS"></a><h3>xmlSecGCryptTransformRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRipemd160GetKlass"></a><h3>xmlSecGCryptTransformRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGCryptTransformRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>RIPEMD160 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN38209"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGCryptTransformRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to RIPEMD160 digest transform klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GCRYPT-CRYPTO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAAESID"></a><h3>xmlSecGCryptKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptKeyDataAesId</pre>
+<div class="refsect1">
+<a name="xmlsec-gcrypt-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataAesId"></a><h3>xmlSecGCryptKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecGCryptKeyDataAesId</pre>
<p>The AES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES128CBCID"></a><h3>xmlSecGCryptTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformAes128CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes128CbcId"></a><h3>xmlSecGCryptTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformAes128CbcId</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES192CBCID"></a><h3>xmlSecGCryptTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformAes192CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes192CbcId"></a><h3>xmlSecGCryptTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformAes192CbcId</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMAES256CBCID"></a><h3>xmlSecGCryptTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformAes256CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformAes256CbcId"></a><h3>xmlSecGCryptTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformAes256CbcId</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES128ID"></a><h3>xmlSecGCryptTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformKWAes128Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes128Id"></a><h3>xmlSecGCryptTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformKWAes128Id</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES192ID"></a><h3>xmlSecGCryptTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformKWAes192Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes192Id"></a><h3>xmlSecGCryptTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformKWAes192Id</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWAES256ID"></a><h3>xmlSecGCryptTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformKWAes256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWAes256Id"></a><h3>xmlSecGCryptTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformKWAes256Id</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADESID"></a><h3>xmlSecGCryptKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptKeyDataDesId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDesId"></a><h3>xmlSecGCryptKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecGCryptKeyDataDesId</pre>
<p>The DES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMDES3CBCID"></a><h3>xmlSecGCryptTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformDes3CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformDes3CbcId"></a><h3>xmlSecGCryptTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformDes3CbcId</pre>
<p>The DES3 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMKWDES3ID"></a><h3>xmlSecGCryptTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformKWDes3Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformKWDes3Id"></a><h3>xmlSecGCryptTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformKWDes3Id</pre>
<p>The DES3 KW transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATADSAID"></a><h3>xmlSecGCryptKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptKeyDataDsaId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataDsaId"></a><h3>xmlSecGCryptKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecGCryptKeyDataDsaId</pre>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMDSASHA1ID"></a><h3>xmlSecGCryptTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformDsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformDsaSha1Id"></a><h3>xmlSecGCryptTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformDsaSha1Id</pre>
<p>The DSA SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATAHMACID"></a><h3>xmlSecGCryptKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptKeyDataHmacId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataHmacId"></a><h3>xmlSecGCryptKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecGCryptKeyDataHmacId</pre>
<p>The HMAC key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACMD5ID"></a><h3>xmlSecGCryptTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacMd5Id"></a><h3>xmlSecGCryptTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacMd5Id</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACRIPEMD160ID"></a><h3>xmlSecGCryptTransformHmacRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacRipemd160Id"></a><h3>xmlSecGCryptTransformHmacRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacRipemd160Id</pre>
<p>The HMAC with RipeMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA1ID"></a><h3>xmlSecGCryptTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha1Id"></a><h3>xmlSecGCryptTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA256ID"></a><h3>xmlSecGCryptTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha256Id"></a><h3>xmlSecGCryptTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA384ID"></a><h3>xmlSecGCryptTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha384Id"></a><h3>xmlSecGCryptTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMHMACSHA512ID"></a><h3>xmlSecGCryptTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformHmacSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformHmacSha512Id"></a><h3>xmlSecGCryptTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformHmacSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTKEYDATARSAID"></a><h3>xmlSecGCryptKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptKeyDataRsaId</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptKeyDataRsaId"></a><h3>xmlSecGCryptKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecGCryptKeyDataRsaId</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSAMD5ID"></a><h3>xmlSecGCryptTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaMd5Id"></a><h3>xmlSecGCryptTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaMd5Id</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSARIPEMD160ID"></a><h3>xmlSecGCryptTransformRsaRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaRipemd160Id"></a><h3>xmlSecGCryptTransformRsaRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaRipemd160Id</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA1ID"></a><h3>xmlSecGCryptTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha1Id"></a><h3>xmlSecGCryptTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaSha1Id</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA256ID"></a><h3>xmlSecGCryptTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha256Id"></a><h3>xmlSecGCryptTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaSha256Id</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA384ID"></a><h3>xmlSecGCryptTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha384Id"></a><h3>xmlSecGCryptTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaSha384Id</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRSASHA512ID"></a><h3>xmlSecGCryptTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRsaSha512Id"></a><h3>xmlSecGCryptTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRsaSha512Id</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA1ID"></a><h3>xmlSecGCryptTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha1Id"></a><h3>xmlSecGCryptTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA256ID"></a><h3>xmlSecGCryptTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha256Id"></a><h3>xmlSecGCryptTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA384ID"></a><h3>xmlSecGCryptTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha384Id"></a><h3>xmlSecGCryptTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMSHA512ID"></a><h3>xmlSecGCryptTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformSha512Id"></a><h3>xmlSecGCryptTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMMD5ID"></a><h3>xmlSecGCryptTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformMd5Id"></a><h3>xmlSecGCryptTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformMd5Id</pre>
<p>The MD5 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGCRYPTTRANSFORMRIPEMD160ID"></a><h3>xmlSecGCryptTransformRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGCryptTransformRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGCryptTransformRipemd160Id"></a><h3>xmlSecGCryptTransformRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGCryptTransformRipemd160Id</pre>
<p>The RIPEMD160 digest transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gcrypt-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-ref.html"><b>XML Security Library for NSS API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gcrypt-ref.html b/docs/api/xmlsec-gcrypt-ref.html
index 4f0a1224..09ffccc8 100644
--- a/docs/api/xmlsec-gcrypt-ref.html
+++ b/docs/api/xmlsec-gcrypt-ref.html
@@ -1,130 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library for GCrypt API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="crypto" href="xmlsec-gnutls-crypto.html">
-<link rel="NEXT" title="app" href="xmlsec-gcrypt-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for GCrypt API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-gnutls-x509.html" title="x509">
+<link rel="next" href="xmlsec-gcrypt-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gnutls-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gnutls-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-gcrypt-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-GCRYPT-REF"></a>XML Security Library for GCrypt API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-gcrypt-ref"></a>XML Security Library for GCrypt API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
<dt>
-<a href="xmlsec-gcrypt-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-app.html">app</a></span><span class="refpurpose"> — Application support functions for GCrypt.</span>
+</dt>
<dt>
-<a href="xmlsec-gcrypt-crypto.html">crypto</a> -- Crypto transforms implementation for GCrypt.</dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GCrypt.</span>
+</dt>
</dl></div>
<p>This section contains the API reference for xmlsec-gcrypt. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gnutls-crypto.html"><b>&lt;&lt;&lt; crypto</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gcrypt-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gnutls-app.html b/docs/api/xmlsec-gnutls-app.html
index 33d5cce1..0bec07ab 100644
--- a/docs/api/xmlsec-gnutls-app.html
+++ b/docs/api/xmlsec-gnutls-app.html
@@ -1,862 +1,785 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for GnuTLS API Reference." href="xmlsec-gnutls-ref.html">
-<link rel="PREVIOUS" title="XML Security Library for GnuTLS API Reference." href="xmlsec-gnutls-ref.html">
-<link rel="NEXT" title="crypto" href="xmlsec-gnutls-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-gnutls-ref.html" title="XML Security Library for GnuTLS API Reference.">
+<link rel="prev" href="xmlsec-gnutls-ref.html" title="XML Security Library for GnuTLS API Reference.">
+<link rel="next" href="xmlsec-gnutls-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gnutls-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-gnutls-app.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gnutls-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-gnutls-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-GNUTLS-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN33690"></a><h2>Name</h2>app -- Application functions implementation for GnuTLS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33695"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-gnutls-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-gnutls-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for GnuTLS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPINIT">xmlSecGnuTLSAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppInit" title="xmlSecGnuTLSAppInit ()">xmlSecGnuTLSAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPSHUTDOWN">xmlSecGnuTLSAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppShutdown" title="xmlSecGnuTLSAppShutdown ()">xmlSecGnuTLSAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRINIT">xmlSecGnuTLSAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrInit" title="xmlSecGnuTLSAppDefaultKeysMngrInit ()">xmlSecGnuTLSAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecGnuTLSAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrAdoptKey" title="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ()">xmlSecGnuTLSAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRLOAD">xmlSecGnuTLSAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrLoad" title="xmlSecGnuTLSAppDefaultKeysMngrLoad ()">xmlSecGnuTLSAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRSAVE">xmlSecGnuTLSAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrSave" title="xmlSecGnuTLSAppDefaultKeysMngrSave ()">xmlSecGnuTLSAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYSMNGRCERTLOAD">xmlSecGnuTLSAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoad" title="xmlSecGnuTLSAppKeysMngrCertLoad ()">xmlSecGnuTLSAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYSMNGRCERTLOADMEMORY">xmlSecGnuTLSAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoadMemory" title="xmlSecGnuTLSAppKeysMngrCertLoadMemory ()">xmlSecGnuTLSAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYLOAD">xmlSecGnuTLSAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoad" title="xmlSecGnuTLSAppKeyLoad ()">xmlSecGnuTLSAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYLOADMEMORY">xmlSecGnuTLSAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoadMemory" title="xmlSecGnuTLSAppKeyLoadMemory ()">xmlSecGnuTLSAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPPKCS12LOAD">xmlSecGnuTLSAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12Load" title="xmlSecGnuTLSAppPkcs12Load ()">xmlSecGnuTLSAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPPKCS12LOADMEMORY">xmlSecGnuTLSAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12LoadMemory" title="xmlSecGnuTLSAppPkcs12LoadMemory ()">xmlSecGnuTLSAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYCERTLOAD">xmlSecGnuTLSAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoad" title="xmlSecGnuTLSAppKeyCertLoad ()">xmlSecGnuTLSAppKeyCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYCERTLOADMEMORY">xmlSecGnuTLSAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoadMemory" title="xmlSecGnuTLSAppKeyCertLoadMemory ()">xmlSecGnuTLSAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPGETDEFAULTPWDCALLBACK">xmlSecGnuTLSAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppGetDefaultPwdCallback" title="xmlSecGnuTLSAppGetDefaultPwdCallback ()">xmlSecGnuTLSAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Application functions implementation for GnuTLS.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPINIT"></a><h3>xmlSecGnuTLSAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-gnutls-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppInit"></a><h3>xmlSecGnuTLSAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN33820"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33822"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the path to GnuTLS configuration (unused).</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to GnuTLS configuration (unused).</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33831"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPSHUTDOWN"></a><h3>xmlSecGnuTLSAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppShutdown"></a><h3>xmlSecGnuTLSAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN33845"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with simple keys store <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID"><span class="TYPE">xmlSecSimpleKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrInit"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
and a default GnuTLS crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN33862"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33864"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33873"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecGnuTLSAppDefaultKeysMngrAdoptKey
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecGnuTLSAppDefaultKeysMngrInit</span></a>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrInit" title="xmlSecGnuTLSAppDefaultKeysMngrInit ()"><span class="type">xmlSecGnuTLSAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN33894"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33896"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33911"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrLoad"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecGnuTLSAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN33932"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33934"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrInit" title="xmlSecGnuTLSAppDefaultKeysMngrInit ()"><span class="type">xmlSecGnuTLSAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33949"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrSave"></a><h3>xmlSecGnuTLSAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN33970"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33972"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33993"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecGnuTLSAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoad"></a><h3>xmlSecGnuTLSAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN34018"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34020"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN34048"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecGnuTLSAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppKeysMngrCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from binary buffer <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoadMemory"></a><h3>xmlSecGnuTLSAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppKeysMngrCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from binary buffer <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN34076"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34078"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate trusted or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN34111"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYLOAD"></a><h3>xmlSecGnuTLSAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGnuTLSAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeyLoad"></a><h3>xmlSecGnuTLSAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGnuTLSAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN34137"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34139"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN34172"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYLOADMEMORY"></a><h3>xmlSecGnuTLSAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGnuTLSAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeyLoadMemory"></a><h3>xmlSecGnuTLSAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGnuTLSAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the memory buffer.</p>
-<div class="REFSECT3">
-<a name="AEN34201"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34203"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of binary key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of binary key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN34242"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPPKCS12LOAD"></a><h3>xmlSecGnuTLSAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGnuTLSAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppPkcs12Load"></a><h3>xmlSecGnuTLSAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGnuTLSAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file.
For uniformity, call xmlSecGnuTLSAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN34265"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34267"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN34294"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPPKCS12LOADMEMORY"></a><h3>xmlSecGnuTLSAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecGnuTLSAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppPkcs12LoadMemory"></a><h3>xmlSecGnuTLSAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecGnuTLSAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 data in memory buffer.
For uniformity, call xmlSecGnuTLSAppKeyLoadMemory instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN34320"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34322"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the PKCS12 binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the PKCS12 binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN34355"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYCERTLOAD"></a><h3>xmlSecGnuTLSAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeyCertLoad"></a><h3>xmlSecGnuTLSAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN34376"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34378"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN34399"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPKEYCERTLOADMEMORY"></a><h3>xmlSecGnuTLSAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppKeyCertLoadMemory"></a><h3>xmlSecGnuTLSAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Reads the certificate from memory buffer and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN34422"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34424"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN34451"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecGnuTLSAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
-xmlSecGnuTLSAppGetDefaultPwdCallback (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSAppGetDefaultPwdCallback"></a><h3>xmlSecGnuTLSAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecGnuTLSAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN34464"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-gnutls-app.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gnutls-ref.html"><b>&lt;&lt;&lt; XML Security Library for GnuTLS API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gnutls-crypto.html"><b>crypto &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gnutls-crypto.html b/docs/api/xmlsec-gnutls-crypto.html
index 495df21d..18c59257 100644
--- a/docs/api/xmlsec-gnutls-crypto.html
+++ b/docs/api/xmlsec-gnutls-crypto.html
@@ -1,1542 +1,1532 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>crypto</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for GnuTLS API Reference." href="xmlsec-gnutls-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-gnutls-app.html">
-<link rel="NEXT" title="XML Security Library for GCrypt API Reference." href="xmlsec-gcrypt-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-gnutls-ref.html" title="XML Security Library for GnuTLS API Reference.">
+<link rel="prev" href="xmlsec-gnutls-app.html" title="app">
+<link rel="next" href="xmlsec-gnutls-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gnutls-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-gnutls-crypto.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
-<td><a accesskey="n" href="xmlsec-gcrypt-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gnutls-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-gnutls-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-GNUTLS-CRYPTO"></a>crypto</h1>
-<div class="REFNAMEDIV">
-<a name="AEN34475"></a><h2>Name</h2>crypto -- Crypto transforms implementation for GnuTLS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-CRYPTO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34480"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-gnutls-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-gnutls-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for GnuTLS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECCRYPTOGETFUNCTIONS-GNUTLS">xmlSecCryptoGetFunctions_gnutls</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecCryptoGetFunctions-gnutls" title="xmlSecCryptoGetFunctions_gnutls ()">xmlSecCryptoGetFunctions_gnutls</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSINIT">xmlSecGnuTLSInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSInit" title="xmlSecGnuTLSInit ()">xmlSecGnuTLSInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSSHUTDOWN">xmlSecGnuTLSShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSShutdown" title="xmlSecGnuTLSShutdown ()">xmlSecGnuTLSShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYSMNGRINIT">xmlSecGnuTLSKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeysMngrInit" title="xmlSecGnuTLSKeysMngrInit ()">xmlSecGnuTLSKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSGENERATERANDOM">xmlSecGnuTLSGenerateRandom</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSGenerateRandom" title="xmlSecGnuTLSGenerateRandom ()">xmlSecGnuTLSGenerateRandom</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESGETKLASS">xmlSecGnuTLSKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesGetKlass" title="xmlSecGnuTLSKeyDataAesGetKlass ()">xmlSecGnuTLSKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESSET">xmlSecGnuTLSKeyDataAesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesSet" title="xmlSecGnuTLSKeyDataAesSet ()">xmlSecGnuTLSKeyDataAesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES128CBCGETKLASS">xmlSecGnuTLSTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcGetKlass" title="xmlSecGnuTLSTransformAes128CbcGetKlass ()">xmlSecGnuTLSTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES192CBCGETKLASS">xmlSecGnuTLSTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcGetKlass" title="xmlSecGnuTLSTransformAes192CbcGetKlass ()">xmlSecGnuTLSTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES256CBCGETKLASS">xmlSecGnuTLSTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcGetKlass" title="xmlSecGnuTLSTransformAes256CbcGetKlass ()">xmlSecGnuTLSTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES128GETKLASS">xmlSecGnuTLSTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128GetKlass" title="xmlSecGnuTLSTransformKWAes128GetKlass ()">xmlSecGnuTLSTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES192GETKLASS">xmlSecGnuTLSTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192GetKlass" title="xmlSecGnuTLSTransformKWAes192GetKlass ()">xmlSecGnuTLSTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES256GETKLASS">xmlSecGnuTLSTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256GetKlass" title="xmlSecGnuTLSTransformKWAes256GetKlass ()">xmlSecGnuTLSTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESGETKLASS">xmlSecGnuTLSKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesGetKlass" title="xmlSecGnuTLSKeyDataDesGetKlass ()">xmlSecGnuTLSKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESSET">xmlSecGnuTLSKeyDataDesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesSet" title="xmlSecGnuTLSKeyDataDesSet ()">xmlSecGnuTLSKeyDataDesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDES3CBCGETKLASS">xmlSecGnuTLSTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcGetKlass" title="xmlSecGnuTLSTransformDes3CbcGetKlass ()">xmlSecGnuTLSTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWDES3GETKLASS">xmlSecGnuTLSTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3GetKlass" title="xmlSecGnuTLSTransformKWDes3GetKlass ()">xmlSecGnuTLSTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAGETKLASS">xmlSecGnuTLSKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaGetKlass" title="xmlSecGnuTLSKeyDataDsaGetKlass ()">xmlSecGnuTLSKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAADOPTPRIVATEKEY">xmlSecGnuTLSKeyDataDsaAdoptPrivateKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPrivateKey" title="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ()">xmlSecGnuTLSKeyDataDsaAdoptPrivateKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAADOPTPUBLICKEY">xmlSecGnuTLSKeyDataDsaAdoptPublicKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPublicKey" title="xmlSecGnuTLSKeyDataDsaAdoptPublicKey ()">xmlSecGnuTLSKeyDataDsaAdoptPublicKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDSASHA1GETKLASS">xmlSecGnuTLSTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1GetKlass" title="xmlSecGnuTLSTransformDsaSha1GetKlass ()">xmlSecGnuTLSTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSHMACGETMINOUTPUTLENGTH">xmlSecGnuTLSHmacGetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacGetMinOutputLength" title="xmlSecGnuTLSHmacGetMinOutputLength ()">xmlSecGnuTLSHmacGetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSHMACSETMINOUTPUTLENGTH">xmlSecGnuTLSHmacSetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacSetMinOutputLength" title="xmlSecGnuTLSHmacSetMinOutputLength ()">xmlSecGnuTLSHmacSetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACGETKLASS">xmlSecGnuTLSKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacGetKlass" title="xmlSecGnuTLSKeyDataHmacGetKlass ()">xmlSecGnuTLSKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACSET">xmlSecGnuTLSKeyDataHmacSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacSet" title="xmlSecGnuTLSKeyDataHmacSet ()">xmlSecGnuTLSKeyDataHmacSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACMD5GETKLASS">xmlSecGnuTLSTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5GetKlass" title="xmlSecGnuTLSTransformHmacMd5GetKlass ()">xmlSecGnuTLSTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACRIPEMD160GETKLASS">xmlSecGnuTLSTransformHmacRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160GetKlass" title="xmlSecGnuTLSTransformHmacRipemd160GetKlass ()">xmlSecGnuTLSTransformHmacRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA1GETKLASS">xmlSecGnuTLSTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1GetKlass" title="xmlSecGnuTLSTransformHmacSha1GetKlass ()">xmlSecGnuTLSTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA256GETKLASS">xmlSecGnuTLSTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256GetKlass" title="xmlSecGnuTLSTransformHmacSha256GetKlass ()">xmlSecGnuTLSTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA384GETKLASS">xmlSecGnuTLSTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384GetKlass" title="xmlSecGnuTLSTransformHmacSha384GetKlass ()">xmlSecGnuTLSTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA512GETKLASS">xmlSecGnuTLSTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512GetKlass" title="xmlSecGnuTLSTransformHmacSha512GetKlass ()">xmlSecGnuTLSTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAGETKLASS">xmlSecGnuTLSKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaGetKlass" title="xmlSecGnuTLSKeyDataRsaGetKlass ()">xmlSecGnuTLSKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAADOPTPRIVATEKEY">xmlSecGnuTLSKeyDataRsaAdoptPrivateKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPrivateKey" title="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ()">xmlSecGnuTLSKeyDataRsaAdoptPrivateKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAADOPTPUBLICKEY">xmlSecGnuTLSKeyDataRsaAdoptPublicKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPublicKey" title="xmlSecGnuTLSKeyDataRsaAdoptPublicKey ()">xmlSecGnuTLSKeyDataRsaAdoptPublicKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSAMD5GETKLASS">xmlSecGnuTLSTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5GetKlass" title="xmlSecGnuTLSTransformRsaMd5GetKlass ()">xmlSecGnuTLSTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSARIPEMD160GETKLASS">xmlSecGnuTLSTransformRsaRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160GetKlass" title="xmlSecGnuTLSTransformRsaRipemd160GetKlass ()">xmlSecGnuTLSTransformRsaRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA1GETKLASS">xmlSecGnuTLSTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1GetKlass" title="xmlSecGnuTLSTransformRsaSha1GetKlass ()">xmlSecGnuTLSTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA256GETKLASS">xmlSecGnuTLSTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256GetKlass" title="xmlSecGnuTLSTransformRsaSha256GetKlass ()">xmlSecGnuTLSTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA384GETKLASS">xmlSecGnuTLSTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384GetKlass" title="xmlSecGnuTLSTransformRsaSha384GetKlass ()">xmlSecGnuTLSTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA512GETKLASS">xmlSecGnuTLSTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512GetKlass" title="xmlSecGnuTLSTransformRsaSha512GetKlass ()">xmlSecGnuTLSTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA1GETKLASS">xmlSecGnuTLSTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1GetKlass" title="xmlSecGnuTLSTransformSha1GetKlass ()">xmlSecGnuTLSTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA256GETKLASS">xmlSecGnuTLSTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256GetKlass" title="xmlSecGnuTLSTransformSha256GetKlass ()">xmlSecGnuTLSTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA384GETKLASS">xmlSecGnuTLSTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384GetKlass" title="xmlSecGnuTLSTransformSha384GetKlass ()">xmlSecGnuTLSTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA512GETKLASS">xmlSecGnuTLSTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512GetKlass" title="xmlSecGnuTLSTransformSha512GetKlass ()">xmlSecGnuTLSTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMMD5GETKLASS">xmlSecGnuTLSTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5GetKlass" title="xmlSecGnuTLSTransformMd5GetKlass ()">xmlSecGnuTLSTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRIPEMD160GETKLASS">xmlSecGnuTLSTransformRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160GetKlass" title="xmlSecGnuTLSTransformRipemd160GetKlass ()">xmlSecGnuTLSTransformRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-CRYPTO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34807"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESID">xmlSecGnuTLSKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesId" title="xmlSecGnuTLSKeyDataAesId">xmlSecGnuTLSKeyDataAesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES128CBCID">xmlSecGnuTLSTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcId" title="xmlSecGnuTLSTransformAes128CbcId">xmlSecGnuTLSTransformAes128CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES192CBCID">xmlSecGnuTLSTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcId" title="xmlSecGnuTLSTransformAes192CbcId">xmlSecGnuTLSTransformAes192CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES256CBCID">xmlSecGnuTLSTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcId" title="xmlSecGnuTLSTransformAes256CbcId">xmlSecGnuTLSTransformAes256CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES128ID">xmlSecGnuTLSTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128Id" title="xmlSecGnuTLSTransformKWAes128Id">xmlSecGnuTLSTransformKWAes128Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES192ID">xmlSecGnuTLSTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192Id" title="xmlSecGnuTLSTransformKWAes192Id">xmlSecGnuTLSTransformKWAes192Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES256ID">xmlSecGnuTLSTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256Id" title="xmlSecGnuTLSTransformKWAes256Id">xmlSecGnuTLSTransformKWAes256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESID">xmlSecGnuTLSKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesId" title="xmlSecGnuTLSKeyDataDesId">xmlSecGnuTLSKeyDataDesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDES3CBCID">xmlSecGnuTLSTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcId" title="xmlSecGnuTLSTransformDes3CbcId">xmlSecGnuTLSTransformDes3CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWDES3ID">xmlSecGnuTLSTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3Id" title="xmlSecGnuTLSTransformKWDes3Id">xmlSecGnuTLSTransformKWDes3Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAID">xmlSecGnuTLSKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaId" title="xmlSecGnuTLSKeyDataDsaId">xmlSecGnuTLSKeyDataDsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDSASHA1ID">xmlSecGnuTLSTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1Id" title="xmlSecGnuTLSTransformDsaSha1Id">xmlSecGnuTLSTransformDsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACID">xmlSecGnuTLSKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacId" title="xmlSecGnuTLSKeyDataHmacId">xmlSecGnuTLSKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACMD5ID">xmlSecGnuTLSTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5Id" title="xmlSecGnuTLSTransformHmacMd5Id">xmlSecGnuTLSTransformHmacMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACRIPEMD160ID">xmlSecGnuTLSTransformHmacRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160Id" title="xmlSecGnuTLSTransformHmacRipemd160Id">xmlSecGnuTLSTransformHmacRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA1ID">xmlSecGnuTLSTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1Id" title="xmlSecGnuTLSTransformHmacSha1Id">xmlSecGnuTLSTransformHmacSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA256ID">xmlSecGnuTLSTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256Id" title="xmlSecGnuTLSTransformHmacSha256Id">xmlSecGnuTLSTransformHmacSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA384ID">xmlSecGnuTLSTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384Id" title="xmlSecGnuTLSTransformHmacSha384Id">xmlSecGnuTLSTransformHmacSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA512ID">xmlSecGnuTLSTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512Id" title="xmlSecGnuTLSTransformHmacSha512Id">xmlSecGnuTLSTransformHmacSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAID">xmlSecGnuTLSKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaId" title="xmlSecGnuTLSKeyDataRsaId">xmlSecGnuTLSKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSAMD5ID">xmlSecGnuTLSTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5Id" title="xmlSecGnuTLSTransformRsaMd5Id">xmlSecGnuTLSTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSARIPEMD160ID">xmlSecGnuTLSTransformRsaRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160Id" title="xmlSecGnuTLSTransformRsaRipemd160Id">xmlSecGnuTLSTransformRsaRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA1ID">xmlSecGnuTLSTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1Id" title="xmlSecGnuTLSTransformRsaSha1Id">xmlSecGnuTLSTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA256ID">xmlSecGnuTLSTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256Id" title="xmlSecGnuTLSTransformRsaSha256Id">xmlSecGnuTLSTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA384ID">xmlSecGnuTLSTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384Id" title="xmlSecGnuTLSTransformRsaSha384Id">xmlSecGnuTLSTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA512ID">xmlSecGnuTLSTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512Id" title="xmlSecGnuTLSTransformRsaSha512Id">xmlSecGnuTLSTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA1ID">xmlSecGnuTLSTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1Id" title="xmlSecGnuTLSTransformSha1Id">xmlSecGnuTLSTransformSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA256ID">xmlSecGnuTLSTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256Id" title="xmlSecGnuTLSTransformSha256Id">xmlSecGnuTLSTransformSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA384ID">xmlSecGnuTLSTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384Id" title="xmlSecGnuTLSTransformSha384Id">xmlSecGnuTLSTransformSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA512ID">xmlSecGnuTLSTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512Id" title="xmlSecGnuTLSTransformSha512Id">xmlSecGnuTLSTransformSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMMD5ID">xmlSecGnuTLSTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5Id" title="xmlSecGnuTLSTransformMd5Id">xmlSecGnuTLSTransformMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRIPEMD160ID">xmlSecGnuTLSTransformRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160Id" title="xmlSecGnuTLSTransformRipemd160Id">xmlSecGnuTLSTransformRipemd160Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-CRYPTO.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto transforms implementation for GnuTLS.</p>
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-CRYPTO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOGETFUNCTIONS-GNUTLS"></a><h3>xmlSecCryptoGetFunctions_gnutls ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoGetFunctions_gnutls (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-gnutls"></a><h3>xmlSecCryptoGetFunctions_gnutls ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_gnutls (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the pointer to xmlsec-gnutls functions table.</p>
-<div class="REFSECT3">
-<a name="AEN34953"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-gnutls.returns"></a><h4>Returns</h4>
<p> the xmlsec-gnutls functions table or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSINIT"></a><h3>xmlSecGnuTLSInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSInit"></a><h3>xmlSecGnuTLSInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN34966"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSSHUTDOWN"></a><h3>xmlSecGnuTLSShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSShutdown"></a><h3>xmlSecGnuTLSShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN34979"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYSMNGRINIT"></a><h3>xmlSecGnuTLSKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeysMngrInit"></a><h3>xmlSecGnuTLSKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds GnuTLS specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN34993"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN34995"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN35004"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSGENERATERANDOM"></a><h3>xmlSecGnuTLSGenerateRandom ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSGenerateRandom (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Generates <code class="PARAMETER">size</code>
- random bytes and puts result in <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecGnuTLSGenerateRandom"></a><h3>xmlSecGnuTLSGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN35023"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35025"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the destination buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the numer of bytes to generate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN35040"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSGenerateRandom.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAAESGETKLASS"></a><h3>xmlSecGnuTLSKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGnuTLSKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataAesGetKlass"></a><h3>xmlSecGnuTLSKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN35053"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAAESSET"></a><h3>xmlSecGnuTLSKeyDataAesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataAesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataAesSet"></a><h3>xmlSecGnuTLSKeyDataAesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataAesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of AES key data.</p>
-<div class="REFSECT3">
-<a name="AEN35073"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35075"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataAesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to AES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to AES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN35096"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataAesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecGnuTLSTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes128CbcGetKlass"></a><h3>xmlSecGnuTLSTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformAes128CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35109"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecGnuTLSTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes192CbcGetKlass"></a><h3>xmlSecGnuTLSTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformAes192CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35122"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecGnuTLSTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes256CbcGetKlass"></a><h3>xmlSecGnuTLSTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformAes256CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35135"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecGnuTLSTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformKWAes128GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes128GetKlass"></a><h3>xmlSecGnuTLSTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformKWAes128GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35148"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecGnuTLSTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformKWAes192GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes192GetKlass"></a><h3>xmlSecGnuTLSTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformKWAes192GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35161"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecGnuTLSTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformKWAes256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes256GetKlass"></a><h3>xmlSecGnuTLSTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformKWAes256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35174"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADESGETKLASS"></a><h3>xmlSecGnuTLSKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGnuTLSKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDesGetKlass"></a><h3>xmlSecGnuTLSKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN35187"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADESSET"></a><h3>xmlSecGnuTLSKeyDataDesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataDesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDesSet"></a><h3>xmlSecGnuTLSKeyDataDesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataDesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of DES key data.</p>
-<div class="REFSECT3">
-<a name="AEN35207"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35209"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35230"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecGnuTLSTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformDes3CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformDes3CbcGetKlass"></a><h3>xmlSecGnuTLSTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35243"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecGnuTLSTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWDes3GetKlass"></a><h3>xmlSecGnuTLSTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35256"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADSAGETKLASS"></a><h3>xmlSecGnuTLSKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGnuTLSKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDsaGetKlass"></a><h3>xmlSecGnuTLSKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN35269"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to DSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADSAADOPTPRIVATEKEY"></a><h3>xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataDsaAdoptPrivateKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_x509_privkey_t</span></font> dsa_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey"></a><h3>xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataDsaAdoptPrivateKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_privkey_t</span></font> dsa_key</code></em>);</pre>
<p>Sets the value of DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN35286"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35288"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dsa_key</p></td>
-<td><p>the pointer to GnuTLS DSA private key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsa_key</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS DSA private key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35303"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADSAADOPTPUBLICKEY"></a><h3>xmlSecGnuTLSKeyDataDsaAdoptPublicKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataDsaAdoptPublicKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *p</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *q</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *g</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *y</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPublicKey"></a><h3>xmlSecGnuTLSKeyDataDsaAdoptPublicKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataDsaAdoptPublicKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *p</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *q</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *g</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *y</code></em>);</pre>
<p>Sets the value of DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN35329"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35331"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPublicKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>p</p></td>
-<td><p>the pointer to p component of the DSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>p</p></td>
+<td class="parameter_description"><p>the pointer to p component of the DSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>q</p></td>
-<td><p>the pointer to q component of the DSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>q</p></td>
+<td class="parameter_description"><p>the pointer to q component of the DSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>g</p></td>
-<td><p>the pointer to g component of the DSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>g</p></td>
+<td class="parameter_description"><p>the pointer to g component of the DSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>y</p></td>
-<td><p>the pointer to y component of the DSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>y</p></td>
+<td class="parameter_description"><p>the pointer to y component of the DSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35364"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataDsaAdoptPublicKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecGnuTLSTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformDsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformDsaSha1GetKlass"></a><h3>xmlSecGnuTLSTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35377"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSHMACGETMINOUTPUTLENGTH"></a><h3>xmlSecGnuTLSHmacGetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSHmacGetMinOutputLength (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSHmacGetMinOutputLength"></a><h3>xmlSecGnuTLSHmacGetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSHmacGetMinOutputLength (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the value of min HMAC length.</p>
-<div class="REFSECT3">
-<a name="AEN35390"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSHmacGetMinOutputLength.returns"></a><h4>Returns</h4>
<p> the min HMAC output length</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSHMACSETMINOUTPUTLENGTH"></a><h3>xmlSecGnuTLSHmacSetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecGnuTLSHmacSetMinOutputLength (<code class="PARAMETER"><font><span class="TYPE">int</span></font> min_length</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSHmacSetMinOutputLength"></a><h3>xmlSecGnuTLSHmacSetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecGnuTLSHmacSetMinOutputLength (<em class="parameter"><code><font><span class="type">int</span></font> min_length</code></em>);</pre>
<p>Sets the min HMAC output length</p>
-<div class="REFSECT3">
-<a name="AEN35404"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35406"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSHmacSetMinOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>min_length</p></td>
-<td><p>the new min length</p></td>
-<td> </td>
+<td class="parameter_name"><p>min_length</p></td>
+<td class="parameter_description"><p>the new min length</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAHMACGETKLASS"></a><h3>xmlSecGnuTLSKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGnuTLSKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataHmacGetKlass"></a><h3>xmlSecGnuTLSKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN35425"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAHMACSET"></a><h3>xmlSecGnuTLSKeyDataHmacSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataHmacSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataHmacSet"></a><h3>xmlSecGnuTLSKeyDataHmacSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataHmacSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of HMAC key data.</p>
-<div class="REFSECT3">
-<a name="AEN35445"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35447"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataHmacSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to HMAC key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to HMAC key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35468"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataHmacSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformHmacMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacMd5GetKlass"></a><h3>xmlSecGnuTLSTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35481"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACRIPEMD160GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacRipemd160GetKlass"></a><h3>xmlSecGnuTLSTransformHmacRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformHmacRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-RIPEMD160 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35494"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-RIPEMD160 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformHmacSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha1GetKlass"></a><h3>xmlSecGnuTLSTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformHmacSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35507"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha256GetKlass"></a><h3>xmlSecGnuTLSTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformHmacSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35520"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha384GetKlass"></a><h3>xmlSecGnuTLSTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformHmacSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35533"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecGnuTLSTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha512GetKlass"></a><h3>xmlSecGnuTLSTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformHmacSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35546"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATARSAGETKLASS"></a><h3>xmlSecGnuTLSKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecGnuTLSKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRsaGetKlass"></a><h3>xmlSecGnuTLSKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GnuTLS RSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN35559"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GnuTLS RSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATARSAADOPTPRIVATEKEY"></a><h3>xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataRsaAdoptPrivateKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_x509_privkey_t</span></font> rsa_key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey"></a><h3>xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataRsaAdoptPrivateKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_privkey_t</span></font> rsa_key</code></em>);</pre>
<p>Sets the value of RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN35576"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35578"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>rsa_key</p></td>
-<td><p>the pointer to GnuTLS RSA private key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>rsa_key</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS RSA private key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35593"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATARSAADOPTPUBLICKEY"></a><h3>xmlSecGnuTLSKeyDataRsaAdoptPublicKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGnuTLSKeyDataRsaAdoptPublicKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *m</code>,
- <code class="PARAMETER"><font><span class="TYPE">gnutls_datum_t</span></font> *e</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPublicKey"></a><h3>xmlSecGnuTLSKeyDataRsaAdoptPublicKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataRsaAdoptPublicKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *m</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_datum_t</span></font> *e</code></em>);</pre>
<p>Sets the value of RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN35613"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN35615"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPublicKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>m</p></td>
-<td><p>the pointer to m component of the RSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>m</p></td>
+<td class="parameter_description"><p>the pointer to m component of the RSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>e</p></td>
-<td><p>the pointer to e component of the RSA public key</p></td>
-<td> </td>
+<td class="parameter_name"><p>e</p></td>
+<td class="parameter_description"><p>the pointer to e component of the RSA public key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN35636"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRsaAdoptPublicKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaMd5GetKlass"></a><h3>xmlSecGnuTLSTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35649"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSARIPEMD160GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaRipemd160GetKlass"></a><h3>xmlSecGnuTLSTransformRsaRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformRsaRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35662"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-RIPEMD160 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformRsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha1GetKlass"></a><h3>xmlSecGnuTLSTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35675"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha256GetKlass"></a><h3>xmlSecGnuTLSTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformRsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35688"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha384GetKlass"></a><h3>xmlSecGnuTLSTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformRsaSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35701"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecGnuTLSTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha512GetKlass"></a><h3>xmlSecGnuTLSTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformRsaSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35714"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA1GETKLASS"></a><h3>xmlSecGnuTLSTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha1GetKlass"></a><h3>xmlSecGnuTLSTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35727"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA256GETKLASS"></a><h3>xmlSecGnuTLSTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha256GetKlass"></a><h3>xmlSecGnuTLSTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35740"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA256 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA384GETKLASS"></a><h3>xmlSecGnuTLSTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha384GetKlass"></a><h3>xmlSecGnuTLSTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35753"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA384 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA512GETKLASS"></a><h3>xmlSecGnuTLSTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha512GetKlass"></a><h3>xmlSecGnuTLSTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35766"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA512 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMMD5GETKLASS"></a><h3>xmlSecGnuTLSTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecGnuTLSTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformMd5GetKlass"></a><h3>xmlSecGnuTLSTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecGnuTLSTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>MD5 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35779"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MD5 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRIPEMD160GETKLASS"></a><h3>xmlSecGnuTLSTransformRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRipemd160GetKlass"></a><h3>xmlSecGnuTLSTransformRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecGnuTLSTransformRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>RIPEMD160 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN35792"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGnuTLSTransformRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to RIPEMD160 digest transform klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-GNUTLS-CRYPTO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAAESID"></a><h3>xmlSecGnuTLSKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSKeyDataAesId</pre>
+<div class="refsect1">
+<a name="xmlsec-gnutls-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataAesId"></a><h3>xmlSecGnuTLSKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataAesId</pre>
<p>The AES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES128CBCID"></a><h3>xmlSecGnuTLSTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformAes128CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes128CbcId"></a><h3>xmlSecGnuTLSTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformAes128CbcId</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES192CBCID"></a><h3>xmlSecGnuTLSTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformAes192CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes192CbcId"></a><h3>xmlSecGnuTLSTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformAes192CbcId</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMAES256CBCID"></a><h3>xmlSecGnuTLSTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformAes256CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformAes256CbcId"></a><h3>xmlSecGnuTLSTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformAes256CbcId</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES128ID"></a><h3>xmlSecGnuTLSTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformKWAes128Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes128Id"></a><h3>xmlSecGnuTLSTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformKWAes128Id</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES192ID"></a><h3>xmlSecGnuTLSTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformKWAes192Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes192Id"></a><h3>xmlSecGnuTLSTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformKWAes192Id</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWAES256ID"></a><h3>xmlSecGnuTLSTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformKWAes256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWAes256Id"></a><h3>xmlSecGnuTLSTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformKWAes256Id</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADESID"></a><h3>xmlSecGnuTLSKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSKeyDataDesId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDesId"></a><h3>xmlSecGnuTLSKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataDesId</pre>
<p>The DES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMDES3CBCID"></a><h3>xmlSecGnuTLSTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformDes3CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformDes3CbcId"></a><h3>xmlSecGnuTLSTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformDes3CbcId</pre>
<p>The DES3 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMKWDES3ID"></a><h3>xmlSecGnuTLSTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformKWDes3Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformKWDes3Id"></a><h3>xmlSecGnuTLSTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformKWDes3Id</pre>
<p>The DES3 KW transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATADSAID"></a><h3>xmlSecGnuTLSKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSKeyDataDsaId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataDsaId"></a><h3>xmlSecGnuTLSKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataDsaId</pre>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMDSASHA1ID"></a><h3>xmlSecGnuTLSTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformDsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformDsaSha1Id"></a><h3>xmlSecGnuTLSTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformDsaSha1Id</pre>
<p>The DSA SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATAHMACID"></a><h3>xmlSecGnuTLSKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSKeyDataHmacId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataHmacId"></a><h3>xmlSecGnuTLSKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataHmacId</pre>
<p>The HMAC key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACMD5ID"></a><h3>xmlSecGnuTLSTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacMd5Id"></a><h3>xmlSecGnuTLSTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacMd5Id</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACRIPEMD160ID"></a><h3>xmlSecGnuTLSTransformHmacRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacRipemd160Id"></a><h3>xmlSecGnuTLSTransformHmacRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacRipemd160Id</pre>
<p>The HMAC with RipeMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA1ID"></a><h3>xmlSecGnuTLSTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha1Id"></a><h3>xmlSecGnuTLSTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA256ID"></a><h3>xmlSecGnuTLSTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha256Id"></a><h3>xmlSecGnuTLSTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA384ID"></a><h3>xmlSecGnuTLSTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha384Id"></a><h3>xmlSecGnuTLSTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMHMACSHA512ID"></a><h3>xmlSecGnuTLSTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformHmacSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformHmacSha512Id"></a><h3>xmlSecGnuTLSTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformHmacSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSKEYDATARSAID"></a><h3>xmlSecGnuTLSKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSKeyDataRsaId</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRsaId"></a><h3>xmlSecGnuTLSKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataRsaId</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSAMD5ID"></a><h3>xmlSecGnuTLSTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaMd5Id"></a><h3>xmlSecGnuTLSTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaMd5Id</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSARIPEMD160ID"></a><h3>xmlSecGnuTLSTransformRsaRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaRipemd160Id"></a><h3>xmlSecGnuTLSTransformRsaRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaRipemd160Id</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA1ID"></a><h3>xmlSecGnuTLSTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha1Id"></a><h3>xmlSecGnuTLSTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaSha1Id</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA256ID"></a><h3>xmlSecGnuTLSTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha256Id"></a><h3>xmlSecGnuTLSTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaSha256Id</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA384ID"></a><h3>xmlSecGnuTLSTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha384Id"></a><h3>xmlSecGnuTLSTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaSha384Id</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRSASHA512ID"></a><h3>xmlSecGnuTLSTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRsaSha512Id"></a><h3>xmlSecGnuTLSTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRsaSha512Id</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA1ID"></a><h3>xmlSecGnuTLSTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha1Id"></a><h3>xmlSecGnuTLSTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA256ID"></a><h3>xmlSecGnuTLSTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha256Id"></a><h3>xmlSecGnuTLSTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA384ID"></a><h3>xmlSecGnuTLSTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha384Id"></a><h3>xmlSecGnuTLSTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMSHA512ID"></a><h3>xmlSecGnuTLSTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformSha512Id"></a><h3>xmlSecGnuTLSTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMMD5ID"></a><h3>xmlSecGnuTLSTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformMd5Id"></a><h3>xmlSecGnuTLSTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformMd5Id</pre>
<p>The MD5 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGNUTLSTRANSFORMRIPEMD160ID"></a><h3>xmlSecGnuTLSTransformRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGnuTLSTransformRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecGnuTLSTransformRipemd160Id"></a><h3>xmlSecGnuTLSTransformRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSTransformRipemd160Id</pre>
<p>The RIPEMD160 digest transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gnutls-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gcrypt-ref.html"><b>XML Security Library for GCrypt API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gnutls-ref.html b/docs/api/xmlsec-gnutls-ref.html
index 828f96f6..2073daa2 100644
--- a/docs/api/xmlsec-gnutls-ref.html
+++ b/docs/api/xmlsec-gnutls-ref.html
@@ -1,130 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library for GnuTLS API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="x509" href="xmlsec-openssl-x509.html">
-<link rel="NEXT" title="app" href="xmlsec-gnutls-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for GnuTLS API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-openssl-x509.html" title="x509">
+<link rel="next" href="xmlsec-gnutls-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-gnutls-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-GNUTLS-REF"></a>XML Security Library for GnuTLS API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-gnutls-ref"></a>XML Security Library for GnuTLS API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-app.html">app</a></span><span class="refpurpose"> — Application support functions for GnuTLS.</span>
+</dt>
<dt>
-<a href="xmlsec-gnutls-app.html">app</a> -- Application functions implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GnuTLS.</span>
+</dt>
<dt>
-<a href="xmlsec-gnutls-crypto.html">crypto</a> -- Crypto transforms implementation for GnuTLS.</dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for GnuTLS.</span>
+</dt>
</dl></div>
<p>This section contains the API reference for xmlsec-gnutls. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-x509.html"><b>&lt;&lt;&lt; x509</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gnutls-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-gnutls-x509.html b/docs/api/xmlsec-gnutls-x509.html
new file mode 100644
index 00000000..19fdcab4
--- /dev/null
+++ b/docs/api/xmlsec-gnutls-x509.html
@@ -0,0 +1,691 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-gnutls-ref.html" title="XML Security Library for GnuTLS API Reference.">
+<link rel="prev" href="xmlsec-gnutls-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-gcrypt-ref.html" title="XML Security Library for GCrypt API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-gnutls-x509.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gnutls-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-gcrypt-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-gnutls-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-gnutls-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — X509 certificates implementation for GnuTLS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKlass" title="xmlSecGnuTLSKeyDataX509GetKlass ()">xmlSecGnuTLSKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKeyCert" title="xmlSecGnuTLSKeyDataX509GetKeyCert ()">xmlSecGnuTLSKeyDataX509GetKeyCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptKeyCert" title="xmlSecGnuTLSKeyDataX509AdoptKeyCert ()">xmlSecGnuTLSKeyDataX509AdoptKeyCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCert" title="xmlSecGnuTLSKeyDataX509AdoptCert ()">xmlSecGnuTLSKeyDataX509AdoptCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCert" title="xmlSecGnuTLSKeyDataX509GetCert ()">xmlSecGnuTLSKeyDataX509GetCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCertsSize" title="xmlSecGnuTLSKeyDataX509GetCertsSize ()">xmlSecGnuTLSKeyDataX509GetCertsSize</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCrl" title="xmlSecGnuTLSKeyDataX509AdoptCrl ()">xmlSecGnuTLSKeyDataX509AdoptCrl</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">gnutls_x509_crl_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrl" title="xmlSecGnuTLSKeyDataX509GetCrl ()">xmlSecGnuTLSKeyDataX509GetCrl</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrlsSize" title="xmlSecGnuTLSKeyDataX509GetCrlsSize ()">xmlSecGnuTLSKeyDataX509GetCrlsSize</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509CertGetKey" title="xmlSecGnuTLSX509CertGetKey ()">xmlSecGnuTLSX509CertGetKey</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertGetKlass" title="xmlSecGnuTLSKeyDataRawX509CertGetKlass ()">xmlSecGnuTLSKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreGetKlass" title="xmlSecGnuTLSX509StoreGetKlass ()">xmlSecGnuTLSX509StoreGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreFindCert" title="xmlSecGnuTLSX509StoreFindCert ()">xmlSecGnuTLSX509StoreFindCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreVerify" title="xmlSecGnuTLSX509StoreVerify ()">xmlSecGnuTLSX509StoreVerify</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreAdoptCert" title="xmlSecGnuTLSX509StoreAdoptCert ()">xmlSecGnuTLSX509StoreAdoptCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509Id" title="xmlSecGnuTLSKeyDataX509Id">xmlSecGnuTLSKeyDataX509Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertId" title="xmlSecGnuTLSKeyDataRawX509CertId">xmlSecGnuTLSKeyDataRawX509CertId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreId" title="xmlSecGnuTLSX509StoreId">xmlSecGnuTLSX509StoreId</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetKlass"></a><h3>xmlSecGnuTLSKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The GnuTLS X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-X509Data</span></font>).</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
+<p> the X509 data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetKeyCert"></a><h3>xmlSecGnuTLSKeyDataX509GetKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+xmlSecGnuTLSKeyDataX509GetKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the certificate from which the key was extracted.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetKeyCert.returns"></a><h4>Returns</h4>
+<p> the key's certificate or NULL if key data was not used for key
+extraction or an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509AdoptKeyCert"></a><h3>xmlSecGnuTLSKeyDataX509AdoptKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataX509AdoptKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_crt_t</span></font> cert</code></em>);</pre>
+<p>Sets the key's certificate in <em class="parameter"><code>data</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptKeyCert.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCert"></a><h3>xmlSecGnuTLSKeyDataX509AdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataX509AdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_crt_t</span></font> cert</code></em>);</pre>
+<p>Adds certificate to the X509 key data.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCert.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetCert"></a><h3>xmlSecGnuTLSKeyDataX509GetCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+xmlSecGnuTLSKeyDataX509GetCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Gets a certificate from X509 key data.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired certificate position.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCert.returns"></a><h4>Returns</h4>
+<p> the pointer to certificate or NULL if <em class="parameter"><code>pos</code></em>
+is larger than the
+number of certificates in <em class="parameter"><code>data</code></em>
+or an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetCertsSize"></a><h3>xmlSecGnuTLSKeyDataX509GetCertsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecGnuTLSKeyDataX509GetCertsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of certificates in <em class="parameter"><code>data</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCertsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCertsSize.returns"></a><h4>Returns</h4>
+<p> te number of certificates in <em class="parameter"><code>data</code></em>
+.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCrl"></a><h3>xmlSecGnuTLSKeyDataX509AdoptCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSKeyDataX509AdoptCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_crl_t</span></font> crl</code></em>);</pre>
+<p>Adds crl to the X509 key data.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>crl</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS X509 crl.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509AdoptCrl.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetCrl"></a><h3>xmlSecGnuTLSKeyDataX509GetCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gnutls_x509_crl_t</span></font>
+xmlSecGnuTLSKeyDataX509GetCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Gets a crl from X509 key data.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired crl position.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCrl.returns"></a><h4>Returns</h4>
+<p> the pointer to crl or NULL if <em class="parameter"><code>pos</code></em>
+is larger than the
+number of crls in <em class="parameter"><code>data</code></em>
+or an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509GetCrlsSize"></a><h3>xmlSecGnuTLSKeyDataX509GetCrlsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecGnuTLSKeyDataX509GetCrlsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of crls in <em class="parameter"><code>data</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCrlsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataX509GetCrlsSize.returns"></a><h4>Returns</h4>
+<p> te number of crls in <em class="parameter"><code>data</code></em>
+.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509CertGetKey"></a><h3>xmlSecGnuTLSX509CertGetKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecGnuTLSX509CertGetKey (<em class="parameter"><code><font><span class="type">gnutls_x509_crt_t</span></font> cert</code></em>);</pre>
+<p>Extracts public key from the <em class="parameter"><code>cert</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509CertGetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the certificate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509CertGetKey.returns"></a><h4>Returns</h4>
+<p> public key value or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRawX509CertGetKlass"></a><h3>xmlSecGnuTLSKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecGnuTLSKeyDataRawX509CertGetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The raw X509 certificates key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
+<p> raw X509 certificates key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509StoreGetKlass"></a><h3>xmlSecGnuTLSX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecGnuTLSX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The GnuTLS X509 certificates key data store klass.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to GnuTLS X509 certificates key data store klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509StoreFindCert"></a><h3>xmlSecGnuTLSX509StoreFindCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+xmlSecGnuTLSX509StoreFindCert (<em class="parameter"><code>const <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *subjectName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *issuerName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *issuerSerial</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ski</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Searches <em class="parameter"><code>store</code></em>
+ for a certificate that matches given criteria.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreFindCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>subjectName</p></td>
+<td class="parameter_description"><p>the desired certificate name.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>issuerName</p></td>
+<td class="parameter_description"><p>the desired certificate issuer name.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>issuerSerial</p></td>
+<td class="parameter_description"><p>the desired certificate issuer serial number.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ski</p></td>
+<td class="parameter_description"><p>the desired certificate SKI.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreFindCert.returns"></a><h4>Returns</h4>
+<p> pointer to found certificate or NULL if certificate is not found
+or an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509StoreVerify"></a><h3>xmlSecGnuTLSX509StoreVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">gnutls_x509_crt_t</span></font>
+xmlSecGnuTLSX509StoreVerify (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> certs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> crls</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Verifies <em class="parameter"><code>certs</code></em>
+ list.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>certs</p></td>
+<td class="parameter_description"><p>the untrusted certificates.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>crls</p></td>
+<td class="parameter_description"><p>the crls.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreVerify.returns"></a><h4>Returns</h4>
+<p> pointer to the first verified certificate from <em class="parameter"><code>certs</code></em>
+.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509StoreAdoptCert"></a><h3>xmlSecGnuTLSX509StoreAdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecGnuTLSX509StoreAdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">gnutls_x509_crt_t</span></font> cert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Adds trusted (root) or untrusted certificate to the store.</p>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreAdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to GnuTLS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGnuTLSX509StoreAdoptCert.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-gnutls-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataX509Id"></a><h3>xmlSecGnuTLSKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataX509Id</pre>
+<p>The GnuTLS X509 data klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSKeyDataRawX509CertId"></a><h3>xmlSecGnuTLSKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSKeyDataRawX509CertId</pre>
+<p>The GnuTLS raw X509 certificate klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGnuTLSX509StoreId"></a><h3>xmlSecGnuTLSX509StoreId</h3>
+<pre class="programlisting">#define xmlSecGnuTLSX509StoreId</pre>
+<p>The GnuTLS X509 store klass.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-index.html b/docs/api/xmlsec-index.html
index 87a5b10e..6eb125bc 100644
--- a/docs/api/xmlsec-index.html
+++ b/docs/api/xmlsec-index.html
@@ -1,1632 +1,1740 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library Reference Index</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="x509" href="xmlsec-mscrypto-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library Reference Index: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-mscng-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
-</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-INDEX"></a>XML Security Library Reference Index</h1>
-<p> </p>
-<p></p>
-<ul>
-<li><p><font>ATTRIBUTE-UNUSED</font></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLENCCTXMODE">xmlEncCtxMode</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECADDCHILD">xmlSecAddChild</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECADDCHILDNODE">xmlSecAddChildNode</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECADDIDS">xmlSecAddIDs</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECADDNEXTSIBLING">xmlSecAddNextSibling</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECADDPREVSIBLING">xmlSecAddPrevSibling</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECALLOCMODE">xmlSecAllocMode</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECASSERT2">xmlSecAssert2</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECASSERT">xmlSecAssert</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXCREATE">xmlSecBase64CtxCreate</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXDESTROY">xmlSecBase64CtxDestroy</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXFINALIZE">xmlSecBase64CtxFinalize</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXFINAL">xmlSecBase64CtxFinal</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXINITIALIZE">xmlSecBase64CtxInitialize</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64CTXUPDATE">xmlSecBase64CtxUpdate</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64DECODE">xmlSecBase64Decode</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64ENCODE">xmlSecBase64Encode</a></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64GETDEFAULTLINESIZE">xmlSecBase64GetDefaultLineSize</a></p></li>
-<li><p><font>XMLSEC-BASE64-LINESIZE</font></p></li>
-<li><p><a href="xmlsec-base64.html#XMLSECBASE64SETDEFAULTLINESIZE">xmlSecBase64SetDefaultLineSize</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECBITMASK">xmlSecBitMask</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNADD">xmlSecBnAdd</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNBLOBSETNODEVALUE">xmlSecBnBlobSetNodeValue</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNCOMPARE">xmlSecBnCompare</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNCOMPAREREVERSE">xmlSecBnCompareReverse</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNCREATE">xmlSecBnCreate</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNDESTROY">xmlSecBnDestroy</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNDIV">xmlSecBnDiv</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNFINALIZE">xmlSecBnFinalize</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNFORMAT">xmlSecBnFormat</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNFROMDECSTRING">xmlSecBnFromDecString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNFROMHEXSTRING">xmlSecBnFromHexString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNFROMSTRING">xmlSecBnFromString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNGETDATA">xmlSecBnGetData</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNGETNODEVALUE">xmlSecBnGetNodeValue</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNGETSIZE">xmlSecBnGetSize</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNINITIALIZE">xmlSecBnInitialize</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNMUL">xmlSecBnMul</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNREVERSE">xmlSecBnReverse</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNSETDATA">xmlSecBnSetData</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNSETNODEVALUE">xmlSecBnSetNodeValue</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNTODECSTRING">xmlSecBnToDecString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNTOHEXSTRING">xmlSecBnToHexString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNTOSTRING">xmlSecBnToString</a></p></li>
-<li><p><a href="xmlsec-bn.html#XMLSECBNZERO">xmlSecBnZero</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERAPPEND">xmlSecBufferAppend</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERBASE64NODECONTENTREAD">xmlSecBufferBase64NodeContentRead</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERBASE64NODECONTENTWRITE">xmlSecBufferBase64NodeContentWrite</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERCREATE">xmlSecBufferCreate</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERCREATEOUTPUTBUFFER">xmlSecBufferCreateOutputBuffer</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERDESTROY">xmlSecBufferDestroy</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFEREMPTY">xmlSecBufferEmpty</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERFINALIZE">xmlSecBufferFinalize</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERGETDATA">xmlSecBufferGetData</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERGETMAXSIZE">xmlSecBufferGetMaxSize</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERGETSIZE">xmlSecBufferGetSize</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERINITIALIZE">xmlSecBufferInitialize</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFER">xmlSecBuffer</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERPREPEND">xmlSecBufferPrepend</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERREADFILE">xmlSecBufferReadFile</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERREMOVEHEAD">xmlSecBufferRemoveHead</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERREMOVETAIL">xmlSecBufferRemoveTail</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERSETDATA">xmlSecBufferSetData</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERSETDEFAULTALLOCMODE">xmlSecBufferSetDefaultAllocMode</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERSETMAXSIZE">xmlSecBufferSetMaxSize</a></p></li>
-<li><p><a href="xmlsec-buffer.html#XMLSECBUFFERSETSIZE">xmlSecBufferSetSize</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECCHECKNODENAME">xmlSecCheckNodeName</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONEXACT">xmlSecCheckVersionExact</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONEXT">xmlSecCheckVersionExt</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONMODE">xmlSecCheckVersionMode</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSION">xmlSecCheckVersion</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECCREATETREE">xmlSecCreateTree</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecCryptoAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRINIT">xmlSecCryptoAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRLOAD">xmlSecCryptoAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPDEFAULTKEYSMNGRSAVE">xmlSecCryptoAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPGETDEFAULTPWDCALLBACK">xmlSecCryptoAppGetDefaultPwdCallback</a></p></li>
-<li><p><font>xmlSecCryptoAppInitMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPINIT">xmlSecCryptoAppInit</a></p></li>
-<li><p><font>xmlSecCryptoAppKeyCertLoadMemoryMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYCERTLOADMEMORY">xmlSecCryptoAppKeyCertLoadMemory</a></p></li>
-<li><p><font>xmlSecCryptoAppKeyCertLoadMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYCERTLOAD">xmlSecCryptoAppKeyCertLoad</a></p></li>
-<li><p><font>xmlSecCryptoAppKeyLoadMemoryMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYLOADMEMORY">xmlSecCryptoAppKeyLoadMemory</a></p></li>
-<li><p><font>xmlSecCryptoAppKeyLoadMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYLOAD">xmlSecCryptoAppKeyLoad</a></p></li>
-<li><p><font>xmlSecCryptoAppKeysMngrCertLoadMemoryMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYSMNGRCERTLOADMEMORY">xmlSecCryptoAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><font>xmlSecCryptoAppKeysMngrCertLoadMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYSMNGRCERTLOAD">xmlSecCryptoAppKeysMngrCertLoad</a></p></li>
-<li><p><font>xmlSecCryptoAppPkcs12LoadMemoryMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPPKCS12LOADMEMORY">xmlSecCryptoAppPkcs12LoadMemory</a></p></li>
-<li><p><font>xmlSecCryptoAppPkcs12LoadMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPPKCS12LOAD">xmlSecCryptoAppPkcs12Load</a></p></li>
-<li><p><font>xmlSecCryptoAppShutdownMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOAPPSHUTDOWN">xmlSecCryptoAppShutdown</a></p></li>
-<li><p><font>xmlSecCryptoDLFunctions</font></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLFUNCTIONSREGISTERKEYDATAANDTRANSFORMS">xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLGETFUNCTIONS">xmlSecCryptoDLGetFunctions</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLGETLIBRARYFUNCTIONS">xmlSecCryptoDLGetLibraryFunctions</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLINIT">xmlSecCryptoDLInit</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY">xmlSecCryptoDLLoadLibrary</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLSETFUNCTIONS">xmlSecCryptoDLSetFunctions</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLSHUTDOWN">xmlSecCryptoDLShutdown</a></p></li>
-<li><p><a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY">xmlSecCryptoDLUnloadLibrary</a></p></li>
-<li><p><font>xmlSecCryptoGetFunctions-gcrypt</font></p></li>
-<li><p><font>xmlSecCryptoGetFunctions-gnutls</font></p></li>
-<li><p><font>xmlSecCryptoGetFunctions-mscrypto</font></p></li>
-<li><p><font>xmlSecCryptoGetFunctions-nss</font></p></li>
-<li><p><font>xmlSecCryptoGetFunctions-openssl</font></p></li>
-<li><p><font>xmlSecCryptoInitMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOINIT">xmlSecCryptoInit</a></p></li>
-<li><p><font>xmlSecCryptoKeyDataGetKlassMethod</font></p></li>
-<li><p><font>xmlSecCryptoKeyDataStoreGetKlassMethod</font></p></li>
-<li><p><font>xmlSecCryptoKeysMngrInitMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOKEYSMNGRINIT">xmlSecCryptoKeysMngrInit</a></p></li>
-<li><p><font>xmlSecCryptoShutdownMethod</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECCRYPTOSHUTDOWN">xmlSecCryptoShutdown</a></p></li>
-<li><p><font>xmlSecCryptoTransformGetKlassMethod</font></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXCREATE">xmlSecDSigCtxCreate</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDEBUGDUMP">xmlSecDSigCtxDebugDump</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDEBUGXMLDUMP">xmlSecDSigCtxDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDESTROY">xmlSecDSigCtxDestroy</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXENABLEREFERENCETRANSFORM">xmlSecDSigCtxEnableReferenceTransform</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXENABLESIGNATURETRANSFORM">xmlSecDSigCtxEnableSignatureTransform</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXFINALIZE">xmlSecDSigCtxFinalize</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXGETPRESIGNBUFFER">xmlSecDSigCtxGetPreSignBuffer</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXINITIALIZE">xmlSecDSigCtxInitialize</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXSIGN">xmlSecDSigCtxSign</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTXVERIFY">xmlSecDSigCtxVerify</a></p></li>
-<li><p><font>XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS</font></p></li>
-<li><p><font>XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES</font></p></li>
-<li><p><font>XMLSEC-DSIG-FLAGS-STORE-SIGNATURE</font></p></li>
-<li><p><font>XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES</font></p></li>
-<li><p><font>XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK</font></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXCREATE">xmlSecDSigReferenceCtxCreate</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDEBUGDUMP">xmlSecDSigReferenceCtxDebugDump</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDEBUGXMLDUMP">xmlSecDSigReferenceCtxDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDESTROY">xmlSecDSigReferenceCtxDestroy</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXFINALIZE">xmlSecDSigReferenceCtxFinalize</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXGETPREDIGESTBUFFER">xmlSecDSigReferenceCtxGetPreDigestBuffer</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXINITIALIZE">xmlSecDSigReferenceCtxInitialize</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXLISTGETKLASS">xmlSecDSigReferenceCtxListGetKlass</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXLISTID">xmlSecDSigReferenceCtxListId</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX">xmlSecDSigReferenceCtx</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXPROCESSNODE">xmlSecDSigReferenceCtxProcessNode</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCEORIGIN">xmlSecDSigReferenceOrigin</a></p></li>
-<li><p><a href="xmlsec-xmldsig.html#XMLSECDSIGSTATUS">xmlSecDSigStatus</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXBINARYENCRYPT">xmlSecEncCtxBinaryEncrypt</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXCOPYUSERPREF">xmlSecEncCtxCopyUserPref</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXCREATE">xmlSecEncCtxCreate</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXDEBUGDUMP">xmlSecEncCtxDebugDump</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXDEBUGXMLDUMP">xmlSecEncCtxDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXDECRYPT">xmlSecEncCtxDecrypt</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXDECRYPTTOBUFFER">xmlSecEncCtxDecryptToBuffer</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXDESTROY">xmlSecEncCtxDestroy</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXFINALIZE">xmlSecEncCtxFinalize</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXINITIALIZE">xmlSecEncCtxInitialize</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXRESET">xmlSecEncCtxReset</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXURIENCRYPT">xmlSecEncCtxUriEncrypt</a></p></li>
-<li><p><a href="xmlsec-xmlenc.html#XMLSECENCCTXXMLENCRYPT">xmlSecEncCtxXmlEncrypt</a></p></li>
-<li><p><font>XMLSEC-ENC-RETURN-REPLACED-NODE</font></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERROR">xmlSecError</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSCALLBACK">xmlSecErrorsCallback</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSDEFAULTCALLBACKENABLEOUTPUT">xmlSecErrorsDefaultCallbackEnableOutput</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSDEFAULTCALLBACK">xmlSecErrorsDefaultCallback</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSGETCODE">xmlSecErrorsGetCode</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSGETMSG">xmlSecErrorsGetMsg</a></p></li>
-<li><p><font>XMLSEC-ERRORS-HERE</font></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSINIT">xmlSecErrorsInit</a></p></li>
-<li><p><font>XMLSEC-ERRORS-MAX-NUMBER</font></p></li>
-<li><p><font>XMLSEC-ERRORS-NO-MESSAGE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-ASSERTION</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-HAS-EXPIRED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-ISSUER-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-NOT-FOUND</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-NOT-YET-VALID</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-REVOKED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CERT-VERIFY-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-CRYPTO-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-DATA-NOT-MATCH</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-DISABLED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-DSIG-NO-REFERENCES</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-DATA</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-FORMAT</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-KEY-DATA</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-NODE-CONTENT</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-NODE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-OPERATION</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-RESULT</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-SIZE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-STATUS</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-TRANSFORM</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-TYPE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-INVALID-URI-TYPE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-IO-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-KEYDATA-DISABLED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-KEY-NOT-FOUND</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-MALLOC-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-NODE-NOT-FOUND</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-NOT-IMPLEMENTED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-STRDUP-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-TRANSFORM-DISABLED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-UNEXPECTED-NODE</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-XML-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-XMLSEC-FAILED</font></p></li>
-<li><p><font>XMLSEC-ERRORS-R-XSLT-FAILED</font></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSSAFESTRING">xmlSecErrorsSafeString</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSSETCALLBACK">xmlSecErrorsSetCallback</a></p></li>
-<li><p><a href="xmlsec-errors.html#XMLSECERRORSSHUTDOWN">xmlSecErrorsShutdown</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECFINDCHILD">xmlSecFindChild</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECFINDNODE">xmlSecFindNode</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECFINDPARENT">xmlSecFindParent</a></p></li>
-<li><p><font>XMLSEC-FUNC-TO-PTR</font></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecGCryptAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRINIT">xmlSecGCryptAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRLOAD">xmlSecGCryptAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPDEFAULTKEYSMNGRSAVE">xmlSecGCryptAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPGETDEFAULTPWDCALLBACK">xmlSecGCryptAppGetDefaultPwdCallback</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPINIT">xmlSecGCryptAppInit</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYCERTLOADMEMORY">xmlSecGCryptAppKeyCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYCERTLOAD">xmlSecGCryptAppKeyCertLoad</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYLOADMEMORY">xmlSecGCryptAppKeyLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYLOAD">xmlSecGCryptAppKeyLoad</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYSMNGRCERTLOADMEMORY">xmlSecGCryptAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPKEYSMNGRCERTLOAD">xmlSecGCryptAppKeysMngrCertLoad</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPPKCS12LOADMEMORY">xmlSecGCryptAppPkcs12LoadMemory</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPPKCS12LOAD">xmlSecGCryptAppPkcs12Load</a></p></li>
-<li><p><a href="xmlsec-gcrypt-app.html#XMLSECGCRYPTAPPSHUTDOWN">xmlSecGCryptAppShutdown</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTGENERATERANDOM">xmlSecGCryptGenerateRandom</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTHMACGETMINOUTPUTLENGTH">xmlSecGCryptHmacGetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTHMACSETMINOUTPUTLENGTH">xmlSecGCryptHmacSetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTINIT">xmlSecGCryptInit</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESGETKLASS">xmlSecGCryptKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESID">xmlSecGCryptKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAAESSET">xmlSecGCryptKeyDataAesSet</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESGETKLASS">xmlSecGCryptKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESID">xmlSecGCryptKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADESSET">xmlSecGCryptKeyDataDesSet</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAADOPTKEY">xmlSecGCryptKeyDataDsaAdoptKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAADOPTKEYPAIR">xmlSecGCryptKeyDataDsaAdoptKeyPair</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETKLASS">xmlSecGCryptKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETPRIVATEKEY">xmlSecGCryptKeyDataDsaGetPrivateKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAGETPUBLICKEY">xmlSecGCryptKeyDataDsaGetPublicKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATADSAID">xmlSecGCryptKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACGETKLASS">xmlSecGCryptKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACID">xmlSecGCryptKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATAHMACSET">xmlSecGCryptKeyDataHmacSet</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAADOPTKEY">xmlSecGCryptKeyDataRsaAdoptKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAADOPTKEYPAIR">xmlSecGCryptKeyDataRsaAdoptKeyPair</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETKLASS">xmlSecGCryptKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETPRIVATEKEY">xmlSecGCryptKeyDataRsaGetPrivateKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAGETPUBLICKEY">xmlSecGCryptKeyDataRsaGetPublicKey</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYDATARSAID">xmlSecGCryptKeyDataRsaId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTKEYSMNGRINIT">xmlSecGCryptKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTSHUTDOWN">xmlSecGCryptShutdown</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES128CBCGETKLASS">xmlSecGCryptTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES128CBCID">xmlSecGCryptTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES192CBCGETKLASS">xmlSecGCryptTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES192CBCID">xmlSecGCryptTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES256CBCGETKLASS">xmlSecGCryptTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMAES256CBCID">xmlSecGCryptTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDES3CBCGETKLASS">xmlSecGCryptTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDES3CBCID">xmlSecGCryptTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDSASHA1GETKLASS">xmlSecGCryptTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMDSASHA1ID">xmlSecGCryptTransformDsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACMD5GETKLASS">xmlSecGCryptTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACMD5ID">xmlSecGCryptTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACRIPEMD160GETKLASS">xmlSecGCryptTransformHmacRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACRIPEMD160ID">xmlSecGCryptTransformHmacRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA1GETKLASS">xmlSecGCryptTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA1ID">xmlSecGCryptTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA256GETKLASS">xmlSecGCryptTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA256ID">xmlSecGCryptTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA384GETKLASS">xmlSecGCryptTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA384ID">xmlSecGCryptTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA512GETKLASS">xmlSecGCryptTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMHMACSHA512ID">xmlSecGCryptTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES128GETKLASS">xmlSecGCryptTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES128ID">xmlSecGCryptTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES192GETKLASS">xmlSecGCryptTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES192ID">xmlSecGCryptTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES256GETKLASS">xmlSecGCryptTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWAES256ID">xmlSecGCryptTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWDES3GETKLASS">xmlSecGCryptTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMKWDES3ID">xmlSecGCryptTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMMD5GETKLASS">xmlSecGCryptTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMMD5ID">xmlSecGCryptTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRIPEMD160GETKLASS">xmlSecGCryptTransformRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRIPEMD160ID">xmlSecGCryptTransformRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSAMD5GETKLASS">xmlSecGCryptTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSAMD5ID">xmlSecGCryptTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSARIPEMD160GETKLASS">xmlSecGCryptTransformRsaRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSARIPEMD160ID">xmlSecGCryptTransformRsaRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA1GETKLASS">xmlSecGCryptTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA1ID">xmlSecGCryptTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA256GETKLASS">xmlSecGCryptTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA256ID">xmlSecGCryptTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA384GETKLASS">xmlSecGCryptTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA384ID">xmlSecGCryptTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA512GETKLASS">xmlSecGCryptTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMRSASHA512ID">xmlSecGCryptTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA1GETKLASS">xmlSecGCryptTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA1ID">xmlSecGCryptTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA256GETKLASS">xmlSecGCryptTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA256ID">xmlSecGCryptTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA384GETKLASS">xmlSecGCryptTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA384ID">xmlSecGCryptTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA512GETKLASS">xmlSecGCryptTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gcrypt-crypto.html#XMLSECGCRYPTTRANSFORMSHA512ID">xmlSecGCryptTransformSha512Id</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGENERATEANDADDID">xmlSecGenerateAndAddID</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGENERATEID">xmlSecGenerateID</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGETHEX">xmlSecGetHex</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECGETKEYCALLBACK">xmlSecGetKeyCallback</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGETNEXTELEMENTNODE">xmlSecGetNextElementNode</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGETNODENSHREF">xmlSecGetNodeNsHref</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECGETQNAME">xmlSecGetQName</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecGnuTLSAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRINIT">xmlSecGnuTLSAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRLOAD">xmlSecGnuTLSAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPDEFAULTKEYSMNGRSAVE">xmlSecGnuTLSAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPGETDEFAULTPWDCALLBACK">xmlSecGnuTLSAppGetDefaultPwdCallback</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPINIT">xmlSecGnuTLSAppInit</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYCERTLOADMEMORY">xmlSecGnuTLSAppKeyCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYCERTLOAD">xmlSecGnuTLSAppKeyCertLoad</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYLOADMEMORY">xmlSecGnuTLSAppKeyLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYLOAD">xmlSecGnuTLSAppKeyLoad</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYSMNGRCERTLOADMEMORY">xmlSecGnuTLSAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPKEYSMNGRCERTLOAD">xmlSecGnuTLSAppKeysMngrCertLoad</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPPKCS12LOADMEMORY">xmlSecGnuTLSAppPkcs12LoadMemory</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPPKCS12LOAD">xmlSecGnuTLSAppPkcs12Load</a></p></li>
-<li><p><a href="xmlsec-gnutls-app.html#XMLSECGNUTLSAPPSHUTDOWN">xmlSecGnuTLSAppShutdown</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSGENERATERANDOM">xmlSecGnuTLSGenerateRandom</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSHMACGETMINOUTPUTLENGTH">xmlSecGnuTLSHmacGetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSHMACSETMINOUTPUTLENGTH">xmlSecGnuTLSHmacSetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSINIT">xmlSecGnuTLSInit</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESGETKLASS">xmlSecGnuTLSKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESID">xmlSecGnuTLSKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAAESSET">xmlSecGnuTLSKeyDataAesSet</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESGETKLASS">xmlSecGnuTLSKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESID">xmlSecGnuTLSKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADESSET">xmlSecGnuTLSKeyDataDesSet</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAADOPTPRIVATEKEY">xmlSecGnuTLSKeyDataDsaAdoptPrivateKey</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAADOPTPUBLICKEY">xmlSecGnuTLSKeyDataDsaAdoptPublicKey</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAGETKLASS">xmlSecGnuTLSKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATADSAID">xmlSecGnuTLSKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACGETKLASS">xmlSecGnuTLSKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACID">xmlSecGnuTLSKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATAHMACSET">xmlSecGnuTLSKeyDataHmacSet</a></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataRawX509CertGetKlass</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataRawX509CertId</font></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAADOPTPRIVATEKEY">xmlSecGnuTLSKeyDataRsaAdoptPrivateKey</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAADOPTPUBLICKEY">xmlSecGnuTLSKeyDataRsaAdoptPublicKey</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAGETKLASS">xmlSecGnuTLSKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYDATARSAID">xmlSecGnuTLSKeyDataRsaId</a></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509AdoptCert</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509AdoptCrl</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509AdoptKeyCert</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetCert</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetCertsSize</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetCrl</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetCrlsSize</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetKeyCert</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509GetKlass</font></p></li>
-<li><p><font>xmlSecGnuTLSKeyDataX509Id</font></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSKEYSMNGRINIT">xmlSecGnuTLSKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSSHUTDOWN">xmlSecGnuTLSShutdown</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES128CBCGETKLASS">xmlSecGnuTLSTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES128CBCID">xmlSecGnuTLSTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES192CBCGETKLASS">xmlSecGnuTLSTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES192CBCID">xmlSecGnuTLSTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES256CBCGETKLASS">xmlSecGnuTLSTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMAES256CBCID">xmlSecGnuTLSTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDES3CBCGETKLASS">xmlSecGnuTLSTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDES3CBCID">xmlSecGnuTLSTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDSASHA1GETKLASS">xmlSecGnuTLSTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMDSASHA1ID">xmlSecGnuTLSTransformDsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACMD5GETKLASS">xmlSecGnuTLSTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACMD5ID">xmlSecGnuTLSTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACRIPEMD160GETKLASS">xmlSecGnuTLSTransformHmacRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACRIPEMD160ID">xmlSecGnuTLSTransformHmacRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA1GETKLASS">xmlSecGnuTLSTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA1ID">xmlSecGnuTLSTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA256GETKLASS">xmlSecGnuTLSTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA256ID">xmlSecGnuTLSTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA384GETKLASS">xmlSecGnuTLSTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA384ID">xmlSecGnuTLSTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA512GETKLASS">xmlSecGnuTLSTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMHMACSHA512ID">xmlSecGnuTLSTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES128GETKLASS">xmlSecGnuTLSTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES128ID">xmlSecGnuTLSTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES192GETKLASS">xmlSecGnuTLSTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES192ID">xmlSecGnuTLSTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES256GETKLASS">xmlSecGnuTLSTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWAES256ID">xmlSecGnuTLSTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWDES3GETKLASS">xmlSecGnuTLSTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMKWDES3ID">xmlSecGnuTLSTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMMD5GETKLASS">xmlSecGnuTLSTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMMD5ID">xmlSecGnuTLSTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRIPEMD160GETKLASS">xmlSecGnuTLSTransformRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRIPEMD160ID">xmlSecGnuTLSTransformRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSAMD5GETKLASS">xmlSecGnuTLSTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSAMD5ID">xmlSecGnuTLSTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSARIPEMD160GETKLASS">xmlSecGnuTLSTransformRsaRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSARIPEMD160ID">xmlSecGnuTLSTransformRsaRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA1GETKLASS">xmlSecGnuTLSTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA1ID">xmlSecGnuTLSTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA256GETKLASS">xmlSecGnuTLSTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA256ID">xmlSecGnuTLSTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA384GETKLASS">xmlSecGnuTLSTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA384ID">xmlSecGnuTLSTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA512GETKLASS">xmlSecGnuTLSTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMRSASHA512ID">xmlSecGnuTLSTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA1GETKLASS">xmlSecGnuTLSTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA1ID">xmlSecGnuTLSTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA256GETKLASS">xmlSecGnuTLSTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA256ID">xmlSecGnuTLSTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA384GETKLASS">xmlSecGnuTLSTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA384ID">xmlSecGnuTLSTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA512GETKLASS">xmlSecGnuTLSTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-gnutls-crypto.html#XMLSECGNUTLSTRANSFORMSHA512ID">xmlSecGnuTLSTransformSha512Id</a></p></li>
-<li><p><font>xmlSecGnuTLSX509CertGetKey</font></p></li>
-<li><p><font>xmlSecGnuTLSX509StoreAdoptCert</font></p></li>
-<li><p><font>xmlSecGnuTLSX509StoreFindCert</font></p></li>
-<li><p><font>xmlSecGnuTLSX509StoreGetKlass</font></p></li>
-<li><p><font>xmlSecGnuTLSX509StoreId</font></p></li>
-<li><p><font>xmlSecGnuTLSX509StoreVerify</font></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECINIT">xmlSecInit</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECIOCLEANUPCALLBACKS">xmlSecIOCleanupCallbacks</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECIOINIT">xmlSecIOInit</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECIOREGISTERCALLBACKS">xmlSecIORegisterCallbacks</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECIOREGISTERDEFAULTCALLBACKS">xmlSecIORegisterDefaultCallbacks</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECIOSHUTDOWN">xmlSecIOShutdown</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECISEMPTYNODE">xmlSecIsEmptyNode</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECISEMPTYSTRING">xmlSecIsEmptyString</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECISHEX">xmlSecIsHex</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYADOPTDATA">xmlSecKeyAdoptData</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYCHECKID">xmlSecKeyCheckId</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYCOPY">xmlSecKeyCopy</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYCREATE">xmlSecKeyCreate</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAAESGETKLASS">xmlSecKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAAESID">xmlSecKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYSIZE">xmlSecKeyDataBinarySize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEBINREAD">xmlSecKeyDataBinaryValueBinRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEBINWRITE">xmlSecKeyDataBinaryValueBinWrite</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDEBUGDUMP">xmlSecKeyDataBinaryValueDebugDump</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDEBUGXMLDUMP">xmlSecKeyDataBinaryValueDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDUPLICATE">xmlSecKeyDataBinaryValueDuplicate</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEFINALIZE">xmlSecKeyDataBinaryValueFinalize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEGETBUFFER">xmlSecKeyDataBinaryValueGetBuffer</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEGETSIZE">xmlSecKeyDataBinaryValueGetSize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEINITIALIZE">xmlSecKeyDataBinaryValueInitialize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUESETBUFFER">xmlSecKeyDataBinaryValueSetBuffer</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEXMLREAD">xmlSecKeyDataBinaryValueXmlRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEXMLWRITE">xmlSecKeyDataBinaryValueXmlWrite</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINREADMETHOD">xmlSecKeyDataBinReadMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINREAD">xmlSecKeyDataBinRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINWRITEMETHOD">xmlSecKeyDataBinWriteMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINWRITE">xmlSecKeyDataBinWrite</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKID">xmlSecKeyDataCheckId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKSIZE">xmlSecKeyDataCheckSize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKUSAGE">xmlSecKeyDataCheckUsage</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATACREATE">xmlSecKeyDataCreate</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMPMETHOD">xmlSecKeyDataDebugDumpMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMP">xmlSecKeyDataDebugDump</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGXMLDUMP">xmlSecKeyDataDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATADESGETKLASS">xmlSecKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATADESID">xmlSecKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADESTROY">xmlSecKeyDataDestroy</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATADSAGETKLASS">xmlSecKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATADSAID">xmlSecKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADUPLICATEMETHOD">xmlSecKeyDataDuplicateMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADUPLICATE">xmlSecKeyDataDuplicate</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAECDSAGETKLASS">xmlSecKeyDataEcdsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAECDSAID">xmlSecKeyDataEcdsaId</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATAENCRYPTEDKEYGETKLASS">xmlSecKeyDataEncryptedKeyGetKlass</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATAENCRYPTEDKEYID">xmlSecKeyDataEncryptedKeyId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAFINALIZEMETHOD">xmlSecKeyDataFinalizeMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT">xmlSecKeyDataFormat</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGENERATEMETHOD">xmlSecKeyDataGenerateMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGENERATE">xmlSecKeyDataGenerate</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETIDENTIFIERMETHOD">xmlSecKeyDataGetIdentifierMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETIDENTIFIER">xmlSecKeyDataGetIdentifier</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETNAME">xmlSecKeyDataGetName</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETSIZEMETHOD">xmlSecKeyDataGetSizeMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETSIZE">xmlSecKeyDataGetSize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETTYPEMETHOD">xmlSecKeyDataGetTypeMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETTYPE">xmlSecKeyDataGetType</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAGOST2001GETKLASS">xmlSecKeyDataGost2001GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAGOST2001ID">xmlSecKeyDataGost2001Id</a></p></li>
-<li><p><font>xmlSecKeyDataGostR3410-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecKeyDataGostR3410-2012-256Id</font></p></li>
-<li><p><font>xmlSecKeyDataGostR3410-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecKeyDataGostR3410-2012-512Id</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAHMACGETKLASS">xmlSecKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAHMACID">xmlSecKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTDEBUGDUMP">xmlSecKeyDataIdListDebugDump</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTDEBUGXMLDUMP">xmlSecKeyDataIdListDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYHREF">xmlSecKeyDataIdListFindByHref</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYNAME">xmlSecKeyDataIdListFindByName</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYNODE">xmlSecKeyDataIdListFindByNode</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFIND">xmlSecKeyDataIdListFind</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTGETKLASS">xmlSecKeyDataIdListGetKlass</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTID">xmlSecKeyDataIdListId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSGET">xmlSecKeyDataIdsGet</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSINIT">xmlSecKeyDataIdsInit</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSREGISTERDEFAULT">xmlSecKeyDataIdsRegisterDefault</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSREGISTER">xmlSecKeyDataIdsRegister</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSSHUTDOWN">xmlSecKeyDataIdsShutdown</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDUNKNOWN">xmlSecKeyDataIdUnknown</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAINITMETHOD">xmlSecKeyDataInitMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAISVALID">xmlSecKeyDataIsValid</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAKLASSGETNAME">xmlSecKeyDataKlassGetName</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAKLASS">xmlSecKeyDataKlass</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATALISTGETKLASS">xmlSecKeyDataListGetKlass</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATALISTID">xmlSecKeyDataListId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATA">xmlSecKeyData</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATANAMEGETKLASS">xmlSecKeyDataNameGetKlass</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATANAMEID">xmlSecKeyDataNameId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATARAWX509CERTGETKLASS">xmlSecKeyDataRawX509CertGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATARAWX509CERTID">xmlSecKeyDataRawX509CertId</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATARETRIEVALMETHODGETKLASS">xmlSecKeyDataRetrievalMethodGetKlass</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATARETRIEVALMETHODID">xmlSecKeyDataRetrievalMethodId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATARSAGETKLASS">xmlSecKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATARSAID">xmlSecKeyDataRsaId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECHECKID">xmlSecKeyDataStoreCheckId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECHECKSIZE">xmlSecKeyDataStoreCheckSize</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECREATE">xmlSecKeyDataStoreCreate</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREDESTROY">xmlSecKeyDataStoreDestroy</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREFINALIZEMETHOD">xmlSecKeyDataStoreFinalizeMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREGETNAME">xmlSecKeyDataStoreGetName</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREIDUNKNOWN">xmlSecKeyDataStoreIdUnknown</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREINITIALIZEMETHOD">xmlSecKeyDataStoreInitializeMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREISVALID">xmlSecKeyDataStoreIsValid</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREKLASSGETNAME">xmlSecKeyDataStoreKlassGetName</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREKLASS">xmlSecKeyDataStoreKlass</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE">xmlSecKeyDataStore</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREPTRLISTGETKLASS">xmlSecKeyDataStorePtrListGetKlass</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREPTRLISTID">xmlSecKeyDataStorePtrListId</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEANY">xmlSecKeyDataTypeAny</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE">xmlSecKeyDataType</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPENONE">xmlSecKeyDataTypeNone</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPERMANENT">xmlSecKeyDataTypePermanent</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPRIVATE">xmlSecKeyDataTypePrivate</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPUBLIC">xmlSecKeyDataTypePublic</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPESESSION">xmlSecKeyDataTypeSession</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPESYMMETRIC">xmlSecKeyDataTypeSymmetric</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPETRUSTED">xmlSecKeyDataTypeTrusted</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEUNKNOWN">xmlSecKeyDataTypeUnknown</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEANY">xmlSecKeyDataUsageAny</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODE">xmlSecKeyDataUsageKeyInfoNode</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODEREAD">xmlSecKeyDataUsageKeyInfoNodeRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODEWRITE">xmlSecKeyDataUsageKeyInfoNodeWrite</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODE">xmlSecKeyDataUsageKeyValueNode</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODEREAD">xmlSecKeyDataUsageKeyValueNodeRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODEWRITE">xmlSecKeyDataUsageKeyValueNodeWrite</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE">xmlSecKeyDataUsage</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODEBIN">xmlSecKeyDataUsageRetrievalMethodNodeBin</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODE">xmlSecKeyDataUsageRetrievalMethodNode</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODEXML">xmlSecKeyDataUsageRetrievalMethodNodeXml</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEUNKNOWN">xmlSecKeyDataUsageUnknown</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATAVALUEGETKLASS">xmlSecKeyDataValueGetKlass</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYDATAVALUEID">xmlSecKeyDataValueId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAX509GETKLASS">xmlSecKeyDataX509GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECKEYDATAX509ID">xmlSecKeyDataX509Id</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREADMETHOD">xmlSecKeyDataXmlReadMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREAD">xmlSecKeyDataXmlRead</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLWRITEMETHOD">xmlSecKeyDataXmlWriteMethod</a></p></li>
-<li><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLWRITE">xmlSecKeyDataXmlWrite</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYDEBUGDUMP">xmlSecKeyDebugDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYDEBUGXMLDUMP">xmlSecKeyDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYDESTROY">xmlSecKeyDestroy</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYDUPLICATE">xmlSecKeyDuplicate</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYEMPTY">xmlSecKeyEmpty</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYENSUREDATA">xmlSecKeyEnsureData</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGENERATEBYNAME">xmlSecKeyGenerateByName</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGENERATE">xmlSecKeyGenerate</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGETDATA">xmlSecKeyGetData</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGETNAME">xmlSecKeyGetName</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGETTYPE">xmlSecKeyGetType</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYGETVALUE">xmlSecKeyGetValue</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCOPYUSERPREF">xmlSecKeyInfoCtxCopyUserPref</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCREATEENCCTX">xmlSecKeyInfoCtxCreateEncCtx</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCREATE">xmlSecKeyInfoCtxCreate</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDEBUGDUMP">xmlSecKeyInfoCtxDebugDump</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDEBUGXMLDUMP">xmlSecKeyInfoCtxDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDESTROY">xmlSecKeyInfoCtxDestroy</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXFINALIZE">xmlSecKeyInfoCtxFinalize</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXINITIALIZE">xmlSecKeyInfoCtxInitialize</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX">xmlSecKeyInfoCtx</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXRESET">xmlSecKeyInfoCtxReset</a></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT</font></p></li>
-<li><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD</font></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOMODE">xmlSecKeyInfoMode</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFONODEREAD">xmlSecKeyInfoNodeRead</a></p></li>
-<li><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFONODEWRITE">xmlSecKeyInfoNodeWrite</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYISVALID">xmlSecKeyIsValid</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYMATCH">xmlSecKeyMatch</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEY">xmlSecKey</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYPTRLISTGETKLASS">xmlSecKeyPtrListGetKlass</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYPTRLISTID">xmlSecKeyPtrListId</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREADBINARYFILE">xmlSecKeyReadBinaryFile</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREADBUFFER">xmlSecKeyReadBuffer</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREADMEMORY">xmlSecKeyReadMemory</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQCOPY">xmlSecKeyReqCopy</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQDEBUGDUMP">xmlSecKeyReqDebugDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQDEBUGXMLDUMP">xmlSecKeyReqDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQFINALIZE">xmlSecKeyReqFinalize</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQINITIALIZE">xmlSecKeyReqInitialize</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQMATCHKEY">xmlSecKeyReqMatchKey</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQMATCHKEYVALUE">xmlSecKeyReqMatchKeyValue</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQ">xmlSecKeyReq</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYREQRESET">xmlSecKeyReqReset</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYSETNAME">xmlSecKeySetName</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYSETVALUE">xmlSecKeySetValue</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRADOPTDATASTORE">xmlSecKeysMngrAdoptDataStore</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRADOPTKEYSSTORE">xmlSecKeysMngrAdoptKeysStore</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRCREATE">xmlSecKeysMngrCreate</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRDESTROY">xmlSecKeysMngrDestroy</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRFINDKEY">xmlSecKeysMngrFindKey</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETDATASTORE">xmlSecKeysMngrGetDataStore</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETKEY">xmlSecKeysMngrGetKey</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETKEYSSTORE">xmlSecKeysMngrGetKeysStore</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">xmlSecKeysMngr</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTORECHECKID">xmlSecKeyStoreCheckId</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTORECHECKSIZE">xmlSecKeyStoreCheckSize</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTORECREATE">xmlSecKeyStoreCreate</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREDESTROY">xmlSecKeyStoreDestroy</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINALIZEMETHOD">xmlSecKeyStoreFinalizeMethod</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINDKEYMETHOD">xmlSecKeyStoreFindKeyMethod</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINDKEY">xmlSecKeyStoreFindKey</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREGETNAME">xmlSecKeyStoreGetName</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREIDUNKNOWN">xmlSecKeyStoreIdUnknown</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREINITIALIZEMETHOD">xmlSecKeyStoreInitializeMethod</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREISVALID">xmlSecKeyStoreIsValid</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREKLASSGETNAME">xmlSecKeyStoreKlassGetName</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREKLASS">xmlSecKeyStoreKlass</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE">xmlSecKeyStore</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGEANY">xmlSecKeyUsageAny</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGEDECRYPT">xmlSecKeyUsageDecrypt</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGEENCRYPT">xmlSecKeyUsageEncrypt</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGEKEYEXCHANGE">xmlSecKeyUsageKeyExchange</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGE">xmlSecKeyUsage</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGESIGN">xmlSecKeyUsageSign</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSAGEVERIFY">xmlSecKeyUsageVerify</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHCOPY">xmlSecKeyUseWithCopy</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHCREATE">xmlSecKeyUseWithCreate</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHDEBUGDUMP">xmlSecKeyUseWithDebugDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHDEBUGXMLDUMP">xmlSecKeyUseWithDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHDESTROY">xmlSecKeyUseWithDestroy</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHDUPLICATE">xmlSecKeyUseWithDuplicate</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHFINALIZE">xmlSecKeyUseWithFinalize</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHINITIALIZE">xmlSecKeyUseWithInitialize</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITH">xmlSecKeyUseWith</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHPTRLISTGETKLASS">xmlSecKeyUseWithPtrListGetKlass</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHPTRLISTID">xmlSecKeyUseWithPtrListId</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHRESET">xmlSecKeyUseWithReset</a></p></li>
-<li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHSET">xmlSecKeyUseWithSet</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEYSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTTRUSTEDSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTUNTRUSTEDSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT">xmlSecMSCryptoAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRLOAD">xmlSecMSCryptoAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPRIVATEKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPUBLICKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSAVE">xmlSecMSCryptoAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSYMKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETCERTSTORENAME">xmlSecMSCryptoAppGetCertStoreName</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETDEFAULTPWDCALLBACK">xmlSecMSCryptoAppGetDefaultPwdCallback</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPINIT">xmlSecMSCryptoAppInit</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYCERTLOADMEMORY">xmlSecMSCryptoAppKeyCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYCERTLOAD">xmlSecMSCryptoAppKeyCertLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYLOADMEMORY">xmlSecMSCryptoAppKeyLoadMemory</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYLOAD">xmlSecMSCryptoAppKeyLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYSMNGRCERTLOADMEMORY">xmlSecMSCryptoAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYSMNGRCERTLOAD">xmlSecMSCryptoAppKeysMngrCertLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPPKCS12LOADMEMORY">xmlSecMSCryptoAppPkcs12LoadMemory</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPPKCS12LOAD">xmlSecMSCryptoAppPkcs12Load</a></p></li>
-<li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPSHUTDOWN">xmlSecMSCryptoAppShutdown</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOCERTADOPT">xmlSecMSCryptoCertAdopt</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOCERTDUP">xmlSecMSCryptoCertDup</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTLOCALETOUNICODE">xmlSecMSCryptoConvertLocaleToUnicode</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTLOCALETOUTF8">xmlSecMSCryptoConvertLocaleToUtf8</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTTSTRTOUTF8">xmlSecMSCryptoConvertTstrToUtf8</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUNICODETOUTF8">xmlSecMSCryptoConvertUnicodeToUtf8</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOLOCALE">xmlSecMSCryptoConvertUtf8ToLocale</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOTSTR">xmlSecMSCryptoConvertUtf8ToTstr</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOUNICODE">xmlSecMSCryptoConvertUtf8ToUnicode</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOERRORSDEFAULTCALLBACK">xmlSecMSCryptoErrorsDefaultCallback</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOGENERATERANDOM">xmlSecMSCryptoGenerateRandom</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOHMACGETMINOUTPUTLENGTH">xmlSecMSCryptoHmacGetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOHMACSETMINOUTPUTLENGTH">xmlSecMSCryptoHmacSetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOINIT">xmlSecMSCryptoInit</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESGETKLASS">xmlSecMSCryptoKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESID">xmlSecMSCryptoKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESSET">xmlSecMSCryptoKeyDataAesSet</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADESGETKLASS">xmlSecMSCryptoKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADESID">xmlSecMSCryptoKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADSAGETKLASS">xmlSecMSCryptoKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADSAID">xmlSecMSCryptoKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETCERT">xmlSecMSCryptoKeyDataGetCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETDECRYPTKEY">xmlSecMSCryptoKeyDataGetDecryptKey</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETKEY">xmlSecMSCryptoKeyDataGetKey</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETMSCRYPTOKEYSPEC">xmlSecMSCryptoKeyDataGetMSCryptoKeySpec</a></p></li>
-<li><p><a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETMSCRYPTOPROVIDER">xmlSecMSCryptoKeyDataGetMSCryptoProvider</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAGOST2001GETKLASS">xmlSecMSCryptoKeyDataGost2001GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAGOST2001ID">xmlSecMSCryptoKeyDataGost2001Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACGETKLASS">xmlSecMSCryptoKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACID">xmlSecMSCryptoKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACSET">xmlSecMSCryptoKeyDataHmacSet</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATARAWX509CERTGETKLASS">xmlSecMSCryptoKeyDataRawX509CertGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATARAWX509CERTID">xmlSecMSCryptoKeyDataRawX509CertId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATARSAGETKLASS">xmlSecMSCryptoKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATARSAID">xmlSecMSCryptoKeyDataRsaId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTCERT">xmlSecMSCryptoKeyDataX509AdoptCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTCRL">xmlSecMSCryptoKeyDataX509AdoptCrl</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTKEYCERT">xmlSecMSCryptoKeyDataX509AdoptKeyCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCERT">xmlSecMSCryptoKeyDataX509GetCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCERTSSIZE">xmlSecMSCryptoKeyDataX509GetCertsSize</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCRL">xmlSecMSCryptoKeyDataX509GetCrl</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCRLSSIZE">xmlSecMSCryptoKeyDataX509GetCrlsSize</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETKEYCERT">xmlSecMSCryptoKeyDataX509GetKeyCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETKLASS">xmlSecMSCryptoKeyDataX509GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ID">xmlSecMSCryptoKeyDataX509Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYSMNGRINIT">xmlSecMSCryptoKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREADOPTKEY">xmlSecMSCryptoKeysStoreAdoptKey</a></p></li>
-<li><p><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREGETKLASS">xmlSecMSCryptoKeysStoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREID">xmlSecMSCryptoKeysStoreId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTORELOAD">xmlSecMSCryptoKeysStoreLoad</a></p></li>
-<li><p><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTORESAVE">xmlSecMSCryptoKeysStoreSave</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOSHUTDOWN">xmlSecMSCryptoShutdown</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES128CBCGETKLASS">xmlSecMSCryptoTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES128CBCID">xmlSecMSCryptoTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES192CBCGETKLASS">xmlSecMSCryptoTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES192CBCID">xmlSecMSCryptoTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES256CBCGETKLASS">xmlSecMSCryptoTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES256CBCID">xmlSecMSCryptoTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDES3CBCGETKLASS">xmlSecMSCryptoTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDES3CBCID">xmlSecMSCryptoTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDSASHA1GETKLASS">xmlSecMSCryptoTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDSASHA1ID">xmlSecMSCryptoTransformDsaSha1Id</a></p></li>
-<li><p><font>xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecMSCryptoTransformGost2001GostR3411-94Id</font></p></li>
-<li><p><font>xmlSecMSCryptoTransformGostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecMSCryptoTransformGostR3411-94Id</font></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACMD5GETKLASS">xmlSecMSCryptoTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACMD5ID">xmlSecMSCryptoTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA1GETKLASS">xmlSecMSCryptoTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA1ID">xmlSecMSCryptoTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA256GETKLASS">xmlSecMSCryptoTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA256ID">xmlSecMSCryptoTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA384GETKLASS">xmlSecMSCryptoTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA384ID">xmlSecMSCryptoTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA512GETKLASS">xmlSecMSCryptoTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA512ID">xmlSecMSCryptoTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES128GETKLASS">xmlSecMSCryptoTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES128ID">xmlSecMSCryptoTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES192GETKLASS">xmlSecMSCryptoTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES192ID">xmlSecMSCryptoTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES256GETKLASS">xmlSecMSCryptoTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES256ID">xmlSecMSCryptoTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWDES3GETKLASS">xmlSecMSCryptoTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWDES3ID">xmlSecMSCryptoTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMMD5GETKLASS">xmlSecMSCryptoTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMMD5ID">xmlSecMSCryptoTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAMD5GETKLASS">xmlSecMSCryptoTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAMD5ID">xmlSecMSCryptoTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAOAEPGETKLASS">xmlSecMSCryptoTransformRsaOaepGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAOAEPID">xmlSecMSCryptoTransformRsaOaepId</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAPKCS1GETKLASS">xmlSecMSCryptoTransformRsaPkcs1GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAPKCS1ID">xmlSecMSCryptoTransformRsaPkcs1Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA1GETKLASS">xmlSecMSCryptoTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA1ID">xmlSecMSCryptoTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA256GETKLASS">xmlSecMSCryptoTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA256ID">xmlSecMSCryptoTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA384GETKLASS">xmlSecMSCryptoTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA384ID">xmlSecMSCryptoTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA512GETKLASS">xmlSecMSCryptoTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA512ID">xmlSecMSCryptoTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1GETKLASS">xmlSecMSCryptoTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1ID">xmlSecMSCryptoTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA256GETKLASS">xmlSecMSCryptoTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA256ID">xmlSecMSCryptoTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA384GETKLASS">xmlSecMSCryptoTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA384ID">xmlSecMSCryptoTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA512GETKLASS">xmlSecMSCryptoTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA512ID">xmlSecMSCryptoTransformSha512Id</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTCERT">xmlSecMSCryptoX509StoreAdoptCert</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTKEYSTORE">xmlSecMSCryptoX509StoreAdoptKeyStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTTRUSTEDSTORE">xmlSecMSCryptoX509StoreAdoptTrustedStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTUNTRUSTEDSTORE">xmlSecMSCryptoX509StoreAdoptUntrustedStore</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREENABLESYSTEMTRUSTEDCERTS">xmlSecMSCryptoX509StoreEnableSystemTrustedCerts</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREGETKLASS">xmlSecMSCryptoX509StoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREID">xmlSecMSCryptoX509StoreId</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECNODEENCODEANDSETCONTENT">xmlSecNodeEncodeAndSetContent</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECNODEGETNAME">xmlSecNodeGetName</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETADDLIST">xmlSecNodeSetAddList</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETADD">xmlSecNodeSetAdd</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETCONTAINS">xmlSecNodeSetContains</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETCREATE">xmlSecNodeSetCreate</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETDEBUGDUMP">xmlSecNodeSetDebugDump</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETDESTROY">xmlSecNodeSetDestroy</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETDOCDESTROY">xmlSecNodeSetDocDestroy</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETDUMPTEXTNODES">xmlSecNodeSetDumpTextNodes</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETGETCHILDREN">xmlSecNodeSetGetChildren</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESET">xmlSecNodeSet</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETOP">xmlSecNodeSetOp</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE">xmlSecNodeSetType</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETWALKCALLBACK">xmlSecNodeSetWalkCallback</a></p></li>
-<li><p><a href="xmlsec-nodeset.html#XMLSECNODESETWALK">xmlSecNodeSetWalk</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecNssAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRINIT">xmlSecNssAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRLOAD">xmlSecNssAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRSAVE">xmlSecNssAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPGETDEFAULTPWDCALLBACK">xmlSecNssAppGetDefaultPwdCallback</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPINIT">xmlSecNssAppInit</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOADMEMORY">xmlSecNssAppKeyCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOAD">xmlSecNssAppKeyCertLoad</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOADSECITEM">xmlSecNssAppKeyCertLoadSECItem</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYFROMCERTLOADSECITEM">xmlSecNssAppKeyFromCertLoadSECItem</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOADMEMORY">xmlSecNssAppKeyLoadMemory</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOAD">xmlSecNssAppKeyLoad</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOADSECITEM">xmlSecNssAppKeyLoadSECItem</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOADMEMORY">xmlSecNssAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOAD">xmlSecNssAppKeysMngrCertLoad</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOADSECITEM">xmlSecNssAppKeysMngrCertLoadSECItem</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOADMEMORY">xmlSecNssAppPkcs12LoadMemory</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOAD">xmlSecNssAppPkcs12Load</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOADSECITEM">xmlSecNssAppPkcs12LoadSECItem</a></p></li>
-<li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPSHUTDOWN">xmlSecNssAppShutdown</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSERRORSDEFAULTCALLBACK">xmlSecNssErrorsDefaultCallback</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSGENERATERANDOM">xmlSecNssGenerateRandom</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSGETINTERNALKEYSLOT">xmlSecNssGetInternalKeySlot</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSHMACGETMINOUTPUTLENGTH">xmlSecNssHmacGetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSHMACSETMINOUTPUTLENGTH">xmlSecNssHmacSetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSINIT">xmlSecNssInit</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESGETKLASS">xmlSecNssKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESID">xmlSecNssKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESSET">xmlSecNssKeyDataAesSet</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESGETKLASS">xmlSecNssKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESID">xmlSecNssKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESSET">xmlSecNssKeyDataDesSet</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADSAGETKLASS">xmlSecNssKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADSAID">xmlSecNssKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACGETKLASS">xmlSecNssKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACID">xmlSecNssKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACSET">xmlSecNssKeyDataHmacSet</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATARAWX509CERTGETKLASS">xmlSecNssKeyDataRawX509CertGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATARAWX509CERTID">xmlSecNssKeyDataRawX509CertId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATARSAGETKLASS">xmlSecNssKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATARSAID">xmlSecNssKeyDataRsaId</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTCERT">xmlSecNssKeyDataX509AdoptCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTCRL">xmlSecNssKeyDataX509AdoptCrl</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTKEYCERT">xmlSecNssKeyDataX509AdoptKeyCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCERT">xmlSecNssKeyDataX509GetCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCERTSSIZE">xmlSecNssKeyDataX509GetCertsSize</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCRL">xmlSecNssKeyDataX509GetCrl</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCRLSSIZE">xmlSecNssKeyDataX509GetCrlsSize</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETKEYCERT">xmlSecNssKeyDataX509GetKeyCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETKLASS">xmlSecNssKeyDataX509GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ID">xmlSecNssKeyDataX509Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYSMNGRINIT">xmlSecNssKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREADOPTKEY">xmlSecNssKeysStoreAdoptKey</a></p></li>
-<li><p><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREGETKLASS">xmlSecNssKeysStoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREID">xmlSecNssKeysStoreId</a></p></li>
-<li><p><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTORELOAD">xmlSecNssKeysStoreLoad</a></p></li>
-<li><p><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTORESAVE">xmlSecNssKeysStoreSave</a></p></li>
-<li><p><a href="xmlsec-nss-bignum.html#XMLSECNSSNODEGETBIGNUMVALUE">xmlSecNssNodeGetBigNumValue</a></p></li>
-<li><p><a href="xmlsec-nss-bignum.html#XMLSECNSSNODESETBIGNUMVALUE">xmlSecNssNodeSetBigNumValue</a></p></li>
-<li><p><a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIADOPTKEY">xmlSecNssPKIAdoptKey</a></p></li>
-<li><p><a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATADUPLICATE">xmlSecNssPKIKeyDataDuplicate</a></p></li>
-<li><p><a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETKEYTYPE">xmlSecNssPKIKeyDataGetKeyType</a></p></li>
-<li><p><a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETPRIVKEY">xmlSecNssPKIKeyDataGetPrivKey</a></p></li>
-<li><p><a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETPUBKEY">xmlSecNssPKIKeyDataGetPubKey</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSSHUTDOWN">xmlSecNssShutdown</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES128CBCGETKLASS">xmlSecNssTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES128CBCID">xmlSecNssTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES192CBCGETKLASS">xmlSecNssTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES192CBCID">xmlSecNssTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES256CBCGETKLASS">xmlSecNssTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES256CBCID">xmlSecNssTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDES3CBCGETKLASS">xmlSecNssTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDES3CBCID">xmlSecNssTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDSASHA1GETKLASS">xmlSecNssTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDSASHA1ID">xmlSecNssTransformDsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACMD5GETKLASS">xmlSecNssTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACMD5ID">xmlSecNssTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACRIPEMD160GETKLASS">xmlSecNssTransformHmacRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACRIPEMD160ID">xmlSecNssTransformHmacRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA1GETKLASS">xmlSecNssTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA1ID">xmlSecNssTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA256GETKLASS">xmlSecNssTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA256ID">xmlSecNssTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA384GETKLASS">xmlSecNssTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA384ID">xmlSecNssTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA512GETKLASS">xmlSecNssTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA512ID">xmlSecNssTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES128GETKLASS">xmlSecNssTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES128ID">xmlSecNssTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES192GETKLASS">xmlSecNssTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES192ID">xmlSecNssTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES256GETKLASS">xmlSecNssTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES256ID">xmlSecNssTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3GETKLASS">xmlSecNssTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3ID">xmlSecNssTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMMD5GETKLASS">xmlSecNssTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMMD5ID">xmlSecNssTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAMD5GETKLASS">xmlSecNssTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAMD5ID">xmlSecNssTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAOAEPGETKLASS">xmlSecNssTransformRsaOaepGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAOAEPID">xmlSecNssTransformRsaOaepId</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1GETKLASS">xmlSecNssTransformRsaPkcs1GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1ID">xmlSecNssTransformRsaPkcs1Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA1GETKLASS">xmlSecNssTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA1ID">xmlSecNssTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA256GETKLASS">xmlSecNssTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA256ID">xmlSecNssTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA384GETKLASS">xmlSecNssTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA384ID">xmlSecNssTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA512GETKLASS">xmlSecNssTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA512ID">xmlSecNssTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA1GETKLASS">xmlSecNssTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA1ID">xmlSecNssTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA256GETKLASS">xmlSecNssTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA256ID">xmlSecNssTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA384GETKLASS">xmlSecNssTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA384ID">xmlSecNssTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA512GETKLASS">xmlSecNssTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA512ID">xmlSecNssTransformSha512Id</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509CERTGETKEY">xmlSecNssX509CertGetKey</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREADOPTCERT">xmlSecNssX509StoreAdoptCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREFINDCERT">xmlSecNssX509StoreFindCert</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREGETKLASS">xmlSecNssX509StoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREID">xmlSecNssX509StoreId</a></p></li>
-<li><p><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREVERIFY">xmlSecNssX509StoreVerify</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecOpenSSLAppDefaultKeysMngrAdoptKey</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRINIT">xmlSecOpenSSLAppDefaultKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRLOAD">xmlSecOpenSSLAppDefaultKeysMngrLoad</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRSAVE">xmlSecOpenSSLAppDefaultKeysMngrSave</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPGETDEFAULTPWDCALLBACK">xmlSecOpenSSLAppGetDefaultPwdCallback</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPINIT">xmlSecOpenSSLAppInit</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOADBIO">xmlSecOpenSSLAppKeyCertLoadBIO</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOADMEMORY">xmlSecOpenSSLAppKeyCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOAD">xmlSecOpenSSLAppKeyCertLoad</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYFROMCERTLOADBIO">xmlSecOpenSSLAppKeyFromCertLoadBIO</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOADBIO">xmlSecOpenSSLAppKeyLoadBIO</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOADMEMORY">xmlSecOpenSSLAppKeyLoadMemory</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOAD">xmlSecOpenSSLAppKeyLoad</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRADDCERTSFILE">xmlSecOpenSSLAppKeysMngrAddCertsFile</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRADDCERTSPATH">xmlSecOpenSSLAppKeysMngrAddCertsPath</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOADBIO">xmlSecOpenSSLAppKeysMngrCertLoadBIO</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOADMEMORY">xmlSecOpenSSLAppKeysMngrCertLoadMemory</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOAD">xmlSecOpenSSLAppKeysMngrCertLoad</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOADBIO">xmlSecOpenSSLAppPkcs12LoadBIO</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOADMEMORY">xmlSecOpenSSLAppPkcs12LoadMemory</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOAD">xmlSecOpenSSLAppPkcs12Load</a></p></li>
-<li><p><a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPSHUTDOWN">xmlSecOpenSSLAppShutdown</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLERRORSDEFAULTCALLBACK">xmlSecOpenSSLErrorsDefaultCallback</a></p></li>
-<li><p><font>XMLSEC-OPENSSL-ERRORS-FUNCTION</font></p></li>
-<li><p><font>XMLSEC-OPENSSL-ERRORS-LIB</font></p></li>
-<li><p><a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYADOPT">xmlSecOpenSSLEvpKeyAdopt</a></p></li>
-<li><p><a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDATAADOPTEVP">xmlSecOpenSSLEvpKeyDataAdoptEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDATAGETEVP">xmlSecOpenSSLEvpKeyDataGetEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDUP">xmlSecOpenSSLEvpKeyDup</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLGENERATERANDOM">xmlSecOpenSSLGenerateRandom</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLGETDEFAULTTRUSTEDCERTSFOLDER">xmlSecOpenSSLGetDefaultTrustedCertsFolder</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLHMACGETMINOUTPUTLENGTH">xmlSecOpenSSLHmacGetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLHMACSETMINOUTPUTLENGTH">xmlSecOpenSSLHmacSetMinOutputLength</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLINIT">xmlSecOpenSSLInit</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESGETKLASS">xmlSecOpenSSLKeyDataAesGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESID">xmlSecOpenSSLKeyDataAesId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESSET">xmlSecOpenSSLKeyDataAesSet</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESGETKLASS">xmlSecOpenSSLKeyDataDesGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESID">xmlSecOpenSSLKeyDataDesId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESSET">xmlSecOpenSSLKeyDataDesSet</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAADOPTDSA">xmlSecOpenSSLKeyDataDsaAdoptDsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAADOPTEVP">xmlSecOpenSSLKeyDataDsaAdoptEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETDSA">xmlSecOpenSSLKeyDataDsaGetDsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETEVP">xmlSecOpenSSLKeyDataDsaGetEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETKLASS">xmlSecOpenSSLKeyDataDsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAID">xmlSecOpenSSLKeyDataDsaId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAADOPTECDSA">xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAADOPTEVP">xmlSecOpenSSLKeyDataEcdsaAdoptEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETECDSA">xmlSecOpenSSLKeyDataEcdsaGetEcdsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETEVP">xmlSecOpenSSLKeyDataEcdsaGetEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETKLASS">xmlSecOpenSSLKeyDataEcdsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAID">xmlSecOpenSSLKeyDataEcdsaId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOST2001GETKLASS">xmlSecOpenSSLKeyDataGost2001GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOST2001ID">xmlSecOpenSSLKeyDataGost2001Id</a></p></li>
-<li><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-256Id</font></p></li>
-<li><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-512Id</font></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACGETKLASS">xmlSecOpenSSLKeyDataHmacGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACID">xmlSecOpenSSLKeyDataHmacId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACSET">xmlSecOpenSSLKeyDataHmacSet</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATARAWX509CERTGETKLASS">xmlSecOpenSSLKeyDataRawX509CertGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATARAWX509CERTID">xmlSecOpenSSLKeyDataRawX509CertId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAADOPTEVP">xmlSecOpenSSLKeyDataRsaAdoptEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAADOPTRSA">xmlSecOpenSSLKeyDataRsaAdoptRsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETEVP">xmlSecOpenSSLKeyDataRsaGetEvp</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETKLASS">xmlSecOpenSSLKeyDataRsaGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETRSA">xmlSecOpenSSLKeyDataRsaGetRsa</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAID">xmlSecOpenSSLKeyDataRsaId</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTCERT">xmlSecOpenSSLKeyDataX509AdoptCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTCRL">xmlSecOpenSSLKeyDataX509AdoptCrl</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTKEYCERT">xmlSecOpenSSLKeyDataX509AdoptKeyCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCERT">xmlSecOpenSSLKeyDataX509GetCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCERTSSIZE">xmlSecOpenSSLKeyDataX509GetCertsSize</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCRL">xmlSecOpenSSLKeyDataX509GetCrl</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCRLSSIZE">xmlSecOpenSSLKeyDataX509GetCrlsSize</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETKEYCERT">xmlSecOpenSSLKeyDataX509GetKeyCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETKLASS">xmlSecOpenSSLKeyDataX509GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ID">xmlSecOpenSSLKeyDataX509Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYSMNGRINIT">xmlSecOpenSSLKeysMngrInit</a></p></li>
-<li><p><a href="xmlsec-openssl-bn.html#XMLSECOPENSSLNODEGETBNVALUE">xmlSecOpenSSLNodeGetBNValue</a></p></li>
-<li><p><a href="xmlsec-openssl-bn.html#XMLSECOPENSSLNODESETBNVALUE">xmlSecOpenSSLNodeSetBNValue</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLSETDEFAULTTRUSTEDCERTSFOLDER">xmlSecOpenSSLSetDefaultTrustedCertsFolder</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLSHUTDOWN">xmlSecOpenSSLShutdown</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES128CBCGETKLASS">xmlSecOpenSSLTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES128CBCID">xmlSecOpenSSLTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES192CBCGETKLASS">xmlSecOpenSSLTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES192CBCID">xmlSecOpenSSLTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES256CBCGETKLASS">xmlSecOpenSSLTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES256CBCID">xmlSecOpenSSLTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDES3CBCGETKLASS">xmlSecOpenSSLTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDES3CBCID">xmlSecOpenSSLTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA1GETKLASS">xmlSecOpenSSLTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA1ID">xmlSecOpenSSLTransformDsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA256GETKLASS">xmlSecOpenSSLTransformDsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA256ID">xmlSecOpenSSLTransformDsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA1GETKLASS">xmlSecOpenSSLTransformEcdsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA1ID">xmlSecOpenSSLTransformEcdsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA224GETKLASS">xmlSecOpenSSLTransformEcdsaSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA224ID">xmlSecOpenSSLTransformEcdsaSha224Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA256GETKLASS">xmlSecOpenSSLTransformEcdsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA256ID">xmlSecOpenSSLTransformEcdsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA384GETKLASS">xmlSecOpenSSLTransformEcdsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA384ID">xmlSecOpenSSLTransformEcdsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA512GETKLASS">xmlSecOpenSSLTransformEcdsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA512ID">xmlSecOpenSSLTransformEcdsaSha512Id</a></p></li>
-<li><p><font>xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGost2001GostR3411-94Id</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256Id</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512Id</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-2012-256Id</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-2012-512Id</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecOpenSSLTransformGostR3411-94Id</font></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACMD5GETKLASS">xmlSecOpenSSLTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACMD5ID">xmlSecOpenSSLTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACRIPEMD160GETKLASS">xmlSecOpenSSLTransformHmacRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACRIPEMD160ID">xmlSecOpenSSLTransformHmacRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1GETKLASS">xmlSecOpenSSLTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1ID">xmlSecOpenSSLTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA224GETKLASS">xmlSecOpenSSLTransformHmacSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA224ID">xmlSecOpenSSLTransformHmacSha224Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA256GETKLASS">xmlSecOpenSSLTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA256ID">xmlSecOpenSSLTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA384GETKLASS">xmlSecOpenSSLTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA384ID">xmlSecOpenSSLTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA512GETKLASS">xmlSecOpenSSLTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA512ID">xmlSecOpenSSLTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128GETKLASS">xmlSecOpenSSLTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128ID">xmlSecOpenSSLTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES192GETKLASS">xmlSecOpenSSLTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES192ID">xmlSecOpenSSLTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES256GETKLASS">xmlSecOpenSSLTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES256ID">xmlSecOpenSSLTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3GETKLASS">xmlSecOpenSSLTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3ID">xmlSecOpenSSLTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMMD5GETKLASS">xmlSecOpenSSLTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMMD5ID">xmlSecOpenSSLTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160GETKLASS">xmlSecOpenSSLTransformRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160ID">xmlSecOpenSSLTransformRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAMD5GETKLASS">xmlSecOpenSSLTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAMD5ID">xmlSecOpenSSLTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPGETKLASS">xmlSecOpenSSLTransformRsaOaepGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPID">xmlSecOpenSSLTransformRsaOaepId</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1GETKLASS">xmlSecOpenSSLTransformRsaPkcs1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1ID">xmlSecOpenSSLTransformRsaPkcs1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSARIPEMD160GETKLASS">xmlSecOpenSSLTransformRsaRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSARIPEMD160ID">xmlSecOpenSSLTransformRsaRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1GETKLASS">xmlSecOpenSSLTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1ID">xmlSecOpenSSLTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA224GETKLASS">xmlSecOpenSSLTransformRsaSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA224ID">xmlSecOpenSSLTransformRsaSha224Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA256GETKLASS">xmlSecOpenSSLTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA256ID">xmlSecOpenSSLTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA384GETKLASS">xmlSecOpenSSLTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA384ID">xmlSecOpenSSLTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA512GETKLASS">xmlSecOpenSSLTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA512ID">xmlSecOpenSSLTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1GETKLASS">xmlSecOpenSSLTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1ID">xmlSecOpenSSLTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA224GETKLASS">xmlSecOpenSSLTransformSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA224ID">xmlSecOpenSSLTransformSha224Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA256GETKLASS">xmlSecOpenSSLTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA256ID">xmlSecOpenSSLTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA384GETKLASS">xmlSecOpenSSLTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA384ID">xmlSecOpenSSLTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA512GETKLASS">xmlSecOpenSSLTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA512ID">xmlSecOpenSSLTransformSha512Id</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509CERTGETKEY">xmlSecOpenSSLX509CertGetKey</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADDCERTSFILE">xmlSecOpenSSLX509StoreAddCertsFile</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADDCERTSPATH">xmlSecOpenSSLX509StoreAddCertsPath</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADOPTCERT">xmlSecOpenSSLX509StoreAdoptCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADOPTCRL">xmlSecOpenSSLX509StoreAdoptCrl</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREFINDCERT">xmlSecOpenSSLX509StoreFindCert</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREGETKLASS">xmlSecOpenSSLX509StoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREID">xmlSecOpenSSLX509StoreId</a></p></li>
-<li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREVERIFY">xmlSecOpenSSLX509StoreVerify</a></p></li>
-<li><p><a href="xmlsec-parser.html#XMLSECPARSEFILE">xmlSecParseFile</a></p></li>
-<li><p><a href="xmlsec-parser.html#XMLSECPARSEMEMORYEXT">xmlSecParseMemoryExt</a></p></li>
-<li><p><a href="xmlsec-parser.html#XMLSECPARSEMEMORY">xmlSecParseMemory</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECPRINTXMLSTRING">xmlSecPrintXmlString</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRDEBUGDUMPITEMMETHOD">xmlSecPtrDebugDumpItemMethod</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRDESTROYITEMMETHOD">xmlSecPtrDestroyItemMethod</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRDUPLICATEITEMMETHOD">xmlSecPtrDuplicateItemMethod</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTADD">xmlSecPtrListAdd</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTCHECKID">xmlSecPtrListCheckId</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTCOPY">xmlSecPtrListCopy</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTCREATE">xmlSecPtrListCreate</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTDEBUGDUMP">xmlSecPtrListDebugDump</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTDEBUGXMLDUMP">xmlSecPtrListDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTDESTROY">xmlSecPtrListDestroy</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTDUPLICATE">xmlSecPtrListDuplicate</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTEMPTY">xmlSecPtrListEmpty</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTFINALIZE">xmlSecPtrListFinalize</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTGETITEM">xmlSecPtrListGetItem</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTGETNAME">xmlSecPtrListGetName</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTGETSIZE">xmlSecPtrListGetSize</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTIDUNKNOWN">xmlSecPtrListIdUnknown</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTINITIALIZE">xmlSecPtrListInitialize</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTISVALID">xmlSecPtrListIsValid</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTKLASSGETNAME">xmlSecPtrListKlassGetName</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTKLASS">xmlSecPtrListKlass</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLIST">xmlSecPtrList</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTREMOVEANDRETURN">xmlSecPtrListRemoveAndReturn</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTREMOVE">xmlSecPtrListRemove</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTSETDEFAULTALLOCMODE">xmlSecPtrListSetDefaultAllocMode</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECPTRLISTSET">xmlSecPtrListSet</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECPTR">xmlSecPtr</a></p></li>
-<li><p><font>XMLSEC-PTR-TO-FUNC-IMPL</font></p></li>
-<li><p><font>XMLSEC-PTR-TO-FUNC</font></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKDEBUGDUMP">xmlSecQName2BitMaskDebugDump</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKDEBUGXMLDUMP">xmlSecQName2BitMaskDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETBITMASKFROMSTRING">xmlSecQName2BitMaskGetBitMaskFromString</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETBITMASK">xmlSecQName2BitMaskGetBitMask</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETINFO">xmlSecQName2BitMaskGetInfo</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETSTRINGFROMBITMASK">xmlSecQName2BitMaskGetStringFromBitMask</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKINFOCONSTPTR">xmlSecQName2BitMaskInfoConstPtr</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKINFO">xmlSecQName2BitMaskInfo</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKNODESREAD">xmlSecQName2BitMaskNodesRead</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKNODESWRITE">xmlSecQName2BitMaskNodesWrite</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERATTRIBUTEREAD">xmlSecQName2IntegerAttributeRead</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERATTRIBUTEWRITE">xmlSecQName2IntegerAttributeWrite</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERDEBUGDUMP">xmlSecQName2IntegerDebugDump</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERDEBUGXMLDUMP">xmlSecQName2IntegerDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINFO">xmlSecQName2IntegerGetInfo</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINTEGERFROMSTRING">xmlSecQName2IntegerGetIntegerFromString</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINTEGER">xmlSecQName2IntegerGetInteger</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETSTRINGFROMINTEGER">xmlSecQName2IntegerGetStringFromInteger</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERINFOCONSTPTR">xmlSecQName2IntegerInfoConstPtr</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERINFO">xmlSecQName2IntegerInfo</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERNODEREAD">xmlSecQName2IntegerNodeRead</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERNODEWRITE">xmlSecQName2IntegerNodeWrite</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACECONTENTANDRETURN">xmlSecReplaceContentAndReturn</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACECONTENT">xmlSecReplaceContent</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACENODEANDRETURN">xmlSecReplaceNodeAndReturn</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACENODEBUFFERANDRETURN">xmlSecReplaceNodeBufferAndReturn</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACENODEBUFFER">xmlSecReplaceNodeBuffer</a></p></li>
-<li><p><a href="xmlsec-xmltree.html#XMLSECREPLACENODE">xmlSecReplaceNode</a></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN">xmlSecShutdown</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREADOPTKEY">xmlSecSimpleKeysStoreAdoptKey</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREGETKEYS">xmlSecSimpleKeysStoreGetKeys</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREGETKLASS">xmlSecSimpleKeysStoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID">xmlSecSimpleKeysStoreId</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTORELOAD">xmlSecSimpleKeysStoreLoad</a></p></li>
-<li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTORESAVE">xmlSecSimpleKeysStoreSave</a></p></li>
-<li><p><font>XMLSEC-SIZE-BAD-CAST</font></p></li>
-<li><p><a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a></p></li>
-<li><p><font>XMLSEC-STACK-OF-X509-CRL</font></p></li>
-<li><p><font>XMLSEC-STACK-OF-X509</font></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECSTRINGLISTGETKLASS">xmlSecStringListGetKlass</a></p></li>
-<li><p><a href="xmlsec-list.html#XMLSECSTRINGLISTID">xmlSecStringListId</a></p></li>
-<li><p><font>xmlSecStrPrintf</font></p></li>
-<li><p><font>xmlSecStrVPrintf</font></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLCIPHERREFERENCEADDTRANSFORM">xmlSecTmplCipherReferenceAddTransform</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAADDENCPROPERTY">xmlSecTmplEncDataAddEncProperty</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATACREATE">xmlSecTmplEncDataCreate</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSURECIPHERREFERENCE">xmlSecTmplEncDataEnsureCipherReference</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSURECIPHERVALUE">xmlSecTmplEncDataEnsureCipherValue</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSUREENCPROPERTIES">xmlSecTmplEncDataEnsureEncProperties</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSUREKEYINFO">xmlSecTmplEncDataEnsureKeyInfo</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLENCDATAGETENCMETHODNODE">xmlSecTmplEncDataGetEncMethodNode</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDENCRYPTEDKEY">xmlSecTmplKeyInfoAddEncryptedKey</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDKEYNAME">xmlSecTmplKeyInfoAddKeyName</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDKEYVALUE">xmlSecTmplKeyInfoAddKeyValue</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDRETRIEVALMETHOD">xmlSecTmplKeyInfoAddRetrievalMethod</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDX509DATA">xmlSecTmplKeyInfoAddX509Data</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLMANIFESTADDREFERENCE">xmlSecTmplManifestAddReference</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLOBJECTADDMANIFEST">xmlSecTmplObjectAddManifest</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLOBJECTADDSIGNPROPERTIES">xmlSecTmplObjectAddSignProperties</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLREFERENCEADDTRANSFORM">xmlSecTmplReferenceAddTransform</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLREFERENCELISTADDDATAREFERENCE">xmlSecTmplReferenceListAddDataReference</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLREFERENCELISTADDKEYREFERENCE">xmlSecTmplReferenceListAddKeyReference</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLRETRIEVALMETHODADDTRANSFORM">xmlSecTmplRetrievalMethodAddTransform</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREADDOBJECT">xmlSecTmplSignatureAddObject</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREADDREFERENCE">xmlSecTmplSignatureAddReference</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATURECREATE">xmlSecTmplSignatureCreate</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATURECREATENSPREF">xmlSecTmplSignatureCreateNsPref</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREENSUREKEYINFO">xmlSecTmplSignatureEnsureKeyInfo</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREGETC14NMETHODNODE">xmlSecTmplSignatureGetC14NMethodNode</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREGETSIGNMETHODNODE">xmlSecTmplSignatureGetSignMethodNode</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDC14NINCLNAMESPACES">xmlSecTmplTransformAddC14NInclNamespaces</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDHMACOUTPUTLENGTH">xmlSecTmplTransformAddHmacOutputLength</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDRSAOAEPPARAM">xmlSecTmplTransformAddRsaOaepParam</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPATH2">xmlSecTmplTransformAddXPath2</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPATH">xmlSecTmplTransformAddXPath</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPOINTER">xmlSecTmplTransformAddXPointer</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXSLTSTYLESHEET">xmlSecTmplTransformAddXsltStylesheet</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDCERTIFICATE">xmlSecTmplX509DataAddCertificate</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDCRL">xmlSecTmplX509DataAddCRL</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDISSUERSERIAL">xmlSecTmplX509DataAddIssuerSerial</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDSKI">xmlSecTmplX509DataAddSKI</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDSUBJECTNAME">xmlSecTmplX509DataAddSubjectName</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509ISSUERSERIALADDISSUERNAME">xmlSecTmplX509IssuerSerialAddIssuerName</a></p></li>
-<li><p><a href="xmlsec-templates.html#XMLSECTMPLX509ISSUERSERIALADDSERIALNUMBER">xmlSecTmplX509IssuerSerialAddSerialNumber</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCGETKLASS">xmlSecTransformAes128CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCID">xmlSecTransformAes128CbcId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES192CBCGETKLASS">xmlSecTransformAes192CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES192CBCID">xmlSecTransformAes192CbcId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES256CBCGETKLASS">xmlSecTransformAes256CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES256CBCID">xmlSecTransformAes256CbcId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64GETKLASS">xmlSecTransformBase64GetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64ID">xmlSecTransformBase64Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64SETLINESIZE">xmlSecTransformBase64SetLineSize</a></p></li>
-<li><p><font>XMLSEC-TRANSFORM-BINARY-CHUNK</font></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCHECKID">xmlSecTransformCheckId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCHECKSIZE">xmlSecTransformCheckSize</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT">xmlSecTransformConnect</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATEINPUTBUFFER">xmlSecTransformCreateInputBuffer</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATE">xmlSecTransformCreate</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATEOUTPUTBUFFER">xmlSecTransformCreateOutputBuffer</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXAPPEND">xmlSecTransformCtxAppend</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXBINARYEXECUTE">xmlSecTransformCtxBinaryExecute</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCOPYUSERPREF">xmlSecTransformCtxCopyUserPref</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATEANDAPPEND">xmlSecTransformCtxCreateAndAppend</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATEANDPREPEND">xmlSecTransformCtxCreateAndPrepend</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATE">xmlSecTransformCtxCreate</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDEBUGDUMP">xmlSecTransformCtxDebugDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDEBUGXMLDUMP">xmlSecTransformCtxDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDESTROY">xmlSecTransformCtxDestroy</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXEXECUTE">xmlSecTransformCtxExecute</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXFINALIZE">xmlSecTransformCtxFinalize</a></p></li>
-<li><p><font>XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK</font></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXINITIALIZE">xmlSecTransformCtxInitialize</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX">xmlSecTransformCtx</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXNODEREAD">xmlSecTransformCtxNodeRead</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXNODESLISTREAD">xmlSecTransformCtxNodesListRead</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREEXECUTECALLBACK">xmlSecTransformCtxPreExecuteCallback</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREPARE">xmlSecTransformCtxPrepare</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREPEND">xmlSecTransformCtxPrepend</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXRESET">xmlSecTransformCtxReset</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXSETURI">xmlSecTransformCtxSetUri</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXURIEXECUTE">xmlSecTransformCtxUriExecute</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXXMLEXECUTE">xmlSecTransformCtxXmlExecute</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEBIN">xmlSecTransformDataTypeBin</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE">xmlSecTransformDataType</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEUNKNOWN">xmlSecTransformDataTypeUnknown</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEXML">xmlSecTransformDataTypeXml</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEBUGDUMP">xmlSecTransformDebugDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEBUGXMLDUMP">xmlSecTransformDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTGETDATATYPE">xmlSecTransformDefaultGetDataType</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPOPBIN">xmlSecTransformDefaultPopBin</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPOPXML">xmlSecTransformDefaultPopXml</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPUSHBIN">xmlSecTransformDefaultPushBin</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPUSHXML">xmlSecTransformDefaultPushXml</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDES3CBCGETKLASS">xmlSecTransformDes3CbcGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDES3CBCID">xmlSecTransformDes3CbcId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMDESTROY">xmlSecTransformDestroy</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA1GETKLASS">xmlSecTransformDsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA1ID">xmlSecTransformDsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA256GETKLASS">xmlSecTransformDsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMDSASHA256ID">xmlSecTransformDsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA1GETKLASS">xmlSecTransformEcdsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA1ID">xmlSecTransformEcdsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA224GETKLASS">xmlSecTransformEcdsaSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA224ID">xmlSecTransformEcdsaSha224Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA256GETKLASS">xmlSecTransformEcdsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA256ID">xmlSecTransformEcdsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA384GETKLASS">xmlSecTransformEcdsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA384ID">xmlSecTransformEcdsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA512GETKLASS">xmlSecTransformEcdsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMECDSASHA512ID">xmlSecTransformEcdsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMENVELOPEDGETKLASS">xmlSecTransformEnvelopedGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMENVELOPEDID">xmlSecTransformEnvelopedId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NGETKLASS">xmlSecTransformExclC14NGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NID">xmlSecTransformExclC14NId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NWITHCOMMENTSGETKLASS">xmlSecTransformExclC14NWithCommentsGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NWITHCOMMENTSID">xmlSecTransformExclC14NWithCommentsId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">xmlSecTransformExecuteMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTE">xmlSecTransformExecute</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMFINALIZEMETHOD">xmlSecTransformFinalizeMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMGETDATATYPEMETHOD">xmlSecTransformGetDataTypeMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMGETDATATYPE">xmlSecTransformGetDataType</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMGETNAME">xmlSecTransformGetName</a></p></li>
-<li><p><font>xmlSecTransformGost2001GostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGost2001GostR3411-94Id</font></p></li>
-<li><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-256Id</font></p></li>
-<li><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-512Id</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-2012-256GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-2012-256Id</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-2012-512GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-2012-512Id</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-94GetKlass</font></p></li>
-<li><p><font>xmlSecTransformGostR3411-94Id</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACMD5GETKLASS">xmlSecTransformHmacMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACMD5ID">xmlSecTransformHmacMd5Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACRIPEMD160GETKLASS">xmlSecTransformHmacRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACRIPEMD160ID">xmlSecTransformHmacRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1GETKLASS">xmlSecTransformHmacSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1ID">xmlSecTransformHmacSha1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA224GETKLASS">xmlSecTransformHmacSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA224ID">xmlSecTransformHmacSha224Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA256GETKLASS">xmlSecTransformHmacSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA256ID">xmlSecTransformHmacSha256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA384GETKLASS">xmlSecTransformHmacSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA384ID">xmlSecTransformHmacSha384Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA512GETKLASS">xmlSecTransformHmacSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA512ID">xmlSecTransformHmacSha512Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGDUMP">xmlSecTransformIdListDebugDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGXMLDUMP">xmlSecTransformIdListDebugXmlDump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFINDBYHREF">xmlSecTransformIdListFindByHref</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFINDBYNAME">xmlSecTransformIdListFindByName</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFIND">xmlSecTransformIdListFind</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTGETKLASS">xmlSecTransformIdListGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTID">xmlSecTransformIdListId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSGET">xmlSecTransformIdsGet</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSINIT">xmlSecTransformIdsInit</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSREGISTERDEFAULT">xmlSecTransformIdsRegisterDefault</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSREGISTER">xmlSecTransformIdsRegister</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSSHUTDOWN">xmlSecTransformIdsShutdown</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDUNKNOWN">xmlSecTransformIdUnknown</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11GETKLASS">xmlSecTransformInclC14N11GetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11ID">xmlSecTransformInclC14N11Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11WITHCOMMENTSGETKLASS">xmlSecTransformInclC14N11WithCommentsGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11WITHCOMMENTSID">xmlSecTransformInclC14N11WithCommentsId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NGETKLASS">xmlSecTransformInclC14NGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NID">xmlSecTransformInclC14NId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NWITHCOMMENTSGETKLASS">xmlSecTransformInclC14NWithCommentsGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NWITHCOMMENTSID">xmlSecTransformInclC14NWithCommentsId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINITIALIZEMETHOD">xmlSecTransformInitializeMethod</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURICLOSE">xmlSecTransformInputURIClose</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIGETKLASS">xmlSecTransformInputURIGetKlass</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIID">xmlSecTransformInputURIId</a></p></li>
-<li><p><a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIOPEN">xmlSecTransformInputURIOpen</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMISVALID">xmlSecTransformIsValid</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMKLASSGETNAME">xmlSecTransformKlassGetName</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMKLASS">xmlSecTransformKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES128GETKLASS">xmlSecTransformKWAes128GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES128ID">xmlSecTransformKWAes128Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES192GETKLASS">xmlSecTransformKWAes192GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES192ID">xmlSecTransformKWAes192Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES256GETKLASS">xmlSecTransformKWAes256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES256ID">xmlSecTransformKWAes256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3GETKLASS">xmlSecTransformKWDes3GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3ID">xmlSecTransformKWDes3Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMMD5GETKLASS">xmlSecTransformMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMMD5ID">xmlSecTransformMd5Id</a></p></li>
-<li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETBUFFER">xmlSecTransformMemBufGetBuffer</a></p></li>
-<li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETKLASS">xmlSecTransformMemBufGetKlass</a></p></li>
-<li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFID">xmlSecTransformMemBufId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMMODE">xmlSecTransformMode</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM">xmlSecTransform</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEREADMETHOD">xmlSecTransformNodeReadMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEREAD">xmlSecTransformNodeRead</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEWRITEMETHOD">xmlSecTransformNodeWriteMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMOPERATION">xmlSecTransformOperation</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBINMETHOD">xmlSecTransformPopBinMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBIN">xmlSecTransformPopBin</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXMLMETHOD">xmlSecTransformPopXmlMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXML">xmlSecTransformPopXml</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUMP">xmlSecTransformPump</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBINMETHOD">xmlSecTransformPushBinMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBIN">xmlSecTransformPushBin</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXMLMETHOD">xmlSecTransformPushXmlMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXML">xmlSecTransformPushXml</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVE">xmlSecTransformRemove</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVEXMLTAGSC14NGETKLASS">xmlSecTransformRemoveXmlTagsC14NGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVEXMLTAGSC14NID">xmlSecTransformRemoveXmlTagsC14NId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160GETKLASS">xmlSecTransformRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160ID">xmlSecTransformRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAMD5GETKLASS">xmlSecTransformRsaMd5GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAMD5ID">xmlSecTransformRsaMd5Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPGETKLASS">xmlSecTransformRsaOaepGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPID">xmlSecTransformRsaOaepId</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1GETKLASS">xmlSecTransformRsaPkcs1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1ID">xmlSecTransformRsaPkcs1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSARIPEMD160GETKLASS">xmlSecTransformRsaRipemd160GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSARIPEMD160ID">xmlSecTransformRsaRipemd160Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1GETKLASS">xmlSecTransformRsaSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1ID">xmlSecTransformRsaSha1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA224GETKLASS">xmlSecTransformRsaSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA224ID">xmlSecTransformRsaSha224Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA256GETKLASS">xmlSecTransformRsaSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA256ID">xmlSecTransformRsaSha256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA384GETKLASS">xmlSecTransformRsaSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA384ID">xmlSecTransformRsaSha384Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA512GETKLASS">xmlSecTransformRsaSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA512ID">xmlSecTransformRsaSha512Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYMETHOD">xmlSecTransformSetKeyMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEY">xmlSecTransformSetKey</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQ">xmlSecTransformSetKeyReq</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD">xmlSecTransformSetKeyRequirementsMethod</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA1GETKLASS">xmlSecTransformSha1GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA1ID">xmlSecTransformSha1Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA224GETKLASS">xmlSecTransformSha224GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA224ID">xmlSecTransformSha224Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA256GETKLASS">xmlSecTransformSha256GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA256ID">xmlSecTransformSha256Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA384GETKLASS">xmlSecTransformSha384GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA384ID">xmlSecTransformSha384Id</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA512GETKLASS">xmlSecTransformSha512GetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA512ID">xmlSecTransformSha512Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUS">xmlSecTransformStatus</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEANY">xmlSecTransformUriTypeAny</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPECHECK">xmlSecTransformUriTypeCheck</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEEMPTY">xmlSecTransformUriTypeEmpty</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPELOCAL">xmlSecTransformUriTypeLocal</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPE">xmlSecTransformUriType</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPENONE">xmlSecTransformUriTypeNone</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEREMOTE">xmlSecTransformUriTypeRemote</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPESAMEDOCUMENT">xmlSecTransformUriTypeSameDocument</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEANY">xmlSecTransformUsageAny</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEC14NMETHOD">xmlSecTransformUsageC14NMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEDIGESTMETHOD">xmlSecTransformUsageDigestMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEDSIGTRANSFORM">xmlSecTransformUsageDSigTransform</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEENCRYPTIONMETHOD">xmlSecTransformUsageEncryptionMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE">xmlSecTransformUsage</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGESIGNATUREMETHOD">xmlSecTransformUsageSignatureMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEUNKNOWN">xmlSecTransformUsageUnknown</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD">xmlSecTransformVerifyMethod</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFY">xmlSecTransformVerify</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYNODECONTENT">xmlSecTransformVerifyNodeContent</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKGETKLASS">xmlSecTransformVisa3DHackGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKID">xmlSecTransformVisa3DHackId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKSETID">xmlSecTransformVisa3DHackSetID</a></p></li>
-<li><p><a href="xmlsec-parser.html#XMLSECTRANSFORMXMLPARSERGETKLASS">xmlSecTransformXmlParserGetKlass</a></p></li>
-<li><p><a href="xmlsec-parser.html#XMLSECTRANSFORMXMLPARSERID">xmlSecTransformXmlParserId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATH2GETKLASS">xmlSecTransformXPath2GetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATH2ID">xmlSecTransformXPath2Id</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATHGETKLASS">xmlSecTransformXPathGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATHID">xmlSecTransformXPathId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERGETKLASS">xmlSecTransformXPointerGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERID">xmlSecTransformXPointerId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERSETEXPR">xmlSecTransformXPointerSetExpr</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTGETKLASS">xmlSecTransformXsltGetKlass</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTID">xmlSecTransformXsltId</a></p></li>
-<li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTSETDEFAULTSECURITYPREFS">xmlSecTransformXsltSetDefaultSecurityPrefs</a></p></li>
-<li><p><font>XMLSEC-VERSION-INFO</font></p></li>
-<li><p><font>XMLSEC-VERSION-MAJOR</font></p></li>
-<li><p><font>XMLSEC-VERSION-MINOR</font></p></li>
-<li><p><font>XMLSEC-VERSION</font></p></li>
-<li><p><font>XMLSEC-VERSION-SUBMINOR</font></p></li>
-<li><p><font>XMLSEC-X509DATA-CERTIFICATE-NODE</font></p></li>
-<li><p><font>XMLSEC-X509DATA-CRL-NODE</font></p></li>
-<li><p><font>XMLSEC-X509DATA-DEFAULT</font></p></li>
-<li><p><a href="xmlsec-x509.html#XMLSECX509DATAGETNODECONTENT">xmlSecX509DataGetNodeContent</a></p></li>
-<li><p><font>XMLSEC-X509DATA-ISSUERSERIAL-NODE</font></p></li>
-<li><p><font>XMLSEC-X509DATA-SKI-NODE</font></p></li>
-<li><p><font>XMLSEC-X509DATA-SUBJECTNAME-NODE</font></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECX509STOREGETKLASS">xmlSecX509StoreGetKlass</a></p></li>
-<li><p><a href="xmlsec-app.html#XMLSECX509STOREID">xmlSecX509StoreId</a></p></li>
-</ul>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-x509.html"><b>&lt;&lt;&lt; x509</b></a></td>
-<td align="right"></td>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscng-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-index"></a>XML Security Library Reference Index</h2></div></div></div>
+<p>
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p><font>ATTRIBUTE-UNUSED</font></p></li>
+<li class="listitem"><p><font>UNREFERENCED-PARAMETER</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlEncCtxMode" title="enum xmlEncCtxMode">xmlEncCtxMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecAddChild" title="xmlSecAddChild ()">xmlSecAddChild</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecAddChildNode" title="xmlSecAddChildNode ()">xmlSecAddChildNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecAddIDs" title="xmlSecAddIDs ()">xmlSecAddIDs</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecAddNextSibling" title="xmlSecAddNextSibling ()">xmlSecAddNextSibling</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecAddPrevSibling" title="xmlSecAddPrevSibling ()">xmlSecAddPrevSibling</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode">xmlSecAllocMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecAssert2" title="xmlSecAssert2()">xmlSecAssert2</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecAssert" title="xmlSecAssert()">xmlSecAssert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxCreate" title="xmlSecBase64CtxCreate ()">xmlSecBase64CtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxDestroy" title="xmlSecBase64CtxDestroy ()">xmlSecBase64CtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxFinalize" title="xmlSecBase64CtxFinalize ()">xmlSecBase64CtxFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxFinal" title="xmlSecBase64CtxFinal ()">xmlSecBase64CtxFinal</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxInitialize" title="xmlSecBase64CtxInitialize ()">xmlSecBase64CtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64CtxUpdate" title="xmlSecBase64CtxUpdate ()">xmlSecBase64CtxUpdate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64Decode" title="xmlSecBase64Decode ()">xmlSecBase64Decode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64Encode" title="xmlSecBase64Encode ()">xmlSecBase64Encode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64GetDefaultLineSize" title="xmlSecBase64GetDefaultLineSize ()">xmlSecBase64GetDefaultLineSize</a></p></li>
+<li class="listitem"><p><font>XMLSEC-BASE64-LINESIZE</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-base64.html#xmlSecBase64SetDefaultLineSize" title="xmlSecBase64SetDefaultLineSize ()">xmlSecBase64SetDefaultLineSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask">xmlSecBitMask</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnAdd" title="xmlSecBnAdd ()">xmlSecBnAdd</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnBlobSetNodeValue" title="xmlSecBnBlobSetNodeValue ()">xmlSecBnBlobSetNodeValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnCompare" title="xmlSecBnCompare ()">xmlSecBnCompare</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnCompareReverse" title="xmlSecBnCompareReverse ()">xmlSecBnCompareReverse</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnCreate" title="xmlSecBnCreate ()">xmlSecBnCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnDestroy" title="xmlSecBnDestroy ()">xmlSecBnDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnDiv" title="xmlSecBnDiv ()">xmlSecBnDiv</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnFinalize" title="xmlSecBnFinalize ()">xmlSecBnFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnFormat" title="enum xmlSecBnFormat">xmlSecBnFormat</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnFromDecString" title="xmlSecBnFromDecString ()">xmlSecBnFromDecString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnFromHexString" title="xmlSecBnFromHexString ()">xmlSecBnFromHexString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnFromString" title="xmlSecBnFromString ()">xmlSecBnFromString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnGetData" title="xmlSecBnGetData ()">xmlSecBnGetData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnGetNodeValue" title="xmlSecBnGetNodeValue ()">xmlSecBnGetNodeValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnGetSize" title="xmlSecBnGetSize ()">xmlSecBnGetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnInitialize" title="xmlSecBnInitialize ()">xmlSecBnInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnMul" title="xmlSecBnMul ()">xmlSecBnMul</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnReverse" title="xmlSecBnReverse ()">xmlSecBnReverse</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnSetData" title="xmlSecBnSetData ()">xmlSecBnSetData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnSetNodeValue" title="xmlSecBnSetNodeValue ()">xmlSecBnSetNodeValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnToDecString" title="xmlSecBnToDecString ()">xmlSecBnToDecString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnToHexString" title="xmlSecBnToHexString ()">xmlSecBnToHexString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnToString" title="xmlSecBnToString ()">xmlSecBnToString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-bn.html#xmlSecBnZero" title="xmlSecBnZero ()">xmlSecBnZero</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferAppend" title="xmlSecBufferAppend ()">xmlSecBufferAppend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferBase64NodeContentRead" title="xmlSecBufferBase64NodeContentRead ()">xmlSecBufferBase64NodeContentRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferBase64NodeContentWrite" title="xmlSecBufferBase64NodeContentWrite ()">xmlSecBufferBase64NodeContentWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferCreate" title="xmlSecBufferCreate ()">xmlSecBufferCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferCreateOutputBuffer" title="xmlSecBufferCreateOutputBuffer ()">xmlSecBufferCreateOutputBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferDestroy" title="xmlSecBufferDestroy ()">xmlSecBufferDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferEmpty" title="xmlSecBufferEmpty ()">xmlSecBufferEmpty</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferFinalize" title="xmlSecBufferFinalize ()">xmlSecBufferFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferGetData" title="xmlSecBufferGetData ()">xmlSecBufferGetData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferGetMaxSize" title="xmlSecBufferGetMaxSize ()">xmlSecBufferGetMaxSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferGetSize" title="xmlSecBufferGetSize ()">xmlSecBufferGetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferInitialize" title="xmlSecBufferInitialize ()">xmlSecBufferInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer">xmlSecBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferPrepend" title="xmlSecBufferPrepend ()">xmlSecBufferPrepend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferReadFile" title="xmlSecBufferReadFile ()">xmlSecBufferReadFile</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferRemoveHead" title="xmlSecBufferRemoveHead ()">xmlSecBufferRemoveHead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferRemoveTail" title="xmlSecBufferRemoveTail ()">xmlSecBufferRemoveTail</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferSetData" title="xmlSecBufferSetData ()">xmlSecBufferSetData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferSetDefaultAllocMode" title="xmlSecBufferSetDefaultAllocMode ()">xmlSecBufferSetDefaultAllocMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferSetMaxSize" title="xmlSecBufferSetMaxSize ()">xmlSecBufferSetMaxSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-buffer.html#xmlSecBufferSetSize" title="xmlSecBufferSetSize ()">xmlSecBufferSetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte">xmlSecByte</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecCheckNodeName" title="xmlSecCheckNodeName ()">xmlSecCheckNodeName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionExact" title="xmlSecCheckVersionExact">xmlSecCheckVersionExact</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionExt" title="xmlSecCheckVersionExt ()">xmlSecCheckVersionExt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionMode" title="enum xmlSecCheckVersionMode">xmlSecCheckVersionMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersion" title="xmlSecCheckVersion">xmlSecCheckVersion</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecCreateTree" title="xmlSecCreateTree ()">xmlSecCreateTree</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrAdoptKey" title="xmlSecCryptoAppDefaultKeysMngrAdoptKey ()">xmlSecCryptoAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrInit" title="xmlSecCryptoAppDefaultKeysMngrInit ()">xmlSecCryptoAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrLoad" title="xmlSecCryptoAppDefaultKeysMngrLoad ()">xmlSecCryptoAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrSave" title="xmlSecCryptoAppDefaultKeysMngrSave ()">xmlSecCryptoAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppGetDefaultPwdCallback" title="xmlSecCryptoAppGetDefaultPwdCallback ()">xmlSecCryptoAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppInitMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppInit" title="xmlSecCryptoAppInit ()">xmlSecCryptoAppInit</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeyCertLoadMemoryMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyCertLoadMemory" title="xmlSecCryptoAppKeyCertLoadMemory ()">xmlSecCryptoAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeyCertLoadMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyCertLoad" title="xmlSecCryptoAppKeyCertLoad ()">xmlSecCryptoAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeyLoadMemoryMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyLoadMemory" title="xmlSecCryptoAppKeyLoadMemory ()">xmlSecCryptoAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeyLoadMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeyLoad" title="xmlSecCryptoAppKeyLoad ()">xmlSecCryptoAppKeyLoad</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeysMngrCertLoadMemoryMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoadMemory" title="xmlSecCryptoAppKeysMngrCertLoadMemory ()">xmlSecCryptoAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppKeysMngrCertLoadMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoad" title="xmlSecCryptoAppKeysMngrCertLoad ()">xmlSecCryptoAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppPkcs12LoadMemoryMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppPkcs12LoadMemory" title="xmlSecCryptoAppPkcs12LoadMemory ()">xmlSecCryptoAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppPkcs12LoadMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppPkcs12Load" title="xmlSecCryptoAppPkcs12Load ()">xmlSecCryptoAppPkcs12Load</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoAppShutdownMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoAppShutdown" title="xmlSecCryptoAppShutdown ()">xmlSecCryptoAppShutdown</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoDLFunctions</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms" title="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ()">xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetFunctions" title="xmlSecCryptoDLGetFunctions ()">xmlSecCryptoDLGetFunctions</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions" title="xmlSecCryptoDLGetLibraryFunctions ()">xmlSecCryptoDLGetLibraryFunctions</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLInit" title="xmlSecCryptoDLInit ()">xmlSecCryptoDLInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()">xmlSecCryptoDLLoadLibrary</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLSetFunctions" title="xmlSecCryptoDLSetFunctions ()">xmlSecCryptoDLSetFunctions</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLShutdown" title="xmlSecCryptoDLShutdown ()">xmlSecCryptoDLShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary" title="xmlSecCryptoDLUnloadLibrary ()">xmlSecCryptoDLUnloadLibrary</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-gcrypt</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-gnutls</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-mscng</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-mscrypto</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-nss</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoGetFunctions-openssl</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoInitMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoInit" title="xmlSecCryptoInit ()">xmlSecCryptoInit</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoKeyDataGetKlassMethod</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoKeyDataStoreGetKlassMethod</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoKeysMngrInitMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoKeysMngrInit" title="xmlSecCryptoKeysMngrInit ()">xmlSecCryptoKeysMngrInit</a></p></li>
+<li class="listitem"><p><font>XMLSEC-CRYPTO</font></p></li>
+<li class="listitem"><p><font>xmlSecCryptoShutdownMethod</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecCryptoShutdown" title="xmlSecCryptoShutdown ()">xmlSecCryptoShutdown</a></p></li>
+<li class="listitem"><p><font>xmlSecCryptoTransformGetKlassMethod</font></p></li>
+<li class="listitem"><p><font>XMLSEC-DEPRECATED</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxCreate" title="xmlSecDSigCtxCreate ()">xmlSecDSigCtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDebugDump" title="xmlSecDSigCtxDebugDump ()">xmlSecDSigCtxDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDebugXmlDump" title="xmlSecDSigCtxDebugXmlDump ()">xmlSecDSigCtxDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy" title="xmlSecDSigCtxDestroy ()">xmlSecDSigCtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxEnableReferenceTransform" title="xmlSecDSigCtxEnableReferenceTransform ()">xmlSecDSigCtxEnableReferenceTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxEnableSignatureTransform" title="xmlSecDSigCtxEnableSignatureTransform ()">xmlSecDSigCtxEnableSignatureTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize" title="xmlSecDSigCtxFinalize ()">xmlSecDSigCtxFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxGetPreSignBuffer" title="xmlSecDSigCtxGetPreSignBuffer ()">xmlSecDSigCtxGetPreSignBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize" title="xmlSecDSigCtxInitialize ()">xmlSecDSigCtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxSign" title="xmlSecDSigCtxSign ()">xmlSecDSigCtxSign</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxVerify" title="xmlSecDSigCtxVerify ()">xmlSecDSigCtxVerify</a></p></li>
+<li class="listitem"><p><font>XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS</font></p></li>
+<li class="listitem"><p><font>XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES</font></p></li>
+<li class="listitem"><p><font>XMLSEC-DSIG-FLAGS-STORE-SIGNATURE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES</font></p></li>
+<li class="listitem"><p><font>XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxCreate" title="xmlSecDSigReferenceCtxCreate ()">xmlSecDSigReferenceCtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugDump" title="xmlSecDSigReferenceCtxDebugDump ()">xmlSecDSigReferenceCtxDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugXmlDump" title="xmlSecDSigReferenceCtxDebugXmlDump ()">xmlSecDSigReferenceCtxDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDestroy" title="xmlSecDSigReferenceCtxDestroy ()">xmlSecDSigReferenceCtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxFinalize" title="xmlSecDSigReferenceCtxFinalize ()">xmlSecDSigReferenceCtxFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxGetPreDigestBuffer" title="xmlSecDSigReferenceCtxGetPreDigestBuffer ()">xmlSecDSigReferenceCtxGetPreDigestBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxInitialize" title="xmlSecDSigReferenceCtxInitialize ()">xmlSecDSigReferenceCtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListGetKlass" title="xmlSecDSigReferenceCtxListGetKlass ()">xmlSecDSigReferenceCtxListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListId" title="xmlSecDSigReferenceCtxListId">xmlSecDSigReferenceCtxListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx">xmlSecDSigReferenceCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxProcessNode" title="xmlSecDSigReferenceCtxProcessNode ()">xmlSecDSigReferenceCtxProcessNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin" title="enum xmlSecDSigReferenceOrigin">xmlSecDSigReferenceOrigin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigStatus" title="enum xmlSecDSigStatus">xmlSecDSigStatus</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxBinaryEncrypt" title="xmlSecEncCtxBinaryEncrypt ()">xmlSecEncCtxBinaryEncrypt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCopyUserPref" title="xmlSecEncCtxCopyUserPref ()">xmlSecEncCtxCopyUserPref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCreate" title="xmlSecEncCtxCreate ()">xmlSecEncCtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDebugDump" title="xmlSecEncCtxDebugDump ()">xmlSecEncCtxDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDebugXmlDump" title="xmlSecEncCtxDebugXmlDump ()">xmlSecEncCtxDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDecrypt" title="xmlSecEncCtxDecrypt ()">xmlSecEncCtxDecrypt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDecryptToBuffer" title="xmlSecEncCtxDecryptToBuffer ()">xmlSecEncCtxDecryptToBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDestroy" title="xmlSecEncCtxDestroy ()">xmlSecEncCtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxFinalize" title="xmlSecEncCtxFinalize ()">xmlSecEncCtxFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxInitialize" title="xmlSecEncCtxInitialize ()">xmlSecEncCtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxReset" title="xmlSecEncCtxReset ()">xmlSecEncCtxReset</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxUriEncrypt" title="xmlSecEncCtxUriEncrypt ()">xmlSecEncCtxUriEncrypt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxXmlEncrypt" title="xmlSecEncCtxXmlEncrypt ()">xmlSecEncCtxXmlEncrypt</a></p></li>
+<li class="listitem"><p><font>XMLSEC-ENC-RETURN-REPLACED-NODE</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecEnsureEmptyChild" title="xmlSecEnsureEmptyChild ()">xmlSecEnsureEmptyChild</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecError" title="xmlSecError ()">xmlSecError</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsCallback" title="xmlSecErrorsCallback ()">xmlSecErrorsCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsDefaultCallbackEnableOutput" title="xmlSecErrorsDefaultCallbackEnableOutput ()">xmlSecErrorsDefaultCallbackEnableOutput</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsDefaultCallback" title="xmlSecErrorsDefaultCallback ()">xmlSecErrorsDefaultCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsGetCode" title="xmlSecErrorsGetCode ()">xmlSecErrorsGetCode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsGetMsg" title="xmlSecErrorsGetMsg ()">xmlSecErrorsGetMsg</a></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-HERE</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsInit" title="xmlSecErrorsInit ()">xmlSecErrorsInit</a></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-MAX-NUMBER</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-NO-MESSAGE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-ASSERTION</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-HAS-EXPIRED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-ISSUER-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-NOT-FOUND</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-NOT-YET-VALID</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-REVOKED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CERT-VERIFY-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-CRYPTO-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-DATA-NOT-MATCH</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-DISABLED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-DSIG-NO-REFERENCES</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-CONFIG</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-DATA</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-FORMAT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-KEY-DATA</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-NODE-CONTENT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-OPERATION</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-RESULT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-SIZE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-STATUS</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-TRANSFORM</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-TYPE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-URI-TYPE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-INVALID-VERSION</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-IO-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-KEYDATA-DISABLED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-KEY-NOT-FOUND</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-MALLOC-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-NODE-NOT-FOUND</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-NOT-IMPLEMENTED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-STRDUP-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-TRANSFORM-DISABLED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-UNEXPECTED-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-XML-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-XMLSEC-FAILED</font></p></li>
+<li class="listitem"><p><font>XMLSEC-ERRORS-R-XSLT-FAILED</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsSafeString" title="xmlSecErrorsSafeString()">xmlSecErrorsSafeString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsSetCallback" title="xmlSecErrorsSetCallback ()">xmlSecErrorsSetCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-errors.html#xmlSecErrorsShutdown" title="xmlSecErrorsShutdown ()">xmlSecErrorsShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecFindChild" title="xmlSecFindChild ()">xmlSecFindChild</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecFindNode" title="xmlSecFindNode ()">xmlSecFindNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecFindParent" title="xmlSecFindParent ()">xmlSecFindParent</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecFindSibling" title="xmlSecFindSibling ()">xmlSecFindSibling</a></p></li>
+<li class="listitem"><p><font>XMLSEC-FUNC-TO-PTR-IMPL</font></p></li>
+<li class="listitem"><p><font>XMLSEC-FUNC-TO-PTR</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrAdoptKey" title="xmlSecGCryptAppDefaultKeysMngrAdoptKey ()">xmlSecGCryptAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrInit" title="xmlSecGCryptAppDefaultKeysMngrInit ()">xmlSecGCryptAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrLoad" title="xmlSecGCryptAppDefaultKeysMngrLoad ()">xmlSecGCryptAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrSave" title="xmlSecGCryptAppDefaultKeysMngrSave ()">xmlSecGCryptAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppGetDefaultPwdCallback" title="xmlSecGCryptAppGetDefaultPwdCallback ()">xmlSecGCryptAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppInit" title="xmlSecGCryptAppInit ()">xmlSecGCryptAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoadMemory" title="xmlSecGCryptAppKeyCertLoadMemory ()">xmlSecGCryptAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoad" title="xmlSecGCryptAppKeyCertLoad ()">xmlSecGCryptAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoadMemory" title="xmlSecGCryptAppKeyLoadMemory ()">xmlSecGCryptAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoad" title="xmlSecGCryptAppKeyLoad ()">xmlSecGCryptAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoadMemory" title="xmlSecGCryptAppKeysMngrCertLoadMemory ()">xmlSecGCryptAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoad" title="xmlSecGCryptAppKeysMngrCertLoad ()">xmlSecGCryptAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12LoadMemory" title="xmlSecGCryptAppPkcs12LoadMemory ()">xmlSecGCryptAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12Load" title="xmlSecGCryptAppPkcs12Load ()">xmlSecGCryptAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-app.html#xmlSecGCryptAppShutdown" title="xmlSecGCryptAppShutdown ()">xmlSecGCryptAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptGenerateRandom" title="xmlSecGCryptGenerateRandom ()">xmlSecGCryptGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacGetMinOutputLength" title="xmlSecGCryptHmacGetMinOutputLength ()">xmlSecGCryptHmacGetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacSetMinOutputLength" title="xmlSecGCryptHmacSetMinOutputLength ()">xmlSecGCryptHmacSetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptInit" title="xmlSecGCryptInit ()">xmlSecGCryptInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesGetKlass" title="xmlSecGCryptKeyDataAesGetKlass ()">xmlSecGCryptKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesId" title="xmlSecGCryptKeyDataAesId">xmlSecGCryptKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesSet" title="xmlSecGCryptKeyDataAesSet ()">xmlSecGCryptKeyDataAesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesGetKlass" title="xmlSecGCryptKeyDataDesGetKlass ()">xmlSecGCryptKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesId" title="xmlSecGCryptKeyDataDesId">xmlSecGCryptKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesSet" title="xmlSecGCryptKeyDataDesSet ()">xmlSecGCryptKeyDataDesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKey" title="xmlSecGCryptKeyDataDsaAdoptKey ()">xmlSecGCryptKeyDataDsaAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKeyPair" title="xmlSecGCryptKeyDataDsaAdoptKeyPair ()">xmlSecGCryptKeyDataDsaAdoptKeyPair</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetKlass" title="xmlSecGCryptKeyDataDsaGetKlass ()">xmlSecGCryptKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPrivateKey" title="xmlSecGCryptKeyDataDsaGetPrivateKey ()">xmlSecGCryptKeyDataDsaGetPrivateKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPublicKey" title="xmlSecGCryptKeyDataDsaGetPublicKey ()">xmlSecGCryptKeyDataDsaGetPublicKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaId" title="xmlSecGCryptKeyDataDsaId">xmlSecGCryptKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacGetKlass" title="xmlSecGCryptKeyDataHmacGetKlass ()">xmlSecGCryptKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacId" title="xmlSecGCryptKeyDataHmacId">xmlSecGCryptKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacSet" title="xmlSecGCryptKeyDataHmacSet ()">xmlSecGCryptKeyDataHmacSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKey" title="xmlSecGCryptKeyDataRsaAdoptKey ()">xmlSecGCryptKeyDataRsaAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKeyPair" title="xmlSecGCryptKeyDataRsaAdoptKeyPair ()">xmlSecGCryptKeyDataRsaAdoptKeyPair</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetKlass" title="xmlSecGCryptKeyDataRsaGetKlass ()">xmlSecGCryptKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPrivateKey" title="xmlSecGCryptKeyDataRsaGetPrivateKey ()">xmlSecGCryptKeyDataRsaGetPrivateKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPublicKey" title="xmlSecGCryptKeyDataRsaGetPublicKey ()">xmlSecGCryptKeyDataRsaGetPublicKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaId" title="xmlSecGCryptKeyDataRsaId">xmlSecGCryptKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeysMngrInit" title="xmlSecGCryptKeysMngrInit ()">xmlSecGCryptKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptShutdown" title="xmlSecGCryptShutdown ()">xmlSecGCryptShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcGetKlass" title="xmlSecGCryptTransformAes128CbcGetKlass ()">xmlSecGCryptTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcId" title="xmlSecGCryptTransformAes128CbcId">xmlSecGCryptTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcGetKlass" title="xmlSecGCryptTransformAes192CbcGetKlass ()">xmlSecGCryptTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcId" title="xmlSecGCryptTransformAes192CbcId">xmlSecGCryptTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcGetKlass" title="xmlSecGCryptTransformAes256CbcGetKlass ()">xmlSecGCryptTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcId" title="xmlSecGCryptTransformAes256CbcId">xmlSecGCryptTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcGetKlass" title="xmlSecGCryptTransformDes3CbcGetKlass ()">xmlSecGCryptTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcId" title="xmlSecGCryptTransformDes3CbcId">xmlSecGCryptTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1GetKlass" title="xmlSecGCryptTransformDsaSha1GetKlass ()">xmlSecGCryptTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1Id" title="xmlSecGCryptTransformDsaSha1Id">xmlSecGCryptTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5GetKlass" title="xmlSecGCryptTransformHmacMd5GetKlass ()">xmlSecGCryptTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5Id" title="xmlSecGCryptTransformHmacMd5Id">xmlSecGCryptTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160GetKlass" title="xmlSecGCryptTransformHmacRipemd160GetKlass ()">xmlSecGCryptTransformHmacRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160Id" title="xmlSecGCryptTransformHmacRipemd160Id">xmlSecGCryptTransformHmacRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1GetKlass" title="xmlSecGCryptTransformHmacSha1GetKlass ()">xmlSecGCryptTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1Id" title="xmlSecGCryptTransformHmacSha1Id">xmlSecGCryptTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256GetKlass" title="xmlSecGCryptTransformHmacSha256GetKlass ()">xmlSecGCryptTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256Id" title="xmlSecGCryptTransformHmacSha256Id">xmlSecGCryptTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384GetKlass" title="xmlSecGCryptTransformHmacSha384GetKlass ()">xmlSecGCryptTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384Id" title="xmlSecGCryptTransformHmacSha384Id">xmlSecGCryptTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512GetKlass" title="xmlSecGCryptTransformHmacSha512GetKlass ()">xmlSecGCryptTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512Id" title="xmlSecGCryptTransformHmacSha512Id">xmlSecGCryptTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128GetKlass" title="xmlSecGCryptTransformKWAes128GetKlass ()">xmlSecGCryptTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128Id" title="xmlSecGCryptTransformKWAes128Id">xmlSecGCryptTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192GetKlass" title="xmlSecGCryptTransformKWAes192GetKlass ()">xmlSecGCryptTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192Id" title="xmlSecGCryptTransformKWAes192Id">xmlSecGCryptTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256GetKlass" title="xmlSecGCryptTransformKWAes256GetKlass ()">xmlSecGCryptTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256Id" title="xmlSecGCryptTransformKWAes256Id">xmlSecGCryptTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3GetKlass" title="xmlSecGCryptTransformKWDes3GetKlass ()">xmlSecGCryptTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3Id" title="xmlSecGCryptTransformKWDes3Id">xmlSecGCryptTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5GetKlass" title="xmlSecGCryptTransformMd5GetKlass ()">xmlSecGCryptTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5Id" title="xmlSecGCryptTransformMd5Id">xmlSecGCryptTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160GetKlass" title="xmlSecGCryptTransformRipemd160GetKlass ()">xmlSecGCryptTransformRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160Id" title="xmlSecGCryptTransformRipemd160Id">xmlSecGCryptTransformRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5GetKlass" title="xmlSecGCryptTransformRsaMd5GetKlass ()">xmlSecGCryptTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5Id" title="xmlSecGCryptTransformRsaMd5Id">xmlSecGCryptTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160GetKlass" title="xmlSecGCryptTransformRsaRipemd160GetKlass ()">xmlSecGCryptTransformRsaRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160Id" title="xmlSecGCryptTransformRsaRipemd160Id">xmlSecGCryptTransformRsaRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1GetKlass" title="xmlSecGCryptTransformRsaSha1GetKlass ()">xmlSecGCryptTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1Id" title="xmlSecGCryptTransformRsaSha1Id">xmlSecGCryptTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256GetKlass" title="xmlSecGCryptTransformRsaSha256GetKlass ()">xmlSecGCryptTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256Id" title="xmlSecGCryptTransformRsaSha256Id">xmlSecGCryptTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384GetKlass" title="xmlSecGCryptTransformRsaSha384GetKlass ()">xmlSecGCryptTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384Id" title="xmlSecGCryptTransformRsaSha384Id">xmlSecGCryptTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512GetKlass" title="xmlSecGCryptTransformRsaSha512GetKlass ()">xmlSecGCryptTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512Id" title="xmlSecGCryptTransformRsaSha512Id">xmlSecGCryptTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1GetKlass" title="xmlSecGCryptTransformSha1GetKlass ()">xmlSecGCryptTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1Id" title="xmlSecGCryptTransformSha1Id">xmlSecGCryptTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256GetKlass" title="xmlSecGCryptTransformSha256GetKlass ()">xmlSecGCryptTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256Id" title="xmlSecGCryptTransformSha256Id">xmlSecGCryptTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384GetKlass" title="xmlSecGCryptTransformSha384GetKlass ()">xmlSecGCryptTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384Id" title="xmlSecGCryptTransformSha384Id">xmlSecGCryptTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512GetKlass" title="xmlSecGCryptTransformSha512GetKlass ()">xmlSecGCryptTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512Id" title="xmlSecGCryptTransformSha512Id">xmlSecGCryptTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecGetDefaultCrypto" title="xmlSecGetDefaultCrypto ()">xmlSecGetDefaultCrypto</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecGetDefaultLineFeed" title="xmlSecGetDefaultLineFeed ()">xmlSecGetDefaultLineFeed</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecGetHex" title="xmlSecGetHex()">xmlSecGetHex</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecGetKeyCallback" title="xmlSecGetKeyCallback ()">xmlSecGetKeyCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecGetNextElementNode" title="xmlSecGetNextElementNode ()">xmlSecGetNextElementNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecGetNodeNsHref" title="xmlSecGetNodeNsHref ()">xmlSecGetNodeNsHref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecGetQName" title="xmlSecGetQName ()">xmlSecGetQName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrAdoptKey" title="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ()">xmlSecGnuTLSAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrInit" title="xmlSecGnuTLSAppDefaultKeysMngrInit ()">xmlSecGnuTLSAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrLoad" title="xmlSecGnuTLSAppDefaultKeysMngrLoad ()">xmlSecGnuTLSAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrSave" title="xmlSecGnuTLSAppDefaultKeysMngrSave ()">xmlSecGnuTLSAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppGetDefaultPwdCallback" title="xmlSecGnuTLSAppGetDefaultPwdCallback ()">xmlSecGnuTLSAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppInit" title="xmlSecGnuTLSAppInit ()">xmlSecGnuTLSAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoadMemory" title="xmlSecGnuTLSAppKeyCertLoadMemory ()">xmlSecGnuTLSAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoad" title="xmlSecGnuTLSAppKeyCertLoad ()">xmlSecGnuTLSAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoadMemory" title="xmlSecGnuTLSAppKeyLoadMemory ()">xmlSecGnuTLSAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoad" title="xmlSecGnuTLSAppKeyLoad ()">xmlSecGnuTLSAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoadMemory" title="xmlSecGnuTLSAppKeysMngrCertLoadMemory ()">xmlSecGnuTLSAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoad" title="xmlSecGnuTLSAppKeysMngrCertLoad ()">xmlSecGnuTLSAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12LoadMemory" title="xmlSecGnuTLSAppPkcs12LoadMemory ()">xmlSecGnuTLSAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12Load" title="xmlSecGnuTLSAppPkcs12Load ()">xmlSecGnuTLSAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-app.html#xmlSecGnuTLSAppShutdown" title="xmlSecGnuTLSAppShutdown ()">xmlSecGnuTLSAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSGenerateRandom" title="xmlSecGnuTLSGenerateRandom ()">xmlSecGnuTLSGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacGetMinOutputLength" title="xmlSecGnuTLSHmacGetMinOutputLength ()">xmlSecGnuTLSHmacGetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacSetMinOutputLength" title="xmlSecGnuTLSHmacSetMinOutputLength ()">xmlSecGnuTLSHmacSetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSInit" title="xmlSecGnuTLSInit ()">xmlSecGnuTLSInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesGetKlass" title="xmlSecGnuTLSKeyDataAesGetKlass ()">xmlSecGnuTLSKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesId" title="xmlSecGnuTLSKeyDataAesId">xmlSecGnuTLSKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesSet" title="xmlSecGnuTLSKeyDataAesSet ()">xmlSecGnuTLSKeyDataAesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesGetKlass" title="xmlSecGnuTLSKeyDataDesGetKlass ()">xmlSecGnuTLSKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesId" title="xmlSecGnuTLSKeyDataDesId">xmlSecGnuTLSKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesSet" title="xmlSecGnuTLSKeyDataDesSet ()">xmlSecGnuTLSKeyDataDesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPrivateKey" title="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ()">xmlSecGnuTLSKeyDataDsaAdoptPrivateKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPublicKey" title="xmlSecGnuTLSKeyDataDsaAdoptPublicKey ()">xmlSecGnuTLSKeyDataDsaAdoptPublicKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaGetKlass" title="xmlSecGnuTLSKeyDataDsaGetKlass ()">xmlSecGnuTLSKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaId" title="xmlSecGnuTLSKeyDataDsaId">xmlSecGnuTLSKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacGetKlass" title="xmlSecGnuTLSKeyDataHmacGetKlass ()">xmlSecGnuTLSKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacId" title="xmlSecGnuTLSKeyDataHmacId">xmlSecGnuTLSKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacSet" title="xmlSecGnuTLSKeyDataHmacSet ()">xmlSecGnuTLSKeyDataHmacSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertGetKlass" title="xmlSecGnuTLSKeyDataRawX509CertGetKlass ()">xmlSecGnuTLSKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertId" title="xmlSecGnuTLSKeyDataRawX509CertId">xmlSecGnuTLSKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPrivateKey" title="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ()">xmlSecGnuTLSKeyDataRsaAdoptPrivateKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPublicKey" title="xmlSecGnuTLSKeyDataRsaAdoptPublicKey ()">xmlSecGnuTLSKeyDataRsaAdoptPublicKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaGetKlass" title="xmlSecGnuTLSKeyDataRsaGetKlass ()">xmlSecGnuTLSKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaId" title="xmlSecGnuTLSKeyDataRsaId">xmlSecGnuTLSKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCert" title="xmlSecGnuTLSKeyDataX509AdoptCert ()">xmlSecGnuTLSKeyDataX509AdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCrl" title="xmlSecGnuTLSKeyDataX509AdoptCrl ()">xmlSecGnuTLSKeyDataX509AdoptCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptKeyCert" title="xmlSecGnuTLSKeyDataX509AdoptKeyCert ()">xmlSecGnuTLSKeyDataX509AdoptKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCert" title="xmlSecGnuTLSKeyDataX509GetCert ()">xmlSecGnuTLSKeyDataX509GetCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCertsSize" title="xmlSecGnuTLSKeyDataX509GetCertsSize ()">xmlSecGnuTLSKeyDataX509GetCertsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrl" title="xmlSecGnuTLSKeyDataX509GetCrl ()">xmlSecGnuTLSKeyDataX509GetCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrlsSize" title="xmlSecGnuTLSKeyDataX509GetCrlsSize ()">xmlSecGnuTLSKeyDataX509GetCrlsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKeyCert" title="xmlSecGnuTLSKeyDataX509GetKeyCert ()">xmlSecGnuTLSKeyDataX509GetKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKlass" title="xmlSecGnuTLSKeyDataX509GetKlass ()">xmlSecGnuTLSKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509Id" title="xmlSecGnuTLSKeyDataX509Id">xmlSecGnuTLSKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeysMngrInit" title="xmlSecGnuTLSKeysMngrInit ()">xmlSecGnuTLSKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSShutdown" title="xmlSecGnuTLSShutdown ()">xmlSecGnuTLSShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcGetKlass" title="xmlSecGnuTLSTransformAes128CbcGetKlass ()">xmlSecGnuTLSTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcId" title="xmlSecGnuTLSTransformAes128CbcId">xmlSecGnuTLSTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcGetKlass" title="xmlSecGnuTLSTransformAes192CbcGetKlass ()">xmlSecGnuTLSTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcId" title="xmlSecGnuTLSTransformAes192CbcId">xmlSecGnuTLSTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcGetKlass" title="xmlSecGnuTLSTransformAes256CbcGetKlass ()">xmlSecGnuTLSTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcId" title="xmlSecGnuTLSTransformAes256CbcId">xmlSecGnuTLSTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcGetKlass" title="xmlSecGnuTLSTransformDes3CbcGetKlass ()">xmlSecGnuTLSTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcId" title="xmlSecGnuTLSTransformDes3CbcId">xmlSecGnuTLSTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1GetKlass" title="xmlSecGnuTLSTransformDsaSha1GetKlass ()">xmlSecGnuTLSTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1Id" title="xmlSecGnuTLSTransformDsaSha1Id">xmlSecGnuTLSTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5GetKlass" title="xmlSecGnuTLSTransformHmacMd5GetKlass ()">xmlSecGnuTLSTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5Id" title="xmlSecGnuTLSTransformHmacMd5Id">xmlSecGnuTLSTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160GetKlass" title="xmlSecGnuTLSTransformHmacRipemd160GetKlass ()">xmlSecGnuTLSTransformHmacRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160Id" title="xmlSecGnuTLSTransformHmacRipemd160Id">xmlSecGnuTLSTransformHmacRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1GetKlass" title="xmlSecGnuTLSTransformHmacSha1GetKlass ()">xmlSecGnuTLSTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1Id" title="xmlSecGnuTLSTransformHmacSha1Id">xmlSecGnuTLSTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256GetKlass" title="xmlSecGnuTLSTransformHmacSha256GetKlass ()">xmlSecGnuTLSTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256Id" title="xmlSecGnuTLSTransformHmacSha256Id">xmlSecGnuTLSTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384GetKlass" title="xmlSecGnuTLSTransformHmacSha384GetKlass ()">xmlSecGnuTLSTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384Id" title="xmlSecGnuTLSTransformHmacSha384Id">xmlSecGnuTLSTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512GetKlass" title="xmlSecGnuTLSTransformHmacSha512GetKlass ()">xmlSecGnuTLSTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512Id" title="xmlSecGnuTLSTransformHmacSha512Id">xmlSecGnuTLSTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128GetKlass" title="xmlSecGnuTLSTransformKWAes128GetKlass ()">xmlSecGnuTLSTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128Id" title="xmlSecGnuTLSTransformKWAes128Id">xmlSecGnuTLSTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192GetKlass" title="xmlSecGnuTLSTransformKWAes192GetKlass ()">xmlSecGnuTLSTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192Id" title="xmlSecGnuTLSTransformKWAes192Id">xmlSecGnuTLSTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256GetKlass" title="xmlSecGnuTLSTransformKWAes256GetKlass ()">xmlSecGnuTLSTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256Id" title="xmlSecGnuTLSTransformKWAes256Id">xmlSecGnuTLSTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3GetKlass" title="xmlSecGnuTLSTransformKWDes3GetKlass ()">xmlSecGnuTLSTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3Id" title="xmlSecGnuTLSTransformKWDes3Id">xmlSecGnuTLSTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5GetKlass" title="xmlSecGnuTLSTransformMd5GetKlass ()">xmlSecGnuTLSTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5Id" title="xmlSecGnuTLSTransformMd5Id">xmlSecGnuTLSTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160GetKlass" title="xmlSecGnuTLSTransformRipemd160GetKlass ()">xmlSecGnuTLSTransformRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160Id" title="xmlSecGnuTLSTransformRipemd160Id">xmlSecGnuTLSTransformRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5GetKlass" title="xmlSecGnuTLSTransformRsaMd5GetKlass ()">xmlSecGnuTLSTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5Id" title="xmlSecGnuTLSTransformRsaMd5Id">xmlSecGnuTLSTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160GetKlass" title="xmlSecGnuTLSTransformRsaRipemd160GetKlass ()">xmlSecGnuTLSTransformRsaRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160Id" title="xmlSecGnuTLSTransformRsaRipemd160Id">xmlSecGnuTLSTransformRsaRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1GetKlass" title="xmlSecGnuTLSTransformRsaSha1GetKlass ()">xmlSecGnuTLSTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1Id" title="xmlSecGnuTLSTransformRsaSha1Id">xmlSecGnuTLSTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256GetKlass" title="xmlSecGnuTLSTransformRsaSha256GetKlass ()">xmlSecGnuTLSTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256Id" title="xmlSecGnuTLSTransformRsaSha256Id">xmlSecGnuTLSTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384GetKlass" title="xmlSecGnuTLSTransformRsaSha384GetKlass ()">xmlSecGnuTLSTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384Id" title="xmlSecGnuTLSTransformRsaSha384Id">xmlSecGnuTLSTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512GetKlass" title="xmlSecGnuTLSTransformRsaSha512GetKlass ()">xmlSecGnuTLSTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512Id" title="xmlSecGnuTLSTransformRsaSha512Id">xmlSecGnuTLSTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1GetKlass" title="xmlSecGnuTLSTransformSha1GetKlass ()">xmlSecGnuTLSTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1Id" title="xmlSecGnuTLSTransformSha1Id">xmlSecGnuTLSTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256GetKlass" title="xmlSecGnuTLSTransformSha256GetKlass ()">xmlSecGnuTLSTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256Id" title="xmlSecGnuTLSTransformSha256Id">xmlSecGnuTLSTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384GetKlass" title="xmlSecGnuTLSTransformSha384GetKlass ()">xmlSecGnuTLSTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384Id" title="xmlSecGnuTLSTransformSha384Id">xmlSecGnuTLSTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512GetKlass" title="xmlSecGnuTLSTransformSha512GetKlass ()">xmlSecGnuTLSTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512Id" title="xmlSecGnuTLSTransformSha512Id">xmlSecGnuTLSTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509CertGetKey" title="xmlSecGnuTLSX509CertGetKey ()">xmlSecGnuTLSX509CertGetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreAdoptCert" title="xmlSecGnuTLSX509StoreAdoptCert ()">xmlSecGnuTLSX509StoreAdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreFindCert" title="xmlSecGnuTLSX509StoreFindCert ()">xmlSecGnuTLSX509StoreFindCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreGetKlass" title="xmlSecGnuTLSX509StoreGetKlass ()">xmlSecGnuTLSX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreId" title="xmlSecGnuTLSX509StoreId">xmlSecGnuTLSX509StoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreVerify" title="xmlSecGnuTLSX509StoreVerify ()">xmlSecGnuTLSX509StoreVerify</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecImportGetPersistKey" title="xmlSecImportGetPersistKey ()">xmlSecImportGetPersistKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecImportSetPersistKey" title="xmlSecImportSetPersistKey ()">xmlSecImportSetPersistKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()">xmlSecInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecIOCleanupCallbacks" title="xmlSecIOCleanupCallbacks ()">xmlSecIOCleanupCallbacks</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecIOInit" title="xmlSecIOInit ()">xmlSecIOInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecIORegisterCallbacks" title="xmlSecIORegisterCallbacks ()">xmlSecIORegisterCallbacks</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecIORegisterDefaultCallbacks" title="xmlSecIORegisterDefaultCallbacks ()">xmlSecIORegisterDefaultCallbacks</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecIOShutdown" title="xmlSecIOShutdown ()">xmlSecIOShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecIsEmptyNode" title="xmlSecIsEmptyNode ()">xmlSecIsEmptyNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecIsEmptyString" title="xmlSecIsEmptyString ()">xmlSecIsEmptyString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecIsHex" title="xmlSecIsHex()">xmlSecIsHex</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyAdoptData" title="xmlSecKeyAdoptData ()">xmlSecKeyAdoptData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyCheckId" title="xmlSecKeyCheckId()">xmlSecKeyCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyCopy" title="xmlSecKeyCopy ()">xmlSecKeyCopy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyCreate" title="xmlSecKeyCreate ()">xmlSecKeyCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataAesGetKlass" title="xmlSecKeyDataAesGetKlass ()">xmlSecKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataAesId" title="xmlSecKeyDataAesId">xmlSecKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinarySize" title="xmlSecKeyDataBinarySize">xmlSecKeyDataBinarySize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinRead" title="xmlSecKeyDataBinaryValueBinRead ()">xmlSecKeyDataBinaryValueBinRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinWrite" title="xmlSecKeyDataBinaryValueBinWrite ()">xmlSecKeyDataBinaryValueBinWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugDump" title="xmlSecKeyDataBinaryValueDebugDump ()">xmlSecKeyDataBinaryValueDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugXmlDump" title="xmlSecKeyDataBinaryValueDebugXmlDump ()">xmlSecKeyDataBinaryValueDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDuplicate" title="xmlSecKeyDataBinaryValueDuplicate ()">xmlSecKeyDataBinaryValueDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueFinalize" title="xmlSecKeyDataBinaryValueFinalize ()">xmlSecKeyDataBinaryValueFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetBuffer" title="xmlSecKeyDataBinaryValueGetBuffer ()">xmlSecKeyDataBinaryValueGetBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetSize" title="xmlSecKeyDataBinaryValueGetSize ()">xmlSecKeyDataBinaryValueGetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueInitialize" title="xmlSecKeyDataBinaryValueInitialize ()">xmlSecKeyDataBinaryValueInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueSetBuffer" title="xmlSecKeyDataBinaryValueSetBuffer ()">xmlSecKeyDataBinaryValueSetBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlRead" title="xmlSecKeyDataBinaryValueXmlRead ()">xmlSecKeyDataBinaryValueXmlRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlWrite" title="xmlSecKeyDataBinaryValueXmlWrite ()">xmlSecKeyDataBinaryValueXmlWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinReadMethod" title="xmlSecKeyDataBinReadMethod ()">xmlSecKeyDataBinReadMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinRead" title="xmlSecKeyDataBinRead ()">xmlSecKeyDataBinRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinWriteMethod" title="xmlSecKeyDataBinWriteMethod ()">xmlSecKeyDataBinWriteMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinWrite" title="xmlSecKeyDataBinWrite ()">xmlSecKeyDataBinWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckId" title="xmlSecKeyDataCheckId()">xmlSecKeyDataCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckSize" title="xmlSecKeyDataCheckSize()">xmlSecKeyDataCheckSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckUsage" title="xmlSecKeyDataCheckUsage()">xmlSecKeyDataCheckUsage</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCreate" title="xmlSecKeyDataCreate ()">xmlSecKeyDataCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDumpMethod" title="xmlSecKeyDataDebugDumpMethod ()">xmlSecKeyDataDebugDumpMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDump" title="xmlSecKeyDataDebugDump ()">xmlSecKeyDataDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugXmlDump" title="xmlSecKeyDataDebugXmlDump ()">xmlSecKeyDataDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataDesGetKlass" title="xmlSecKeyDataDesGetKlass ()">xmlSecKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataDesId" title="xmlSecKeyDataDesId">xmlSecKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDestroy" title="xmlSecKeyDataDestroy ()">xmlSecKeyDataDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataDsaGetKlass" title="xmlSecKeyDataDsaGetKlass ()">xmlSecKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataDsaId" title="xmlSecKeyDataDsaId">xmlSecKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDuplicateMethod" title="xmlSecKeyDataDuplicateMethod ()">xmlSecKeyDataDuplicateMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDuplicate" title="xmlSecKeyDataDuplicate ()">xmlSecKeyDataDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataEcdsaGetKlass" title="xmlSecKeyDataEcdsaGetKlass ()">xmlSecKeyDataEcdsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataEcdsaId" title="xmlSecKeyDataEcdsaId">xmlSecKeyDataEcdsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyGetKlass" title="xmlSecKeyDataEncryptedKeyGetKlass ()">xmlSecKeyDataEncryptedKeyGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyId" title="xmlSecKeyDataEncryptedKeyId">xmlSecKeyDataEncryptedKeyId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFinalizeMethod" title="xmlSecKeyDataFinalizeMethod ()">xmlSecKeyDataFinalizeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat">xmlSecKeyDataFormat</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGenerateMethod" title="xmlSecKeyDataGenerateMethod ()">xmlSecKeyDataGenerateMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGenerate" title="xmlSecKeyDataGenerate ()">xmlSecKeyDataGenerate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifierMethod" title="xmlSecKeyDataGetIdentifierMethod ()">xmlSecKeyDataGetIdentifierMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifier" title="xmlSecKeyDataGetIdentifier ()">xmlSecKeyDataGetIdentifier</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetName" title="xmlSecKeyDataGetName()">xmlSecKeyDataGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetSizeMethod" title="xmlSecKeyDataGetSizeMethod ()">xmlSecKeyDataGetSizeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetSize" title="xmlSecKeyDataGetSize ()">xmlSecKeyDataGetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetTypeMethod" title="xmlSecKeyDataGetTypeMethod ()">xmlSecKeyDataGetTypeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetType" title="xmlSecKeyDataGetType ()">xmlSecKeyDataGetType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataGost2001GetKlass" title="xmlSecKeyDataGost2001GetKlass ()">xmlSecKeyDataGost2001GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataGost2001Id" title="xmlSecKeyDataGost2001Id">xmlSecKeyDataGost2001Id</a></p></li>
+<li class="listitem"><p><font>xmlSecKeyDataGostR3410-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecKeyDataGostR3410-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecKeyDataGostR3410-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecKeyDataGostR3410-2012-512Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataHmacGetKlass" title="xmlSecKeyDataHmacGetKlass ()">xmlSecKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataHmacId" title="xmlSecKeyDataHmacId">xmlSecKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugDump" title="xmlSecKeyDataIdListDebugDump ()">xmlSecKeyDataIdListDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugXmlDump" title="xmlSecKeyDataIdListDebugXmlDump ()">xmlSecKeyDataIdListDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByHref" title="xmlSecKeyDataIdListFindByHref ()">xmlSecKeyDataIdListFindByHref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByName" title="xmlSecKeyDataIdListFindByName ()">xmlSecKeyDataIdListFindByName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByNode" title="xmlSecKeyDataIdListFindByNode ()">xmlSecKeyDataIdListFindByNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFind" title="xmlSecKeyDataIdListFind ()">xmlSecKeyDataIdListFind</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListGetKlass" title="xmlSecKeyDataIdListGetKlass ()">xmlSecKeyDataIdListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListId" title="xmlSecKeyDataIdListId">xmlSecKeyDataIdListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsGet" title="xmlSecKeyDataIdsGet ()">xmlSecKeyDataIdsGet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsInit" title="xmlSecKeyDataIdsInit ()">xmlSecKeyDataIdsInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsRegisterDefault" title="xmlSecKeyDataIdsRegisterDefault ()">xmlSecKeyDataIdsRegisterDefault</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsRegister" title="xmlSecKeyDataIdsRegister ()">xmlSecKeyDataIdsRegister</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsShutdown" title="xmlSecKeyDataIdsShutdown ()">xmlSecKeyDataIdsShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdUnknown" title="xmlSecKeyDataIdUnknown">xmlSecKeyDataIdUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataInitMethod" title="xmlSecKeyDataInitMethod ()">xmlSecKeyDataInitMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIsValid" title="xmlSecKeyDataIsValid()">xmlSecKeyDataIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataKlassGetName" title="xmlSecKeyDataKlassGetName()">xmlSecKeyDataKlassGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataKlass" title="struct xmlSecKeyDataKlass">xmlSecKeyDataKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataListGetKlass" title="xmlSecKeyDataListGetKlass ()">xmlSecKeyDataListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataListId" title="xmlSecKeyDataListId">xmlSecKeyDataListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData">xmlSecKeyData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameGetKlass" title="xmlSecKeyDataNameGetKlass ()">xmlSecKeyDataNameGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameId" title="xmlSecKeyDataNameId">xmlSecKeyDataNameId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataRawX509CertGetKlass" title="xmlSecKeyDataRawX509CertGetKlass ()">xmlSecKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataRawX509CertId" title="xmlSecKeyDataRawX509CertId">xmlSecKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodGetKlass" title="xmlSecKeyDataRetrievalMethodGetKlass ()">xmlSecKeyDataRetrievalMethodGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodId" title="xmlSecKeyDataRetrievalMethodId">xmlSecKeyDataRetrievalMethodId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataRsaGetKlass" title="xmlSecKeyDataRsaGetKlass ()">xmlSecKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataRsaId" title="xmlSecKeyDataRsaId">xmlSecKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckId" title="xmlSecKeyDataStoreCheckId()">xmlSecKeyDataStoreCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckSize" title="xmlSecKeyDataStoreCheckSize()">xmlSecKeyDataStoreCheckSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCreate" title="xmlSecKeyDataStoreCreate ()">xmlSecKeyDataStoreCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreDestroy" title="xmlSecKeyDataStoreDestroy ()">xmlSecKeyDataStoreDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreFinalizeMethod" title="xmlSecKeyDataStoreFinalizeMethod ()">xmlSecKeyDataStoreFinalizeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreGetName" title="xmlSecKeyDataStoreGetName()">xmlSecKeyDataStoreGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreIdUnknown" title="xmlSecKeyDataStoreIdUnknown">xmlSecKeyDataStoreIdUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreInitializeMethod" title="xmlSecKeyDataStoreInitializeMethod ()">xmlSecKeyDataStoreInitializeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreIsValid" title="xmlSecKeyDataStoreIsValid()">xmlSecKeyDataStoreIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreKlassGetName" title="xmlSecKeyDataStoreKlassGetName()">xmlSecKeyDataStoreKlassGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass" title="struct xmlSecKeyDataStoreKlass">xmlSecKeyDataStoreKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore">xmlSecKeyDataStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListGetKlass" title="xmlSecKeyDataStorePtrListGetKlass ()">xmlSecKeyDataStorePtrListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListId" title="xmlSecKeyDataStorePtrListId">xmlSecKeyDataStorePtrListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeAny" title="xmlSecKeyDataTypeAny">xmlSecKeyDataTypeAny</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType">xmlSecKeyDataType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeNone" title="xmlSecKeyDataTypeNone">xmlSecKeyDataTypeNone</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePermanent" title="xmlSecKeyDataTypePermanent">xmlSecKeyDataTypePermanent</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePrivate" title="xmlSecKeyDataTypePrivate">xmlSecKeyDataTypePrivate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePublic" title="xmlSecKeyDataTypePublic">xmlSecKeyDataTypePublic</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeSession" title="xmlSecKeyDataTypeSession">xmlSecKeyDataTypeSession</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeSymmetric" title="xmlSecKeyDataTypeSymmetric">xmlSecKeyDataTypeSymmetric</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeTrusted" title="xmlSecKeyDataTypeTrusted">xmlSecKeyDataTypeTrusted</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeUnknown" title="xmlSecKeyDataTypeUnknown">xmlSecKeyDataTypeUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageAny" title="xmlSecKeyDataUsageAny">xmlSecKeyDataUsageAny</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNode" title="xmlSecKeyDataUsageKeyInfoNode">xmlSecKeyDataUsageKeyInfoNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeRead" title="xmlSecKeyDataUsageKeyInfoNodeRead">xmlSecKeyDataUsageKeyInfoNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeWrite" title="xmlSecKeyDataUsageKeyInfoNodeWrite">xmlSecKeyDataUsageKeyInfoNodeWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNode" title="xmlSecKeyDataUsageKeyValueNode">xmlSecKeyDataUsageKeyValueNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeRead" title="xmlSecKeyDataUsageKeyValueNodeRead">xmlSecKeyDataUsageKeyValueNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeWrite" title="xmlSecKeyDataUsageKeyValueNodeWrite">xmlSecKeyDataUsageKeyValueNodeWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage">xmlSecKeyDataUsage</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeBin" title="xmlSecKeyDataUsageRetrievalMethodNodeBin">xmlSecKeyDataUsageRetrievalMethodNodeBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNode" title="xmlSecKeyDataUsageRetrievalMethodNode">xmlSecKeyDataUsageRetrievalMethodNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeXml" title="xmlSecKeyDataUsageRetrievalMethodNodeXml">xmlSecKeyDataUsageRetrievalMethodNodeXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageUnknown" title="xmlSecKeyDataUsageUnknown">xmlSecKeyDataUsageUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueGetKlass" title="xmlSecKeyDataValueGetKlass ()">xmlSecKeyDataValueGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueId" title="xmlSecKeyDataValueId">xmlSecKeyDataValueId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataX509GetKlass" title="xmlSecKeyDataX509GetKlass ()">xmlSecKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecKeyDataX509Id" title="xmlSecKeyDataX509Id">xmlSecKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlReadMethod" title="xmlSecKeyDataXmlReadMethod ()">xmlSecKeyDataXmlReadMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlRead" title="xmlSecKeyDataXmlRead ()">xmlSecKeyDataXmlRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlWriteMethod" title="xmlSecKeyDataXmlWriteMethod ()">xmlSecKeyDataXmlWriteMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlWrite" title="xmlSecKeyDataXmlWrite ()">xmlSecKeyDataXmlWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyDebugDump" title="xmlSecKeyDebugDump ()">xmlSecKeyDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyDebugXmlDump" title="xmlSecKeyDebugXmlDump ()">xmlSecKeyDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()">xmlSecKeyDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyDuplicate" title="xmlSecKeyDuplicate ()">xmlSecKeyDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyEmpty" title="xmlSecKeyEmpty ()">xmlSecKeyEmpty</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyEnsureData" title="xmlSecKeyEnsureData ()">xmlSecKeyEnsureData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGenerateByName" title="xmlSecKeyGenerateByName ()">xmlSecKeyGenerateByName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGenerate" title="xmlSecKeyGenerate ()">xmlSecKeyGenerate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGetData" title="xmlSecKeyGetData ()">xmlSecKeyGetData</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGetName" title="xmlSecKeyGetName ()">xmlSecKeyGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGetType" title="xmlSecKeyGetType ()">xmlSecKeyGetType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyGetValue" title="xmlSecKeyGetValue ()">xmlSecKeyGetValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCopyUserPref" title="xmlSecKeyInfoCtxCopyUserPref ()">xmlSecKeyInfoCtxCopyUserPref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreateEncCtx" title="xmlSecKeyInfoCtxCreateEncCtx ()">xmlSecKeyInfoCtxCreateEncCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate" title="xmlSecKeyInfoCtxCreate ()">xmlSecKeyInfoCtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugDump" title="xmlSecKeyInfoCtxDebugDump ()">xmlSecKeyInfoCtxDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugXmlDump" title="xmlSecKeyInfoCtxDebugXmlDump ()">xmlSecKeyInfoCtxDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy" title="xmlSecKeyInfoCtxDestroy ()">xmlSecKeyInfoCtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize" title="xmlSecKeyInfoCtxFinalize ()">xmlSecKeyInfoCtxFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize" title="xmlSecKeyInfoCtxInitialize ()">xmlSecKeyInfoCtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx">xmlSecKeyInfoCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxReset" title="xmlSecKeyInfoCtxReset ()">xmlSecKeyInfoCtxReset</a></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT</font></p></li>
+<li class="listitem"><p><font>XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoMode" title="enum xmlSecKeyInfoMode">xmlSecKeyInfoMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeRead" title="xmlSecKeyInfoNodeRead ()">xmlSecKeyInfoNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeWrite" title="xmlSecKeyInfoNodeWrite ()">xmlSecKeyInfoNodeWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyIsValid" title="xmlSecKeyIsValid()">xmlSecKeyIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyMatch" title="xmlSecKeyMatch ()">xmlSecKeyMatch</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey">xmlSecKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyPtrListGetKlass" title="xmlSecKeyPtrListGetKlass ()">xmlSecKeyPtrListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyPtrListId" title="xmlSecKeyPtrListId">xmlSecKeyPtrListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReadBinaryFile" title="xmlSecKeyReadBinaryFile ()">xmlSecKeyReadBinaryFile</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReadBuffer" title="xmlSecKeyReadBuffer ()">xmlSecKeyReadBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReadMemory" title="xmlSecKeyReadMemory ()">xmlSecKeyReadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqCopy" title="xmlSecKeyReqCopy ()">xmlSecKeyReqCopy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqDebugDump" title="xmlSecKeyReqDebugDump ()">xmlSecKeyReqDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqDebugXmlDump" title="xmlSecKeyReqDebugXmlDump ()">xmlSecKeyReqDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqFinalize" title="xmlSecKeyReqFinalize ()">xmlSecKeyReqFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqInitialize" title="xmlSecKeyReqInitialize ()">xmlSecKeyReqInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqMatchKey" title="xmlSecKeyReqMatchKey ()">xmlSecKeyReqMatchKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqMatchKeyValue" title="xmlSecKeyReqMatchKeyValue ()">xmlSecKeyReqMatchKeyValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq">xmlSecKeyReq</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReqReset" title="xmlSecKeyReqReset ()">xmlSecKeyReqReset</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeySetName" title="xmlSecKeySetName ()">xmlSecKeySetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeySetValue" title="xmlSecKeySetValue ()">xmlSecKeySetValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptDataStore" title="xmlSecKeysMngrAdoptDataStore ()">xmlSecKeysMngrAdoptDataStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptKeysStore" title="xmlSecKeysMngrAdoptKeysStore ()">xmlSecKeysMngrAdoptKeysStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrCreate" title="xmlSecKeysMngrCreate ()">xmlSecKeysMngrCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrDestroy" title="xmlSecKeysMngrDestroy ()">xmlSecKeysMngrDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrFindKey" title="xmlSecKeysMngrFindKey ()">xmlSecKeysMngrFindKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetDataStore" title="xmlSecKeysMngrGetDataStore ()">xmlSecKeysMngrGetDataStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetKey" title="xmlSecKeysMngrGetKey ()">xmlSecKeysMngrGetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetKeysStore" title="xmlSecKeysMngrGetKeysStore ()">xmlSecKeysMngrGetKeysStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">xmlSecKeysMngr</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCheckId" title="xmlSecKeyStoreCheckId()">xmlSecKeyStoreCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCheckSize" title="xmlSecKeyStoreCheckSize()">xmlSecKeyStoreCheckSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCreate" title="xmlSecKeyStoreCreate ()">xmlSecKeyStoreCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreDestroy" title="xmlSecKeyStoreDestroy ()">xmlSecKeyStoreDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFinalizeMethod" title="xmlSecKeyStoreFinalizeMethod ()">xmlSecKeyStoreFinalizeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFindKeyMethod" title="xmlSecKeyStoreFindKeyMethod ()">xmlSecKeyStoreFindKeyMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFindKey" title="xmlSecKeyStoreFindKey ()">xmlSecKeyStoreFindKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreGetName" title="xmlSecKeyStoreGetName()">xmlSecKeyStoreGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreIdUnknown" title="xmlSecKeyStoreIdUnknown">xmlSecKeyStoreIdUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreInitializeMethod" title="xmlSecKeyStoreInitializeMethod ()">xmlSecKeyStoreInitializeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreIsValid" title="xmlSecKeyStoreIsValid()">xmlSecKeyStoreIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreKlassGetName" title="xmlSecKeyStoreKlassGetName()">xmlSecKeyStoreKlassGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreKlass" title="struct xmlSecKeyStoreKlass">xmlSecKeyStoreKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore">xmlSecKeyStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageAny" title="xmlSecKeyUsageAny">xmlSecKeyUsageAny</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageDecrypt" title="xmlSecKeyUsageDecrypt">xmlSecKeyUsageDecrypt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageEncrypt" title="xmlSecKeyUsageEncrypt">xmlSecKeyUsageEncrypt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageKeyExchange" title="xmlSecKeyUsageKeyExchange">xmlSecKeyUsageKeyExchange</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsage" title="xmlSecKeyUsage">xmlSecKeyUsage</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageSign" title="xmlSecKeyUsageSign">xmlSecKeyUsageSign</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageVerify" title="xmlSecKeyUsageVerify">xmlSecKeyUsageVerify</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithCopy" title="xmlSecKeyUseWithCopy ()">xmlSecKeyUseWithCopy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithCreate" title="xmlSecKeyUseWithCreate ()">xmlSecKeyUseWithCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDebugDump" title="xmlSecKeyUseWithDebugDump ()">xmlSecKeyUseWithDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDebugXmlDump" title="xmlSecKeyUseWithDebugXmlDump ()">xmlSecKeyUseWithDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDestroy" title="xmlSecKeyUseWithDestroy ()">xmlSecKeyUseWithDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDuplicate" title="xmlSecKeyUseWithDuplicate ()">xmlSecKeyUseWithDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithFinalize" title="xmlSecKeyUseWithFinalize ()">xmlSecKeyUseWithFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithInitialize" title="xmlSecKeyUseWithInitialize ()">xmlSecKeyUseWithInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith">xmlSecKeyUseWith</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithPtrListGetKlass" title="xmlSecKeyUseWithPtrListGetKlass ()">xmlSecKeyUseWithPtrListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithPtrListId" title="xmlSecKeyUseWithPtrListId">xmlSecKeyUseWithPtrListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithReset" title="xmlSecKeyUseWithReset ()">xmlSecKeyUseWithReset</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithSet" title="xmlSecKeyUseWithSet ()">xmlSecKeyUseWithSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrAdoptKey" title="xmlSecMSCngAppDefaultKeysMngrAdoptKey ()">xmlSecMSCngAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrInit" title="xmlSecMSCngAppDefaultKeysMngrInit ()">xmlSecMSCngAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrLoad" title="xmlSecMSCngAppDefaultKeysMngrLoad ()">xmlSecMSCngAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrSave" title="xmlSecMSCngAppDefaultKeysMngrSave ()">xmlSecMSCngAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppGetCertStoreName" title="xmlSecMSCngAppGetCertStoreName ()">xmlSecMSCngAppGetCertStoreName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppGetDefaultPwdCallback" title="xmlSecMSCngAppGetDefaultPwdCallback ()">xmlSecMSCngAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppInit" title="xmlSecMSCngAppInit ()">xmlSecMSCngAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoadMemory" title="xmlSecMSCngAppKeyCertLoadMemory ()">xmlSecMSCngAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoad" title="xmlSecMSCngAppKeyCertLoad ()">xmlSecMSCngAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoadMemory" title="xmlSecMSCngAppKeyLoadMemory ()">xmlSecMSCngAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoad" title="xmlSecMSCngAppKeyLoad ()">xmlSecMSCngAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoadMemory" title="xmlSecMSCngAppKeysMngrCertLoadMemory ()">xmlSecMSCngAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoad" title="xmlSecMSCngAppKeysMngrCertLoad ()">xmlSecMSCngAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12LoadMemory" title="xmlSecMSCngAppPkcs12LoadMemory ()">xmlSecMSCngAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12Load" title="xmlSecMSCngAppPkcs12Load ()">xmlSecMSCngAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppShutdown" title="xmlSecMSCngAppShutdown ()">xmlSecMSCngAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngCertAdopt" title="xmlSecMSCngCertAdopt ()">xmlSecMSCngCertAdopt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngGenerateRandom" title="xmlSecMSCngGenerateRandom ()">xmlSecMSCngGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngInit" title="xmlSecMSCngInit ()">xmlSecMSCngInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesGetKlass" title="xmlSecMSCngKeyDataAesGetKlass ()">xmlSecMSCngKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesId" title="xmlSecMSCngKeyDataAesId">xmlSecMSCngKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesGetKlass" title="xmlSecMSCngKeyDataDesGetKlass ()">xmlSecMSCngKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesId" title="xmlSecMSCngKeyDataDesId">xmlSecMSCngKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaGetKlass" title="xmlSecMSCngKeyDataDsaGetKlass ()">xmlSecMSCngKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaId" title="xmlSecMSCngKeyDataDsaId">xmlSecMSCngKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaGetKlass" title="xmlSecMSCngKeyDataEcdsaGetKlass ()">xmlSecMSCngKeyDataEcdsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaId" title="xmlSecMSCngKeyDataEcdsaId">xmlSecMSCngKeyDataEcdsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPrivKey" title="xmlSecMSCngKeyDataGetPrivKey ()">xmlSecMSCngKeyDataGetPrivKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPubKey" title="xmlSecMSCngKeyDataGetPubKey ()">xmlSecMSCngKeyDataGetPubKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacGetKlass" title="xmlSecMSCngKeyDataHmacGetKlass ()">xmlSecMSCngKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacId" title="xmlSecMSCngKeyDataHmacId">xmlSecMSCngKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertGetKlass" title="xmlSecMSCngKeyDataRawX509CertGetKlass ()">xmlSecMSCngKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertId" title="xmlSecMSCngKeyDataRawX509CertId">xmlSecMSCngKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaGetKlass" title="xmlSecMSCngKeyDataRsaGetKlass ()">xmlSecMSCngKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaId" title="xmlSecMSCngKeyDataRsaId">xmlSecMSCngKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptCert" title="xmlSecMSCngKeyDataX509AdoptCert ()">xmlSecMSCngKeyDataX509AdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptKeyCert" title="xmlSecMSCngKeyDataX509AdoptKeyCert ()">xmlSecMSCngKeyDataX509AdoptKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509GetKlass" title="xmlSecMSCngKeyDataX509GetKlass ()">xmlSecMSCngKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509Id" title="xmlSecMSCngKeyDataX509Id">xmlSecMSCngKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeysMngrInit" title="xmlSecMSCngKeysMngrInit ()">xmlSecMSCngKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreAdoptKey" title="xmlSecMSCngKeysStoreAdoptKey ()">xmlSecMSCngKeysStoreAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreGetKlass" title="xmlSecMSCngKeysStoreGetKlass ()">xmlSecMSCngKeysStoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreId" title="xmlSecMSCngKeysStoreId">xmlSecMSCngKeysStoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreLoad" title="xmlSecMSCngKeysStoreLoad ()">xmlSecMSCngKeysStoreLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreSave" title="xmlSecMSCngKeysStoreSave ()">xmlSecMSCngKeysStoreSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngShutdown" title="xmlSecMSCngShutdown ()">xmlSecMSCngShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcGetKlass" title="xmlSecMSCngTransformAes128CbcGetKlass ()">xmlSecMSCngTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcId" title="xmlSecMSCngTransformAes128CbcId">xmlSecMSCngTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmGetKlass" title="xmlSecMSCngTransformAes128GcmGetKlass ()">xmlSecMSCngTransformAes128GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmId" title="xmlSecMSCngTransformAes128GcmId">xmlSecMSCngTransformAes128GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcGetKlass" title="xmlSecMSCngTransformAes192CbcGetKlass ()">xmlSecMSCngTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcId" title="xmlSecMSCngTransformAes192CbcId">xmlSecMSCngTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmGetKlass" title="xmlSecMSCngTransformAes192GcmGetKlass ()">xmlSecMSCngTransformAes192GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmId" title="xmlSecMSCngTransformAes192GcmId">xmlSecMSCngTransformAes192GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcGetKlass" title="xmlSecMSCngTransformAes256CbcGetKlass ()">xmlSecMSCngTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcId" title="xmlSecMSCngTransformAes256CbcId">xmlSecMSCngTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmGetKlass" title="xmlSecMSCngTransformAes256GcmGetKlass ()">xmlSecMSCngTransformAes256GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmId" title="xmlSecMSCngTransformAes256GcmId">xmlSecMSCngTransformAes256GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcGetKlass" title="xmlSecMSCngTransformDes3CbcGetKlass ()">xmlSecMSCngTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcId" title="xmlSecMSCngTransformDes3CbcId">xmlSecMSCngTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1GetKlass" title="xmlSecMSCngTransformDsaSha1GetKlass ()">xmlSecMSCngTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1Id" title="xmlSecMSCngTransformDsaSha1Id">xmlSecMSCngTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1GetKlass" title="xmlSecMSCngTransformEcdsaSha1GetKlass ()">xmlSecMSCngTransformEcdsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1Id" title="xmlSecMSCngTransformEcdsaSha1Id">xmlSecMSCngTransformEcdsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256GetKlass" title="xmlSecMSCngTransformEcdsaSha256GetKlass ()">xmlSecMSCngTransformEcdsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256Id" title="xmlSecMSCngTransformEcdsaSha256Id">xmlSecMSCngTransformEcdsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384GetKlass" title="xmlSecMSCngTransformEcdsaSha384GetKlass ()">xmlSecMSCngTransformEcdsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384Id" title="xmlSecMSCngTransformEcdsaSha384Id">xmlSecMSCngTransformEcdsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512GetKlass" title="xmlSecMSCngTransformEcdsaSha512GetKlass ()">xmlSecMSCngTransformEcdsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512Id" title="xmlSecMSCngTransformEcdsaSha512Id">xmlSecMSCngTransformEcdsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5GetKlass" title="xmlSecMSCngTransformHmacMd5GetKlass ()">xmlSecMSCngTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5Id" title="xmlSecMSCngTransformHmacMd5Id">xmlSecMSCngTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1GetKlass" title="xmlSecMSCngTransformHmacSha1GetKlass ()">xmlSecMSCngTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1Id" title="xmlSecMSCngTransformHmacSha1Id">xmlSecMSCngTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256GetKlass" title="xmlSecMSCngTransformHmacSha256GetKlass ()">xmlSecMSCngTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256Id" title="xmlSecMSCngTransformHmacSha256Id">xmlSecMSCngTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384GetKlass" title="xmlSecMSCngTransformHmacSha384GetKlass ()">xmlSecMSCngTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384Id" title="xmlSecMSCngTransformHmacSha384Id">xmlSecMSCngTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512GetKlass" title="xmlSecMSCngTransformHmacSha512GetKlass ()">xmlSecMSCngTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512Id" title="xmlSecMSCngTransformHmacSha512Id">xmlSecMSCngTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128GetKlass" title="xmlSecMSCngTransformKWAes128GetKlass ()">xmlSecMSCngTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128Id" title="xmlSecMSCngTransformKWAes128Id">xmlSecMSCngTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192GetKlass" title="xmlSecMSCngTransformKWAes192GetKlass ()">xmlSecMSCngTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192Id" title="xmlSecMSCngTransformKWAes192Id">xmlSecMSCngTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256GetKlass" title="xmlSecMSCngTransformKWAes256GetKlass ()">xmlSecMSCngTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256Id" title="xmlSecMSCngTransformKWAes256Id">xmlSecMSCngTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3GetKlass" title="xmlSecMSCngTransformKWDes3GetKlass ()">xmlSecMSCngTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3Id" title="xmlSecMSCngTransformKWDes3Id">xmlSecMSCngTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5GetKlass" title="xmlSecMSCngTransformMd5GetKlass ()">xmlSecMSCngTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5Id" title="xmlSecMSCngTransformMd5Id">xmlSecMSCngTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5GetKlass" title="xmlSecMSCngTransformRsaMd5GetKlass ()">xmlSecMSCngTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5Id" title="xmlSecMSCngTransformRsaMd5Id">xmlSecMSCngTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepGetKlass" title="xmlSecMSCngTransformRsaOaepGetKlass ()">xmlSecMSCngTransformRsaOaepGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepId" title="xmlSecMSCngTransformRsaOaepId">xmlSecMSCngTransformRsaOaepId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1GetKlass" title="xmlSecMSCngTransformRsaPkcs1GetKlass ()">xmlSecMSCngTransformRsaPkcs1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1Id" title="xmlSecMSCngTransformRsaPkcs1Id">xmlSecMSCngTransformRsaPkcs1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1GetKlass" title="xmlSecMSCngTransformRsaSha1GetKlass ()">xmlSecMSCngTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1Id" title="xmlSecMSCngTransformRsaSha1Id">xmlSecMSCngTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256GetKlass" title="xmlSecMSCngTransformRsaSha256GetKlass ()">xmlSecMSCngTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256Id" title="xmlSecMSCngTransformRsaSha256Id">xmlSecMSCngTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384GetKlass" title="xmlSecMSCngTransformRsaSha384GetKlass ()">xmlSecMSCngTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384Id" title="xmlSecMSCngTransformRsaSha384Id">xmlSecMSCngTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512GetKlass" title="xmlSecMSCngTransformRsaSha512GetKlass ()">xmlSecMSCngTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512Id" title="xmlSecMSCngTransformRsaSha512Id">xmlSecMSCngTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1GetKlass" title="xmlSecMSCngTransformSha1GetKlass ()">xmlSecMSCngTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1Id" title="xmlSecMSCngTransformSha1Id">xmlSecMSCngTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256GetKlass" title="xmlSecMSCngTransformSha256GetKlass ()">xmlSecMSCngTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256Id" title="xmlSecMSCngTransformSha256Id">xmlSecMSCngTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384GetKlass" title="xmlSecMSCngTransformSha384GetKlass ()">xmlSecMSCngTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384Id" title="xmlSecMSCngTransformSha384Id">xmlSecMSCngTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512GetKlass" title="xmlSecMSCngTransformSha512GetKlass ()">xmlSecMSCngTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512Id" title="xmlSecMSCngTransformSha512Id">xmlSecMSCngTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509FindCertBySubject" title="xmlSecMSCngX509FindCertBySubject ()">xmlSecMSCngX509FindCertBySubject</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptCert" title="xmlSecMSCngX509StoreAdoptCert ()">xmlSecMSCngX509StoreAdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptKeyStore" title="xmlSecMSCngX509StoreAdoptKeyStore ()">xmlSecMSCngX509StoreAdoptKeyStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptTrustedStore" title="xmlSecMSCngX509StoreAdoptTrustedStore ()">xmlSecMSCngX509StoreAdoptTrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptUntrustedStore" title="xmlSecMSCngX509StoreAdoptUntrustedStore ()">xmlSecMSCngX509StoreAdoptUntrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreFindCert" title="xmlSecMSCngX509StoreFindCert ()">xmlSecMSCngX509StoreFindCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreGetKlass" title="xmlSecMSCngX509StoreGetKlass ()">xmlSecMSCngX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreId" title="xmlSecMSCngX509StoreId">xmlSecMSCngX509StoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreVerify" title="xmlSecMSCngX509StoreVerify ()">xmlSecMSCngX509StoreVerify</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKey" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrInit" title="xmlSecMSCryptoAppDefaultKeysMngrInit ()">xmlSecMSCryptoAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrLoad" title="xmlSecMSCryptoAppDefaultKeysMngrLoad ()">xmlSecMSCryptoAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSave" title="xmlSecMSCryptoAppDefaultKeysMngrSave ()">xmlSecMSCryptoAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetCertStoreName" title="xmlSecMSCryptoAppGetCertStoreName ()">xmlSecMSCryptoAppGetCertStoreName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetDefaultPwdCallback" title="xmlSecMSCryptoAppGetDefaultPwdCallback ()">xmlSecMSCryptoAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppInit" title="xmlSecMSCryptoAppInit ()">xmlSecMSCryptoAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoadMemory" title="xmlSecMSCryptoAppKeyCertLoadMemory ()">xmlSecMSCryptoAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoad" title="xmlSecMSCryptoAppKeyCertLoad ()">xmlSecMSCryptoAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoadMemory" title="xmlSecMSCryptoAppKeyLoadMemory ()">xmlSecMSCryptoAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoad" title="xmlSecMSCryptoAppKeyLoad ()">xmlSecMSCryptoAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoadMemory" title="xmlSecMSCryptoAppKeysMngrCertLoadMemory ()">xmlSecMSCryptoAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoad" title="xmlSecMSCryptoAppKeysMngrCertLoad ()">xmlSecMSCryptoAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12LoadMemory" title="xmlSecMSCryptoAppPkcs12LoadMemory ()">xmlSecMSCryptoAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12Load" title="xmlSecMSCryptoAppPkcs12Load ()">xmlSecMSCryptoAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppShutdown" title="xmlSecMSCryptoAppShutdown ()">xmlSecMSCryptoAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertAdopt" title="xmlSecMSCryptoCertAdopt ()">xmlSecMSCryptoCertAdopt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertDup" title="xmlSecMSCryptoCertDup ()">xmlSecMSCryptoCertDup</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoErrorsDefaultCallback" title="xmlSecMSCryptoErrorsDefaultCallback ()">xmlSecMSCryptoErrorsDefaultCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoGenerateRandom" title="xmlSecMSCryptoGenerateRandom ()">xmlSecMSCryptoGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacGetMinOutputLength" title="xmlSecMSCryptoHmacGetMinOutputLength ()">xmlSecMSCryptoHmacGetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacSetMinOutputLength" title="xmlSecMSCryptoHmacSetMinOutputLength ()">xmlSecMSCryptoHmacSetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoInit" title="xmlSecMSCryptoInit ()">xmlSecMSCryptoInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesGetKlass" title="xmlSecMSCryptoKeyDataAesGetKlass ()">xmlSecMSCryptoKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesId" title="xmlSecMSCryptoKeyDataAesId">xmlSecMSCryptoKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesSet" title="xmlSecMSCryptoKeyDataAesSet ()">xmlSecMSCryptoKeyDataAesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesGetKlass" title="xmlSecMSCryptoKeyDataDesGetKlass ()">xmlSecMSCryptoKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesId" title="xmlSecMSCryptoKeyDataDesId">xmlSecMSCryptoKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaGetKlass" title="xmlSecMSCryptoKeyDataDsaGetKlass ()">xmlSecMSCryptoKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaId" title="xmlSecMSCryptoKeyDataDsaId">xmlSecMSCryptoKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetCert" title="xmlSecMSCryptoKeyDataGetCert ()">xmlSecMSCryptoKeyDataGetCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetDecryptKey" title="xmlSecMSCryptoKeyDataGetDecryptKey ()">xmlSecMSCryptoKeyDataGetDecryptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetKey" title="xmlSecMSCryptoKeyDataGetKey ()">xmlSecMSCryptoKeyDataGetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoKeySpec" title="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ()">xmlSecMSCryptoKeyDataGetMSCryptoKeySpec</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo" title="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo ()">xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProvider" title="xmlSecMSCryptoKeyDataGetMSCryptoProvider ()">xmlSecMSCryptoKeyDataGetMSCryptoProvider</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001GetKlass" title="xmlSecMSCryptoKeyDataGost2001GetKlass ()">xmlSecMSCryptoKeyDataGost2001GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001Id" title="xmlSecMSCryptoKeyDataGost2001Id">xmlSecMSCryptoKeyDataGost2001Id</a></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoKeyDataGost2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoKeyDataGost2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoKeyDataGost2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoKeyDataGost2012-512Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacGetKlass" title="xmlSecMSCryptoKeyDataHmacGetKlass ()">xmlSecMSCryptoKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacId" title="xmlSecMSCryptoKeyDataHmacId">xmlSecMSCryptoKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacSet" title="xmlSecMSCryptoKeyDataHmacSet ()">xmlSecMSCryptoKeyDataHmacSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertGetKlass" title="xmlSecMSCryptoKeyDataRawX509CertGetKlass ()">xmlSecMSCryptoKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertId" title="xmlSecMSCryptoKeyDataRawX509CertId">xmlSecMSCryptoKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaGetKlass" title="xmlSecMSCryptoKeyDataRsaGetKlass ()">xmlSecMSCryptoKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaId" title="xmlSecMSCryptoKeyDataRsaId">xmlSecMSCryptoKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCert" title="xmlSecMSCryptoKeyDataX509AdoptCert ()">xmlSecMSCryptoKeyDataX509AdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCrl" title="xmlSecMSCryptoKeyDataX509AdoptCrl ()">xmlSecMSCryptoKeyDataX509AdoptCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptKeyCert" title="xmlSecMSCryptoKeyDataX509AdoptKeyCert ()">xmlSecMSCryptoKeyDataX509AdoptKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCert" title="xmlSecMSCryptoKeyDataX509GetCert ()">xmlSecMSCryptoKeyDataX509GetCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCertsSize" title="xmlSecMSCryptoKeyDataX509GetCertsSize ()">xmlSecMSCryptoKeyDataX509GetCertsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrl" title="xmlSecMSCryptoKeyDataX509GetCrl ()">xmlSecMSCryptoKeyDataX509GetCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrlsSize" title="xmlSecMSCryptoKeyDataX509GetCrlsSize ()">xmlSecMSCryptoKeyDataX509GetCrlsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKeyCert" title="xmlSecMSCryptoKeyDataX509GetKeyCert ()">xmlSecMSCryptoKeyDataX509GetKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKlass" title="xmlSecMSCryptoKeyDataX509GetKlass ()">xmlSecMSCryptoKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509Id" title="xmlSecMSCryptoKeyDataX509Id">xmlSecMSCryptoKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeysMngrInit" title="xmlSecMSCryptoKeysMngrInit ()">xmlSecMSCryptoKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreAdoptKey" title="xmlSecMSCryptoKeysStoreAdoptKey ()">xmlSecMSCryptoKeysStoreAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreGetKlass" title="xmlSecMSCryptoKeysStoreGetKlass ()">xmlSecMSCryptoKeysStoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreId" title="xmlSecMSCryptoKeysStoreId">xmlSecMSCryptoKeysStoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreLoad" title="xmlSecMSCryptoKeysStoreLoad ()">xmlSecMSCryptoKeysStoreLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreSave" title="xmlSecMSCryptoKeysStoreSave ()">xmlSecMSCryptoKeysStoreSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoShutdown" title="xmlSecMSCryptoShutdown ()">xmlSecMSCryptoShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcGetKlass" title="xmlSecMSCryptoTransformAes128CbcGetKlass ()">xmlSecMSCryptoTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcId" title="xmlSecMSCryptoTransformAes128CbcId">xmlSecMSCryptoTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcGetKlass" title="xmlSecMSCryptoTransformAes192CbcGetKlass ()">xmlSecMSCryptoTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcId" title="xmlSecMSCryptoTransformAes192CbcId">xmlSecMSCryptoTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcGetKlass" title="xmlSecMSCryptoTransformAes256CbcGetKlass ()">xmlSecMSCryptoTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcId" title="xmlSecMSCryptoTransformAes256CbcId">xmlSecMSCryptoTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcGetKlass" title="xmlSecMSCryptoTransformDes3CbcGetKlass ()">xmlSecMSCryptoTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcId" title="xmlSecMSCryptoTransformDes3CbcId">xmlSecMSCryptoTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1GetKlass" title="xmlSecMSCryptoTransformDsaSha1GetKlass ()">xmlSecMSCryptoTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1Id" title="xmlSecMSCryptoTransformDsaSha1Id">xmlSecMSCryptoTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2001GostR3411-94Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGost2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecMSCryptoTransformGostR3411-94Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5GetKlass" title="xmlSecMSCryptoTransformHmacMd5GetKlass ()">xmlSecMSCryptoTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5Id" title="xmlSecMSCryptoTransformHmacMd5Id">xmlSecMSCryptoTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1GetKlass" title="xmlSecMSCryptoTransformHmacSha1GetKlass ()">xmlSecMSCryptoTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1Id" title="xmlSecMSCryptoTransformHmacSha1Id">xmlSecMSCryptoTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256GetKlass" title="xmlSecMSCryptoTransformHmacSha256GetKlass ()">xmlSecMSCryptoTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256Id" title="xmlSecMSCryptoTransformHmacSha256Id">xmlSecMSCryptoTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384GetKlass" title="xmlSecMSCryptoTransformHmacSha384GetKlass ()">xmlSecMSCryptoTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384Id" title="xmlSecMSCryptoTransformHmacSha384Id">xmlSecMSCryptoTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512GetKlass" title="xmlSecMSCryptoTransformHmacSha512GetKlass ()">xmlSecMSCryptoTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512Id" title="xmlSecMSCryptoTransformHmacSha512Id">xmlSecMSCryptoTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128GetKlass" title="xmlSecMSCryptoTransformKWAes128GetKlass ()">xmlSecMSCryptoTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128Id" title="xmlSecMSCryptoTransformKWAes128Id">xmlSecMSCryptoTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192GetKlass" title="xmlSecMSCryptoTransformKWAes192GetKlass ()">xmlSecMSCryptoTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192Id" title="xmlSecMSCryptoTransformKWAes192Id">xmlSecMSCryptoTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256GetKlass" title="xmlSecMSCryptoTransformKWAes256GetKlass ()">xmlSecMSCryptoTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256Id" title="xmlSecMSCryptoTransformKWAes256Id">xmlSecMSCryptoTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3GetKlass" title="xmlSecMSCryptoTransformKWDes3GetKlass ()">xmlSecMSCryptoTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3Id" title="xmlSecMSCryptoTransformKWDes3Id">xmlSecMSCryptoTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5GetKlass" title="xmlSecMSCryptoTransformMd5GetKlass ()">xmlSecMSCryptoTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5Id" title="xmlSecMSCryptoTransformMd5Id">xmlSecMSCryptoTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5GetKlass" title="xmlSecMSCryptoTransformRsaMd5GetKlass ()">xmlSecMSCryptoTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5Id" title="xmlSecMSCryptoTransformRsaMd5Id">xmlSecMSCryptoTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepGetKlass" title="xmlSecMSCryptoTransformRsaOaepGetKlass ()">xmlSecMSCryptoTransformRsaOaepGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepId" title="xmlSecMSCryptoTransformRsaOaepId">xmlSecMSCryptoTransformRsaOaepId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1GetKlass" title="xmlSecMSCryptoTransformRsaPkcs1GetKlass ()">xmlSecMSCryptoTransformRsaPkcs1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1Id" title="xmlSecMSCryptoTransformRsaPkcs1Id">xmlSecMSCryptoTransformRsaPkcs1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1GetKlass" title="xmlSecMSCryptoTransformRsaSha1GetKlass ()">xmlSecMSCryptoTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1Id" title="xmlSecMSCryptoTransformRsaSha1Id">xmlSecMSCryptoTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256GetKlass" title="xmlSecMSCryptoTransformRsaSha256GetKlass ()">xmlSecMSCryptoTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256Id" title="xmlSecMSCryptoTransformRsaSha256Id">xmlSecMSCryptoTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384GetKlass" title="xmlSecMSCryptoTransformRsaSha384GetKlass ()">xmlSecMSCryptoTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384Id" title="xmlSecMSCryptoTransformRsaSha384Id">xmlSecMSCryptoTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512GetKlass" title="xmlSecMSCryptoTransformRsaSha512GetKlass ()">xmlSecMSCryptoTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512Id" title="xmlSecMSCryptoTransformRsaSha512Id">xmlSecMSCryptoTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1GetKlass" title="xmlSecMSCryptoTransformSha1GetKlass ()">xmlSecMSCryptoTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1Id" title="xmlSecMSCryptoTransformSha1Id">xmlSecMSCryptoTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256GetKlass" title="xmlSecMSCryptoTransformSha256GetKlass ()">xmlSecMSCryptoTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256Id" title="xmlSecMSCryptoTransformSha256Id">xmlSecMSCryptoTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384GetKlass" title="xmlSecMSCryptoTransformSha384GetKlass ()">xmlSecMSCryptoTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384Id" title="xmlSecMSCryptoTransformSha384Id">xmlSecMSCryptoTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512GetKlass" title="xmlSecMSCryptoTransformSha512GetKlass ()">xmlSecMSCryptoTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512Id" title="xmlSecMSCryptoTransformSha512Id">xmlSecMSCryptoTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptCert" title="xmlSecMSCryptoX509StoreAdoptCert ()">xmlSecMSCryptoX509StoreAdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptKeyStore" title="xmlSecMSCryptoX509StoreAdoptKeyStore ()">xmlSecMSCryptoX509StoreAdoptKeyStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptTrustedStore" title="xmlSecMSCryptoX509StoreAdoptTrustedStore ()">xmlSecMSCryptoX509StoreAdoptTrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptUntrustedStore" title="xmlSecMSCryptoX509StoreAdoptUntrustedStore ()">xmlSecMSCryptoX509StoreAdoptUntrustedStore</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreEnableSystemTrustedCerts" title="xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()">xmlSecMSCryptoX509StoreEnableSystemTrustedCerts</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreGetKlass" title="xmlSecMSCryptoX509StoreGetKlass ()">xmlSecMSCryptoX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreId" title="xmlSecMSCryptoX509StoreId">xmlSecMSCryptoX509StoreId</a></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-AES</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecNodeEncodeAndSetContent" title="xmlSecNodeEncodeAndSetContent ()">xmlSecNodeEncodeAndSetContent</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecNodeGetName" title="xmlSecNodeGetName()">xmlSecNodeGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetAddList" title="xmlSecNodeSetAddList ()">xmlSecNodeSetAddList</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetAdd" title="xmlSecNodeSetAdd ()">xmlSecNodeSetAdd</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetContains" title="xmlSecNodeSetContains ()">xmlSecNodeSetContains</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetCreate" title="xmlSecNodeSetCreate ()">xmlSecNodeSetCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDebugDump" title="xmlSecNodeSetDebugDump ()">xmlSecNodeSetDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDestroy" title="xmlSecNodeSetDestroy ()">xmlSecNodeSetDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDocDestroy" title="xmlSecNodeSetDocDestroy ()">xmlSecNodeSetDocDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDumpTextNodes" title="xmlSecNodeSetDumpTextNodes ()">xmlSecNodeSetDumpTextNodes</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetGetChildren" title="xmlSecNodeSetGetChildren ()">xmlSecNodeSetGetChildren</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet">xmlSecNodeSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetOp" title="enum xmlSecNodeSetOp">xmlSecNodeSetOp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetType" title="enum xmlSecNodeSetType">xmlSecNodeSetType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetWalkCallback" title="xmlSecNodeSetWalkCallback ()">xmlSecNodeSetWalkCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetWalk" title="xmlSecNodeSetWalk ()">xmlSecNodeSetWalk</a></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-DES</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-DSA</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-ECDSA</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-GOST2012</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-GOST</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-HMAC</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-MD5</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-RIPEMD160</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-RSA</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-SHA1</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-SHA224</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-SHA256</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-SHA384</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-SHA512</font></p></li>
+<li class="listitem"><p><font>XMLSEC-NO-X509</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrAdoptKey" title="xmlSecNssAppDefaultKeysMngrAdoptKey ()">xmlSecNssAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrInit" title="xmlSecNssAppDefaultKeysMngrInit ()">xmlSecNssAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrLoad" title="xmlSecNssAppDefaultKeysMngrLoad ()">xmlSecNssAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrSave" title="xmlSecNssAppDefaultKeysMngrSave ()">xmlSecNssAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppGetDefaultPwdCallback" title="xmlSecNssAppGetDefaultPwdCallback ()">xmlSecNssAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppInit" title="xmlSecNssAppInit ()">xmlSecNssAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadMemory" title="xmlSecNssAppKeyCertLoadMemory ()">xmlSecNssAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoad" title="xmlSecNssAppKeyCertLoad ()">xmlSecNssAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadSECItem" title="xmlSecNssAppKeyCertLoadSECItem ()">xmlSecNssAppKeyCertLoadSECItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyFromCertLoadSECItem" title="xmlSecNssAppKeyFromCertLoadSECItem ()">xmlSecNssAppKeyFromCertLoadSECItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoadMemory" title="xmlSecNssAppKeyLoadMemory ()">xmlSecNssAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoad" title="xmlSecNssAppKeyLoad ()">xmlSecNssAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoadSECItem" title="xmlSecNssAppKeyLoadSECItem ()">xmlSecNssAppKeyLoadSECItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadMemory" title="xmlSecNssAppKeysMngrCertLoadMemory ()">xmlSecNssAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoad" title="xmlSecNssAppKeysMngrCertLoad ()">xmlSecNssAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadSECItem" title="xmlSecNssAppKeysMngrCertLoadSECItem ()">xmlSecNssAppKeysMngrCertLoadSECItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadMemory" title="xmlSecNssAppPkcs12LoadMemory ()">xmlSecNssAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12Load" title="xmlSecNssAppPkcs12Load ()">xmlSecNssAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadSECItem" title="xmlSecNssAppPkcs12LoadSECItem ()">xmlSecNssAppPkcs12LoadSECItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-app.html#xmlSecNssAppShutdown" title="xmlSecNssAppShutdown ()">xmlSecNssAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssErrorsDefaultCallback" title="xmlSecNssErrorsDefaultCallback ()">xmlSecNssErrorsDefaultCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssGenerateRandom" title="xmlSecNssGenerateRandom ()">xmlSecNssGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssGetInternalKeySlot" title="xmlSecNssGetInternalKeySlot ()">xmlSecNssGetInternalKeySlot</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssHmacGetMinOutputLength" title="xmlSecNssHmacGetMinOutputLength ()">xmlSecNssHmacGetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssHmacSetMinOutputLength" title="xmlSecNssHmacSetMinOutputLength ()">xmlSecNssHmacSetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssInit" title="xmlSecNssInit ()">xmlSecNssInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesGetKlass" title="xmlSecNssKeyDataAesGetKlass ()">xmlSecNssKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesId" title="xmlSecNssKeyDataAesId">xmlSecNssKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesSet" title="xmlSecNssKeyDataAesSet ()">xmlSecNssKeyDataAesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesGetKlass" title="xmlSecNssKeyDataDesGetKlass ()">xmlSecNssKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesId" title="xmlSecNssKeyDataDesId">xmlSecNssKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesSet" title="xmlSecNssKeyDataDesSet ()">xmlSecNssKeyDataDesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaGetKlass" title="xmlSecNssKeyDataDsaGetKlass ()">xmlSecNssKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaId" title="xmlSecNssKeyDataDsaId">xmlSecNssKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaGetKlass" title="xmlSecNssKeyDataEcdsaGetKlass ()">xmlSecNssKeyDataEcdsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaId" title="xmlSecNssKeyDataEcdsaId">xmlSecNssKeyDataEcdsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacGetKlass" title="xmlSecNssKeyDataHmacGetKlass ()">xmlSecNssKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacId" title="xmlSecNssKeyDataHmacId">xmlSecNssKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacSet" title="xmlSecNssKeyDataHmacSet ()">xmlSecNssKeyDataHmacSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertGetKlass" title="xmlSecNssKeyDataRawX509CertGetKlass ()">xmlSecNssKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertId" title="xmlSecNssKeyDataRawX509CertId">xmlSecNssKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaGetKlass" title="xmlSecNssKeyDataRsaGetKlass ()">xmlSecNssKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaId" title="xmlSecNssKeyDataRsaId">xmlSecNssKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCert" title="xmlSecNssKeyDataX509AdoptCert ()">xmlSecNssKeyDataX509AdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCrl" title="xmlSecNssKeyDataX509AdoptCrl ()">xmlSecNssKeyDataX509AdoptCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptKeyCert" title="xmlSecNssKeyDataX509AdoptKeyCert ()">xmlSecNssKeyDataX509AdoptKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCert" title="xmlSecNssKeyDataX509GetCert ()">xmlSecNssKeyDataX509GetCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCertsSize" title="xmlSecNssKeyDataX509GetCertsSize ()">xmlSecNssKeyDataX509GetCertsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrl" title="xmlSecNssKeyDataX509GetCrl ()">xmlSecNssKeyDataX509GetCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrlsSize" title="xmlSecNssKeyDataX509GetCrlsSize ()">xmlSecNssKeyDataX509GetCrlsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKeyCert" title="xmlSecNssKeyDataX509GetKeyCert ()">xmlSecNssKeyDataX509GetKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKlass" title="xmlSecNssKeyDataX509GetKlass ()">xmlSecNssKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509Id" title="xmlSecNssKeyDataX509Id">xmlSecNssKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeysMngrInit" title="xmlSecNssKeysMngrInit ()">xmlSecNssKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreAdoptKey" title="xmlSecNssKeysStoreAdoptKey ()">xmlSecNssKeysStoreAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreGetKlass" title="xmlSecNssKeysStoreGetKlass ()">xmlSecNssKeysStoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreId" title="xmlSecNssKeysStoreId">xmlSecNssKeysStoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreLoad" title="xmlSecNssKeysStoreLoad ()">xmlSecNssKeysStoreLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreSave" title="xmlSecNssKeysStoreSave ()">xmlSecNssKeysStoreSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-bignum.html#xmlSecNssNodeGetBigNumValue" title="xmlSecNssNodeGetBigNumValue ()">xmlSecNssNodeGetBigNumValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-bignum.html#xmlSecNssNodeSetBigNumValue" title="xmlSecNssNodeSetBigNumValue ()">xmlSecNssNodeSetBigNumValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIAdoptKey" title="xmlSecNssPKIAdoptKey ()">xmlSecNssPKIAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataDuplicate" title="xmlSecNssPKIKeyDataDuplicate ()">xmlSecNssPKIKeyDataDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetKeyType" title="xmlSecNssPKIKeyDataGetKeyType ()">xmlSecNssPKIKeyDataGetKeyType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPrivKey" title="xmlSecNssPKIKeyDataGetPrivKey ()">xmlSecNssPKIKeyDataGetPrivKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPubKey" title="xmlSecNssPKIKeyDataGetPubKey ()">xmlSecNssPKIKeyDataGetPubKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssShutdown" title="xmlSecNssShutdown ()">xmlSecNssShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcGetKlass" title="xmlSecNssTransformAes128CbcGetKlass ()">xmlSecNssTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcId" title="xmlSecNssTransformAes128CbcId">xmlSecNssTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcGetKlass" title="xmlSecNssTransformAes192CbcGetKlass ()">xmlSecNssTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcId" title="xmlSecNssTransformAes192CbcId">xmlSecNssTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcGetKlass" title="xmlSecNssTransformAes256CbcGetKlass ()">xmlSecNssTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcId" title="xmlSecNssTransformAes256CbcId">xmlSecNssTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcGetKlass" title="xmlSecNssTransformDes3CbcGetKlass ()">xmlSecNssTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcId" title="xmlSecNssTransformDes3CbcId">xmlSecNssTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1GetKlass" title="xmlSecNssTransformDsaSha1GetKlass ()">xmlSecNssTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1Id" title="xmlSecNssTransformDsaSha1Id">xmlSecNssTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256GetKlass" title="xmlSecNssTransformDsaSha256GetKlass ()">xmlSecNssTransformDsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256Id" title="xmlSecNssTransformDsaSha256Id">xmlSecNssTransformDsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1GetKlass" title="xmlSecNssTransformEcdsaSha1GetKlass ()">xmlSecNssTransformEcdsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1Id" title="xmlSecNssTransformEcdsaSha1Id">xmlSecNssTransformEcdsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224GetKlass" title="xmlSecNssTransformEcdsaSha224GetKlass ()">xmlSecNssTransformEcdsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224Id" title="xmlSecNssTransformEcdsaSha224Id">xmlSecNssTransformEcdsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256GetKlass" title="xmlSecNssTransformEcdsaSha256GetKlass ()">xmlSecNssTransformEcdsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256Id" title="xmlSecNssTransformEcdsaSha256Id">xmlSecNssTransformEcdsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384GetKlass" title="xmlSecNssTransformEcdsaSha384GetKlass ()">xmlSecNssTransformEcdsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384Id" title="xmlSecNssTransformEcdsaSha384Id">xmlSecNssTransformEcdsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512GetKlass" title="xmlSecNssTransformEcdsaSha512GetKlass ()">xmlSecNssTransformEcdsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512Id" title="xmlSecNssTransformEcdsaSha512Id">xmlSecNssTransformEcdsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5GetKlass" title="xmlSecNssTransformHmacMd5GetKlass ()">xmlSecNssTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5Id" title="xmlSecNssTransformHmacMd5Id">xmlSecNssTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160GetKlass" title="xmlSecNssTransformHmacRipemd160GetKlass ()">xmlSecNssTransformHmacRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160Id" title="xmlSecNssTransformHmacRipemd160Id">xmlSecNssTransformHmacRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1GetKlass" title="xmlSecNssTransformHmacSha1GetKlass ()">xmlSecNssTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1Id" title="xmlSecNssTransformHmacSha1Id">xmlSecNssTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224GetKlass" title="xmlSecNssTransformHmacSha224GetKlass ()">xmlSecNssTransformHmacSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224Id" title="xmlSecNssTransformHmacSha224Id">xmlSecNssTransformHmacSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256GetKlass" title="xmlSecNssTransformHmacSha256GetKlass ()">xmlSecNssTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256Id" title="xmlSecNssTransformHmacSha256Id">xmlSecNssTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384GetKlass" title="xmlSecNssTransformHmacSha384GetKlass ()">xmlSecNssTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384Id" title="xmlSecNssTransformHmacSha384Id">xmlSecNssTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512GetKlass" title="xmlSecNssTransformHmacSha512GetKlass ()">xmlSecNssTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512Id" title="xmlSecNssTransformHmacSha512Id">xmlSecNssTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128GetKlass" title="xmlSecNssTransformKWAes128GetKlass ()">xmlSecNssTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128Id" title="xmlSecNssTransformKWAes128Id">xmlSecNssTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192GetKlass" title="xmlSecNssTransformKWAes192GetKlass ()">xmlSecNssTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192Id" title="xmlSecNssTransformKWAes192Id">xmlSecNssTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256GetKlass" title="xmlSecNssTransformKWAes256GetKlass ()">xmlSecNssTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256Id" title="xmlSecNssTransformKWAes256Id">xmlSecNssTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3GetKlass" title="xmlSecNssTransformKWDes3GetKlass ()">xmlSecNssTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3Id" title="xmlSecNssTransformKWDes3Id">xmlSecNssTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformMd5GetKlass" title="xmlSecNssTransformMd5GetKlass ()">xmlSecNssTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformMd5Id" title="xmlSecNssTransformMd5Id">xmlSecNssTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5GetKlass" title="xmlSecNssTransformRsaMd5GetKlass ()">xmlSecNssTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5Id" title="xmlSecNssTransformRsaMd5Id">xmlSecNssTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepGetKlass" title="xmlSecNssTransformRsaOaepGetKlass ()">xmlSecNssTransformRsaOaepGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepId" title="xmlSecNssTransformRsaOaepId">xmlSecNssTransformRsaOaepId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1GetKlass" title="xmlSecNssTransformRsaPkcs1GetKlass ()">xmlSecNssTransformRsaPkcs1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1Id" title="xmlSecNssTransformRsaPkcs1Id">xmlSecNssTransformRsaPkcs1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1GetKlass" title="xmlSecNssTransformRsaSha1GetKlass ()">xmlSecNssTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1Id" title="xmlSecNssTransformRsaSha1Id">xmlSecNssTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224GetKlass" title="xmlSecNssTransformRsaSha224GetKlass ()">xmlSecNssTransformRsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224Id" title="xmlSecNssTransformRsaSha224Id">xmlSecNssTransformRsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256GetKlass" title="xmlSecNssTransformRsaSha256GetKlass ()">xmlSecNssTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256Id" title="xmlSecNssTransformRsaSha256Id">xmlSecNssTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384GetKlass" title="xmlSecNssTransformRsaSha384GetKlass ()">xmlSecNssTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384Id" title="xmlSecNssTransformRsaSha384Id">xmlSecNssTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512GetKlass" title="xmlSecNssTransformRsaSha512GetKlass ()">xmlSecNssTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512Id" title="xmlSecNssTransformRsaSha512Id">xmlSecNssTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha1GetKlass" title="xmlSecNssTransformSha1GetKlass ()">xmlSecNssTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha1Id" title="xmlSecNssTransformSha1Id">xmlSecNssTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha224GetKlass" title="xmlSecNssTransformSha224GetKlass ()">xmlSecNssTransformSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha224Id" title="xmlSecNssTransformSha224Id">xmlSecNssTransformSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha256GetKlass" title="xmlSecNssTransformSha256GetKlass ()">xmlSecNssTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha256Id" title="xmlSecNssTransformSha256Id">xmlSecNssTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha384GetKlass" title="xmlSecNssTransformSha384GetKlass ()">xmlSecNssTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha384Id" title="xmlSecNssTransformSha384Id">xmlSecNssTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha512GetKlass" title="xmlSecNssTransformSha512GetKlass ()">xmlSecNssTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha512Id" title="xmlSecNssTransformSha512Id">xmlSecNssTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509CertGetKey" title="xmlSecNssX509CertGetKey ()">xmlSecNssX509CertGetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreAdoptCert" title="xmlSecNssX509StoreAdoptCert ()">xmlSecNssX509StoreAdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreFindCert" title="xmlSecNssX509StoreFindCert ()">xmlSecNssX509StoreFindCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreGetKlass" title="xmlSecNssX509StoreGetKlass ()">xmlSecNssX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreId" title="xmlSecNssX509StoreId">xmlSecNssX509StoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreVerify" title="xmlSecNssX509StoreVerify ()">xmlSecNssX509StoreVerify</a></p></li>
+<li class="listitem"><p><font>XMLSEC-OPENSSL-API-100</font></p></li>
+<li class="listitem"><p><font>XMLSEC-OPENSSL-API-110</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrAdoptKey" title="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ()">xmlSecOpenSSLAppDefaultKeysMngrAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrInit" title="xmlSecOpenSSLAppDefaultKeysMngrInit ()">xmlSecOpenSSLAppDefaultKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrLoad" title="xmlSecOpenSSLAppDefaultKeysMngrLoad ()">xmlSecOpenSSLAppDefaultKeysMngrLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrSave" title="xmlSecOpenSSLAppDefaultKeysMngrSave ()">xmlSecOpenSSLAppDefaultKeysMngrSave</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppGetDefaultPwdCallback" title="xmlSecOpenSSLAppGetDefaultPwdCallback ()">xmlSecOpenSSLAppGetDefaultPwdCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppInit" title="xmlSecOpenSSLAppInit ()">xmlSecOpenSSLAppInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadBIO" title="xmlSecOpenSSLAppKeyCertLoadBIO ()">xmlSecOpenSSLAppKeyCertLoadBIO</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadMemory" title="xmlSecOpenSSLAppKeyCertLoadMemory ()">xmlSecOpenSSLAppKeyCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoad" title="xmlSecOpenSSLAppKeyCertLoad ()">xmlSecOpenSSLAppKeyCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyFromCertLoadBIO" title="xmlSecOpenSSLAppKeyFromCertLoadBIO ()">xmlSecOpenSSLAppKeyFromCertLoadBIO</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadBIO" title="xmlSecOpenSSLAppKeyLoadBIO ()">xmlSecOpenSSLAppKeyLoadBIO</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadMemory" title="xmlSecOpenSSLAppKeyLoadMemory ()">xmlSecOpenSSLAppKeyLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoad" title="xmlSecOpenSSLAppKeyLoad ()">xmlSecOpenSSLAppKeyLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsFile" title="xmlSecOpenSSLAppKeysMngrAddCertsFile ()">xmlSecOpenSSLAppKeysMngrAddCertsFile</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsPath" title="xmlSecOpenSSLAppKeysMngrAddCertsPath ()">xmlSecOpenSSLAppKeysMngrAddCertsPath</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadBIO" title="xmlSecOpenSSLAppKeysMngrCertLoadBIO ()">xmlSecOpenSSLAppKeysMngrCertLoadBIO</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadMemory" title="xmlSecOpenSSLAppKeysMngrCertLoadMemory ()">xmlSecOpenSSLAppKeysMngrCertLoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoad" title="xmlSecOpenSSLAppKeysMngrCertLoad ()">xmlSecOpenSSLAppKeysMngrCertLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadBIO" title="xmlSecOpenSSLAppPkcs12LoadBIO ()">xmlSecOpenSSLAppPkcs12LoadBIO</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadMemory" title="xmlSecOpenSSLAppPkcs12LoadMemory ()">xmlSecOpenSSLAppPkcs12LoadMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12Load" title="xmlSecOpenSSLAppPkcs12Load ()">xmlSecOpenSSLAppPkcs12Load</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppShutdown" title="xmlSecOpenSSLAppShutdown ()">xmlSecOpenSSLAppShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLErrorsDefaultCallback" title="xmlSecOpenSSLErrorsDefaultCallback ()">xmlSecOpenSSLErrorsDefaultCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyAdopt" title="xmlSecOpenSSLEvpKeyAdopt ()">xmlSecOpenSSLEvpKeyAdopt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataAdoptEvp" title="xmlSecOpenSSLEvpKeyDataAdoptEvp ()">xmlSecOpenSSLEvpKeyDataAdoptEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataGetEvp" title="xmlSecOpenSSLEvpKeyDataGetEvp ()">xmlSecOpenSSLEvpKeyDataGetEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDup" title="xmlSecOpenSSLEvpKeyDup ()">xmlSecOpenSSLEvpKeyDup</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLGenerateRandom" title="xmlSecOpenSSLGenerateRandom ()">xmlSecOpenSSLGenerateRandom</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLGetDefaultTrustedCertsFolder" title="xmlSecOpenSSLGetDefaultTrustedCertsFolder ()">xmlSecOpenSSLGetDefaultTrustedCertsFolder</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacGetMinOutputLength" title="xmlSecOpenSSLHmacGetMinOutputLength ()">xmlSecOpenSSLHmacGetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacSetMinOutputLength" title="xmlSecOpenSSLHmacSetMinOutputLength ()">xmlSecOpenSSLHmacSetMinOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLInit" title="xmlSecOpenSSLInit ()">xmlSecOpenSSLInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesGetKlass" title="xmlSecOpenSSLKeyDataAesGetKlass ()">xmlSecOpenSSLKeyDataAesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesId" title="xmlSecOpenSSLKeyDataAesId">xmlSecOpenSSLKeyDataAesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesSet" title="xmlSecOpenSSLKeyDataAesSet ()">xmlSecOpenSSLKeyDataAesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesGetKlass" title="xmlSecOpenSSLKeyDataDesGetKlass ()">xmlSecOpenSSLKeyDataDesGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesId" title="xmlSecOpenSSLKeyDataDesId">xmlSecOpenSSLKeyDataDesId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesSet" title="xmlSecOpenSSLKeyDataDesSet ()">xmlSecOpenSSLKeyDataDesSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptDsa" title="xmlSecOpenSSLKeyDataDsaAdoptDsa ()">xmlSecOpenSSLKeyDataDsaAdoptDsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptEvp" title="xmlSecOpenSSLKeyDataDsaAdoptEvp ()">xmlSecOpenSSLKeyDataDsaAdoptEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetDsa" title="xmlSecOpenSSLKeyDataDsaGetDsa ()">xmlSecOpenSSLKeyDataDsaGetDsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetEvp" title="xmlSecOpenSSLKeyDataDsaGetEvp ()">xmlSecOpenSSLKeyDataDsaGetEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetKlass" title="xmlSecOpenSSLKeyDataDsaGetKlass ()">xmlSecOpenSSLKeyDataDsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaId" title="xmlSecOpenSSLKeyDataDsaId">xmlSecOpenSSLKeyDataDsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa" title="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ()">xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEvp" title="xmlSecOpenSSLKeyDataEcdsaAdoptEvp ()">xmlSecOpenSSLKeyDataEcdsaAdoptEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEcdsa" title="xmlSecOpenSSLKeyDataEcdsaGetEcdsa ()">xmlSecOpenSSLKeyDataEcdsaGetEcdsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEvp" title="xmlSecOpenSSLKeyDataEcdsaGetEvp ()">xmlSecOpenSSLKeyDataEcdsaGetEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetKlass" title="xmlSecOpenSSLKeyDataEcdsaGetKlass ()">xmlSecOpenSSLKeyDataEcdsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaId" title="xmlSecOpenSSLKeyDataEcdsaId">xmlSecOpenSSLKeyDataEcdsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001GetKlass" title="xmlSecOpenSSLKeyDataGost2001GetKlass ()">xmlSecOpenSSLKeyDataGost2001GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001Id" title="xmlSecOpenSSLKeyDataGost2001Id">xmlSecOpenSSLKeyDataGost2001Id</a></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLKeyDataGostR3410-2012-512Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacGetKlass" title="xmlSecOpenSSLKeyDataHmacGetKlass ()">xmlSecOpenSSLKeyDataHmacGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacId" title="xmlSecOpenSSLKeyDataHmacId">xmlSecOpenSSLKeyDataHmacId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacSet" title="xmlSecOpenSSLKeyDataHmacSet ()">xmlSecOpenSSLKeyDataHmacSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertGetKlass" title="xmlSecOpenSSLKeyDataRawX509CertGetKlass ()">xmlSecOpenSSLKeyDataRawX509CertGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertId" title="xmlSecOpenSSLKeyDataRawX509CertId">xmlSecOpenSSLKeyDataRawX509CertId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptEvp" title="xmlSecOpenSSLKeyDataRsaAdoptEvp ()">xmlSecOpenSSLKeyDataRsaAdoptEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptRsa" title="xmlSecOpenSSLKeyDataRsaAdoptRsa ()">xmlSecOpenSSLKeyDataRsaAdoptRsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetEvp" title="xmlSecOpenSSLKeyDataRsaGetEvp ()">xmlSecOpenSSLKeyDataRsaGetEvp</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetKlass" title="xmlSecOpenSSLKeyDataRsaGetKlass ()">xmlSecOpenSSLKeyDataRsaGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetRsa" title="xmlSecOpenSSLKeyDataRsaGetRsa ()">xmlSecOpenSSLKeyDataRsaGetRsa</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaId" title="xmlSecOpenSSLKeyDataRsaId">xmlSecOpenSSLKeyDataRsaId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCert" title="xmlSecOpenSSLKeyDataX509AdoptCert ()">xmlSecOpenSSLKeyDataX509AdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCrl" title="xmlSecOpenSSLKeyDataX509AdoptCrl ()">xmlSecOpenSSLKeyDataX509AdoptCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptKeyCert" title="xmlSecOpenSSLKeyDataX509AdoptKeyCert ()">xmlSecOpenSSLKeyDataX509AdoptKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCert" title="xmlSecOpenSSLKeyDataX509GetCert ()">xmlSecOpenSSLKeyDataX509GetCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCertsSize" title="xmlSecOpenSSLKeyDataX509GetCertsSize ()">xmlSecOpenSSLKeyDataX509GetCertsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrl" title="xmlSecOpenSSLKeyDataX509GetCrl ()">xmlSecOpenSSLKeyDataX509GetCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrlsSize" title="xmlSecOpenSSLKeyDataX509GetCrlsSize ()">xmlSecOpenSSLKeyDataX509GetCrlsSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKeyCert" title="xmlSecOpenSSLKeyDataX509GetKeyCert ()">xmlSecOpenSSLKeyDataX509GetKeyCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKlass" title="xmlSecOpenSSLKeyDataX509GetKlass ()">xmlSecOpenSSLKeyDataX509GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509Id" title="xmlSecOpenSSLKeyDataX509Id">xmlSecOpenSSLKeyDataX509Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeysMngrInit" title="xmlSecOpenSSLKeysMngrInit ()">xmlSecOpenSSLKeysMngrInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeGetBNValue" title="xmlSecOpenSSLNodeGetBNValue ()">xmlSecOpenSSLNodeGetBNValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeSetBNValue" title="xmlSecOpenSSLNodeSetBNValue ()">xmlSecOpenSSLNodeSetBNValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLSetDefaultTrustedCertsFolder" title="xmlSecOpenSSLSetDefaultTrustedCertsFolder ()">xmlSecOpenSSLSetDefaultTrustedCertsFolder</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLShutdown" title="xmlSecOpenSSLShutdown ()">xmlSecOpenSSLShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcGetKlass" title="xmlSecOpenSSLTransformAes128CbcGetKlass ()">xmlSecOpenSSLTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcId" title="xmlSecOpenSSLTransformAes128CbcId">xmlSecOpenSSLTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmGetKlass" title="xmlSecOpenSSLTransformAes128GcmGetKlass ()">xmlSecOpenSSLTransformAes128GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmId" title="xmlSecOpenSSLTransformAes128GcmId">xmlSecOpenSSLTransformAes128GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcGetKlass" title="xmlSecOpenSSLTransformAes192CbcGetKlass ()">xmlSecOpenSSLTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcId" title="xmlSecOpenSSLTransformAes192CbcId">xmlSecOpenSSLTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmGetKlass" title="xmlSecOpenSSLTransformAes192GcmGetKlass ()">xmlSecOpenSSLTransformAes192GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmId" title="xmlSecOpenSSLTransformAes192GcmId">xmlSecOpenSSLTransformAes192GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcGetKlass" title="xmlSecOpenSSLTransformAes256CbcGetKlass ()">xmlSecOpenSSLTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcId" title="xmlSecOpenSSLTransformAes256CbcId">xmlSecOpenSSLTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmGetKlass" title="xmlSecOpenSSLTransformAes256GcmGetKlass ()">xmlSecOpenSSLTransformAes256GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmId" title="xmlSecOpenSSLTransformAes256GcmId">xmlSecOpenSSLTransformAes256GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcGetKlass" title="xmlSecOpenSSLTransformDes3CbcGetKlass ()">xmlSecOpenSSLTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcId" title="xmlSecOpenSSLTransformDes3CbcId">xmlSecOpenSSLTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1GetKlass" title="xmlSecOpenSSLTransformDsaSha1GetKlass ()">xmlSecOpenSSLTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1Id" title="xmlSecOpenSSLTransformDsaSha1Id">xmlSecOpenSSLTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256GetKlass" title="xmlSecOpenSSLTransformDsaSha256GetKlass ()">xmlSecOpenSSLTransformDsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256Id" title="xmlSecOpenSSLTransformDsaSha256Id">xmlSecOpenSSLTransformDsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1GetKlass" title="xmlSecOpenSSLTransformEcdsaSha1GetKlass ()">xmlSecOpenSSLTransformEcdsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1Id" title="xmlSecOpenSSLTransformEcdsaSha1Id">xmlSecOpenSSLTransformEcdsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224GetKlass" title="xmlSecOpenSSLTransformEcdsaSha224GetKlass ()">xmlSecOpenSSLTransformEcdsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224Id" title="xmlSecOpenSSLTransformEcdsaSha224Id">xmlSecOpenSSLTransformEcdsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256GetKlass" title="xmlSecOpenSSLTransformEcdsaSha256GetKlass ()">xmlSecOpenSSLTransformEcdsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256Id" title="xmlSecOpenSSLTransformEcdsaSha256Id">xmlSecOpenSSLTransformEcdsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384GetKlass" title="xmlSecOpenSSLTransformEcdsaSha384GetKlass ()">xmlSecOpenSSLTransformEcdsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384Id" title="xmlSecOpenSSLTransformEcdsaSha384Id">xmlSecOpenSSLTransformEcdsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512GetKlass" title="xmlSecOpenSSLTransformEcdsaSha512GetKlass ()">xmlSecOpenSSLTransformEcdsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512Id" title="xmlSecOpenSSLTransformEcdsaSha512Id">xmlSecOpenSSLTransformEcdsaSha512Id</a></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGost2001GostR3411-94Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecOpenSSLTransformGostR3411-94Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5GetKlass" title="xmlSecOpenSSLTransformHmacMd5GetKlass ()">xmlSecOpenSSLTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5Id" title="xmlSecOpenSSLTransformHmacMd5Id">xmlSecOpenSSLTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160GetKlass" title="xmlSecOpenSSLTransformHmacRipemd160GetKlass ()">xmlSecOpenSSLTransformHmacRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160Id" title="xmlSecOpenSSLTransformHmacRipemd160Id">xmlSecOpenSSLTransformHmacRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1GetKlass" title="xmlSecOpenSSLTransformHmacSha1GetKlass ()">xmlSecOpenSSLTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1Id" title="xmlSecOpenSSLTransformHmacSha1Id">xmlSecOpenSSLTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224GetKlass" title="xmlSecOpenSSLTransformHmacSha224GetKlass ()">xmlSecOpenSSLTransformHmacSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224Id" title="xmlSecOpenSSLTransformHmacSha224Id">xmlSecOpenSSLTransformHmacSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256GetKlass" title="xmlSecOpenSSLTransformHmacSha256GetKlass ()">xmlSecOpenSSLTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256Id" title="xmlSecOpenSSLTransformHmacSha256Id">xmlSecOpenSSLTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384GetKlass" title="xmlSecOpenSSLTransformHmacSha384GetKlass ()">xmlSecOpenSSLTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384Id" title="xmlSecOpenSSLTransformHmacSha384Id">xmlSecOpenSSLTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512GetKlass" title="xmlSecOpenSSLTransformHmacSha512GetKlass ()">xmlSecOpenSSLTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512Id" title="xmlSecOpenSSLTransformHmacSha512Id">xmlSecOpenSSLTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128GetKlass" title="xmlSecOpenSSLTransformKWAes128GetKlass ()">xmlSecOpenSSLTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128Id" title="xmlSecOpenSSLTransformKWAes128Id">xmlSecOpenSSLTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192GetKlass" title="xmlSecOpenSSLTransformKWAes192GetKlass ()">xmlSecOpenSSLTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192Id" title="xmlSecOpenSSLTransformKWAes192Id">xmlSecOpenSSLTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256GetKlass" title="xmlSecOpenSSLTransformKWAes256GetKlass ()">xmlSecOpenSSLTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256Id" title="xmlSecOpenSSLTransformKWAes256Id">xmlSecOpenSSLTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3GetKlass" title="xmlSecOpenSSLTransformKWDes3GetKlass ()">xmlSecOpenSSLTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3Id" title="xmlSecOpenSSLTransformKWDes3Id">xmlSecOpenSSLTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5GetKlass" title="xmlSecOpenSSLTransformMd5GetKlass ()">xmlSecOpenSSLTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5Id" title="xmlSecOpenSSLTransformMd5Id">xmlSecOpenSSLTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160GetKlass" title="xmlSecOpenSSLTransformRipemd160GetKlass ()">xmlSecOpenSSLTransformRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160Id" title="xmlSecOpenSSLTransformRipemd160Id">xmlSecOpenSSLTransformRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5GetKlass" title="xmlSecOpenSSLTransformRsaMd5GetKlass ()">xmlSecOpenSSLTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5Id" title="xmlSecOpenSSLTransformRsaMd5Id">xmlSecOpenSSLTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepGetKlass" title="xmlSecOpenSSLTransformRsaOaepGetKlass ()">xmlSecOpenSSLTransformRsaOaepGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepId" title="xmlSecOpenSSLTransformRsaOaepId">xmlSecOpenSSLTransformRsaOaepId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1GetKlass" title="xmlSecOpenSSLTransformRsaPkcs1GetKlass ()">xmlSecOpenSSLTransformRsaPkcs1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1Id" title="xmlSecOpenSSLTransformRsaPkcs1Id">xmlSecOpenSSLTransformRsaPkcs1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160GetKlass" title="xmlSecOpenSSLTransformRsaRipemd160GetKlass ()">xmlSecOpenSSLTransformRsaRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160Id" title="xmlSecOpenSSLTransformRsaRipemd160Id">xmlSecOpenSSLTransformRsaRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1GetKlass" title="xmlSecOpenSSLTransformRsaSha1GetKlass ()">xmlSecOpenSSLTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1Id" title="xmlSecOpenSSLTransformRsaSha1Id">xmlSecOpenSSLTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224GetKlass" title="xmlSecOpenSSLTransformRsaSha224GetKlass ()">xmlSecOpenSSLTransformRsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224Id" title="xmlSecOpenSSLTransformRsaSha224Id">xmlSecOpenSSLTransformRsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256GetKlass" title="xmlSecOpenSSLTransformRsaSha256GetKlass ()">xmlSecOpenSSLTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256Id" title="xmlSecOpenSSLTransformRsaSha256Id">xmlSecOpenSSLTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384GetKlass" title="xmlSecOpenSSLTransformRsaSha384GetKlass ()">xmlSecOpenSSLTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384Id" title="xmlSecOpenSSLTransformRsaSha384Id">xmlSecOpenSSLTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512GetKlass" title="xmlSecOpenSSLTransformRsaSha512GetKlass ()">xmlSecOpenSSLTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512Id" title="xmlSecOpenSSLTransformRsaSha512Id">xmlSecOpenSSLTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1GetKlass" title="xmlSecOpenSSLTransformSha1GetKlass ()">xmlSecOpenSSLTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1Id" title="xmlSecOpenSSLTransformSha1Id">xmlSecOpenSSLTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224GetKlass" title="xmlSecOpenSSLTransformSha224GetKlass ()">xmlSecOpenSSLTransformSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224Id" title="xmlSecOpenSSLTransformSha224Id">xmlSecOpenSSLTransformSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256GetKlass" title="xmlSecOpenSSLTransformSha256GetKlass ()">xmlSecOpenSSLTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256Id" title="xmlSecOpenSSLTransformSha256Id">xmlSecOpenSSLTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384GetKlass" title="xmlSecOpenSSLTransformSha384GetKlass ()">xmlSecOpenSSLTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384Id" title="xmlSecOpenSSLTransformSha384Id">xmlSecOpenSSLTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512GetKlass" title="xmlSecOpenSSLTransformSha512GetKlass ()">xmlSecOpenSSLTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512Id" title="xmlSecOpenSSLTransformSha512Id">xmlSecOpenSSLTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509CertGetKey" title="xmlSecOpenSSLX509CertGetKey ()">xmlSecOpenSSLX509CertGetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsFile" title="xmlSecOpenSSLX509StoreAddCertsFile ()">xmlSecOpenSSLX509StoreAddCertsFile</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsPath" title="xmlSecOpenSSLX509StoreAddCertsPath ()">xmlSecOpenSSLX509StoreAddCertsPath</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCert" title="xmlSecOpenSSLX509StoreAdoptCert ()">xmlSecOpenSSLX509StoreAdoptCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCrl" title="xmlSecOpenSSLX509StoreAdoptCrl ()">xmlSecOpenSSLX509StoreAdoptCrl</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreFindCert" title="xmlSecOpenSSLX509StoreFindCert ()">xmlSecOpenSSLX509StoreFindCert</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreGetKlass" title="xmlSecOpenSSLX509StoreGetKlass ()">xmlSecOpenSSLX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreId" title="xmlSecOpenSSLX509StoreId">xmlSecOpenSSLX509StoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreVerify" title="xmlSecOpenSSLX509StoreVerify ()">xmlSecOpenSSLX509StoreVerify</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-parser.html#xmlSecParseFile" title="xmlSecParseFile ()">xmlSecParseFile</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-parser.html#xmlSecParseMemoryExt" title="xmlSecParseMemoryExt ()">xmlSecParseMemoryExt</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-parser.html#xmlSecParseMemory" title="xmlSecParseMemory ()">xmlSecParseMemory</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecPrintXmlString" title="xmlSecPrintXmlString ()">xmlSecPrintXmlString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDebugDumpItemMethod" title="xmlSecPtrDebugDumpItemMethod ()">xmlSecPtrDebugDumpItemMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDestroyItemMethod" title="xmlSecPtrDestroyItemMethod ()">xmlSecPtrDestroyItemMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDuplicateItemMethod" title="xmlSecPtrDuplicateItemMethod ()">xmlSecPtrDuplicateItemMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListAdd" title="xmlSecPtrListAdd ()">xmlSecPtrListAdd</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListCheckId" title="xmlSecPtrListCheckId()">xmlSecPtrListCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListCopy" title="xmlSecPtrListCopy ()">xmlSecPtrListCopy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListCreate" title="xmlSecPtrListCreate ()">xmlSecPtrListCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListDebugDump" title="xmlSecPtrListDebugDump ()">xmlSecPtrListDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListDebugXmlDump" title="xmlSecPtrListDebugXmlDump ()">xmlSecPtrListDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListDestroy" title="xmlSecPtrListDestroy ()">xmlSecPtrListDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListDuplicate" title="xmlSecPtrListDuplicate ()">xmlSecPtrListDuplicate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListEmpty" title="xmlSecPtrListEmpty ()">xmlSecPtrListEmpty</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListFinalize" title="xmlSecPtrListFinalize ()">xmlSecPtrListFinalize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListGetItem" title="xmlSecPtrListGetItem ()">xmlSecPtrListGetItem</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListGetName" title="xmlSecPtrListGetName()">xmlSecPtrListGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListGetSize" title="xmlSecPtrListGetSize ()">xmlSecPtrListGetSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListIdUnknown" title="xmlSecPtrListIdUnknown">xmlSecPtrListIdUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListInitialize" title="xmlSecPtrListInitialize ()">xmlSecPtrListInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListIsValid" title="xmlSecPtrListIsValid()">xmlSecPtrListIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListKlassGetName" title="xmlSecPtrListKlassGetName()">xmlSecPtrListKlassGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListKlass" title="struct xmlSecPtrListKlass">xmlSecPtrListKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList">xmlSecPtrList</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListRemoveAndReturn" title="xmlSecPtrListRemoveAndReturn ()">xmlSecPtrListRemoveAndReturn</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListRemove" title="xmlSecPtrListRemove ()">xmlSecPtrListRemove</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListSetDefaultAllocMode" title="xmlSecPtrListSetDefaultAllocMode ()">xmlSecPtrListSetDefaultAllocMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecPtrListSet" title="xmlSecPtrListSet ()">xmlSecPtrListSet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecPtr" title="xmlSecPtr">xmlSecPtr</a></p></li>
+<li class="listitem"><p><font>XMLSEC-PTR-TO-FUNC-IMPL</font></p></li>
+<li class="listitem"><p><font>XMLSEC-PTR-TO-FUNC</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugDump" title="xmlSecQName2BitMaskDebugDump ()">xmlSecQName2BitMaskDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugXmlDump" title="xmlSecQName2BitMaskDebugXmlDump ()">xmlSecQName2BitMaskDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMaskFromString" title="xmlSecQName2BitMaskGetBitMaskFromString ()">xmlSecQName2BitMaskGetBitMaskFromString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMask" title="xmlSecQName2BitMaskGetBitMask ()">xmlSecQName2BitMaskGetBitMask</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetInfo" title="xmlSecQName2BitMaskGetInfo ()">xmlSecQName2BitMaskGetInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetStringFromBitMask" title="xmlSecQName2BitMaskGetStringFromBitMask ()">xmlSecQName2BitMaskGetStringFromBitMask</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskInfoConstPtr" title="xmlSecQName2BitMaskInfoConstPtr">xmlSecQName2BitMaskInfoConstPtr</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo" title="struct xmlSecQName2BitMaskInfo">xmlSecQName2BitMaskInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesRead" title="xmlSecQName2BitMaskNodesRead ()">xmlSecQName2BitMaskNodesRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesWrite" title="xmlSecQName2BitMaskNodesWrite ()">xmlSecQName2BitMaskNodesWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeRead" title="xmlSecQName2IntegerAttributeRead ()">xmlSecQName2IntegerAttributeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeWrite" title="xmlSecQName2IntegerAttributeWrite ()">xmlSecQName2IntegerAttributeWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerDebugDump" title="xmlSecQName2IntegerDebugDump ()">xmlSecQName2IntegerDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerDebugXmlDump" title="xmlSecQName2IntegerDebugXmlDump ()">xmlSecQName2IntegerDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetInfo" title="xmlSecQName2IntegerGetInfo ()">xmlSecQName2IntegerGetInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetIntegerFromString" title="xmlSecQName2IntegerGetIntegerFromString ()">xmlSecQName2IntegerGetIntegerFromString</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetInteger" title="xmlSecQName2IntegerGetInteger ()">xmlSecQName2IntegerGetInteger</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetStringFromInteger" title="xmlSecQName2IntegerGetStringFromInteger ()">xmlSecQName2IntegerGetStringFromInteger</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerInfoConstPtr" title="xmlSecQName2IntegerInfoConstPtr">xmlSecQName2IntegerInfoConstPtr</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerInfo" title="struct xmlSecQName2IntegerInfo">xmlSecQName2IntegerInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerNodeRead" title="xmlSecQName2IntegerNodeRead ()">xmlSecQName2IntegerNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerNodeWrite" title="xmlSecQName2IntegerNodeWrite ()">xmlSecQName2IntegerNodeWrite</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceContentAndReturn" title="xmlSecReplaceContentAndReturn ()">xmlSecReplaceContentAndReturn</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceContent" title="xmlSecReplaceContent ()">xmlSecReplaceContent</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeAndReturn" title="xmlSecReplaceNodeAndReturn ()">xmlSecReplaceNodeAndReturn</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeBufferAndReturn" title="xmlSecReplaceNodeBufferAndReturn ()">xmlSecReplaceNodeBufferAndReturn</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeBuffer" title="xmlSecReplaceNodeBuffer ()">xmlSecReplaceNodeBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNode" title="xmlSecReplaceNode ()">xmlSecReplaceNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecSetDefaultLineFeed" title="xmlSecSetDefaultLineFeed ()">xmlSecSetDefaultLineFeed</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSetExternalEntityLoader" title="xmlSecSetExternalEntityLoader ()">xmlSecSetExternalEntityLoader</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()">xmlSecShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreAdoptKey" title="xmlSecSimpleKeysStoreAdoptKey ()">xmlSecSimpleKeysStoreAdoptKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKeys" title="xmlSecSimpleKeysStoreGetKeys ()">xmlSecSimpleKeysStoreGetKeys</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKlass" title="xmlSecSimpleKeysStoreGetKlass ()">xmlSecSimpleKeysStoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId">xmlSecSimpleKeysStoreId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreLoad" title="xmlSecSimpleKeysStoreLoad ()">xmlSecSimpleKeysStoreLoad</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreSave" title="xmlSecSimpleKeysStoreSave ()">xmlSecSimpleKeysStoreSave</a></p></li>
+<li class="listitem"><p><font>XMLSEC-SIZE-BAD-CAST</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize">xmlSecSize</a></p></li>
+<li class="listitem"><p><font>xmlSecSoap12FaultCode</font></p></li>
+<li class="listitem"><p><font>XMLSEC-STACK-OF-X509-CRL</font></p></li>
+<li class="listitem"><p><font>XMLSEC-STACK-OF-X509</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecStringListGetKlass" title="xmlSecStringListGetKlass ()">xmlSecStringListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-list.html#xmlSecStringListId" title="xmlSecStringListId">xmlSecStringListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplCipherReferenceAddTransform" title="xmlSecTmplCipherReferenceAddTransform ()">xmlSecTmplCipherReferenceAddTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataAddEncProperty" title="xmlSecTmplEncDataAddEncProperty ()">xmlSecTmplEncDataAddEncProperty</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataCreate" title="xmlSecTmplEncDataCreate ()">xmlSecTmplEncDataCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherReference" title="xmlSecTmplEncDataEnsureCipherReference ()">xmlSecTmplEncDataEnsureCipherReference</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherValue" title="xmlSecTmplEncDataEnsureCipherValue ()">xmlSecTmplEncDataEnsureCipherValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureEncProperties" title="xmlSecTmplEncDataEnsureEncProperties ()">xmlSecTmplEncDataEnsureEncProperties</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureKeyInfo" title="xmlSecTmplEncDataEnsureKeyInfo ()">xmlSecTmplEncDataEnsureKeyInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataGetEncMethodNode" title="xmlSecTmplEncDataGetEncMethodNode ()">xmlSecTmplEncDataGetEncMethodNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddEncryptedKey" title="xmlSecTmplKeyInfoAddEncryptedKey ()">xmlSecTmplKeyInfoAddEncryptedKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyName" title="xmlSecTmplKeyInfoAddKeyName ()">xmlSecTmplKeyInfoAddKeyName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyValue" title="xmlSecTmplKeyInfoAddKeyValue ()">xmlSecTmplKeyInfoAddKeyValue</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddRetrievalMethod" title="xmlSecTmplKeyInfoAddRetrievalMethod ()">xmlSecTmplKeyInfoAddRetrievalMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddX509Data" title="xmlSecTmplKeyInfoAddX509Data ()">xmlSecTmplKeyInfoAddX509Data</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplManifestAddReference" title="xmlSecTmplManifestAddReference ()">xmlSecTmplManifestAddReference</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplObjectAddManifest" title="xmlSecTmplObjectAddManifest ()">xmlSecTmplObjectAddManifest</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplObjectAddSignProperties" title="xmlSecTmplObjectAddSignProperties ()">xmlSecTmplObjectAddSignProperties</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceAddTransform" title="xmlSecTmplReferenceAddTransform ()">xmlSecTmplReferenceAddTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceListAddDataReference" title="xmlSecTmplReferenceListAddDataReference ()">xmlSecTmplReferenceListAddDataReference</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceListAddKeyReference" title="xmlSecTmplReferenceListAddKeyReference ()">xmlSecTmplReferenceListAddKeyReference</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplRetrievalMethodAddTransform" title="xmlSecTmplRetrievalMethodAddTransform ()">xmlSecTmplRetrievalMethodAddTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureAddObject" title="xmlSecTmplSignatureAddObject ()">xmlSecTmplSignatureAddObject</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureAddReference" title="xmlSecTmplSignatureAddReference ()">xmlSecTmplSignatureAddReference</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureCreate" title="xmlSecTmplSignatureCreate ()">xmlSecTmplSignatureCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureCreateNsPref" title="xmlSecTmplSignatureCreateNsPref ()">xmlSecTmplSignatureCreateNsPref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureEnsureKeyInfo" title="xmlSecTmplSignatureEnsureKeyInfo ()">xmlSecTmplSignatureEnsureKeyInfo</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureGetC14NMethodNode" title="xmlSecTmplSignatureGetC14NMethodNode ()">xmlSecTmplSignatureGetC14NMethodNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureGetSignMethodNode" title="xmlSecTmplSignatureGetSignMethodNode ()">xmlSecTmplSignatureGetSignMethodNode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddC14NInclNamespaces" title="xmlSecTmplTransformAddC14NInclNamespaces ()">xmlSecTmplTransformAddC14NInclNamespaces</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddHmacOutputLength" title="xmlSecTmplTransformAddHmacOutputLength ()">xmlSecTmplTransformAddHmacOutputLength</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddRsaOaepParam" title="xmlSecTmplTransformAddRsaOaepParam ()">xmlSecTmplTransformAddRsaOaepParam</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPath2" title="xmlSecTmplTransformAddXPath2 ()">xmlSecTmplTransformAddXPath2</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPath" title="xmlSecTmplTransformAddXPath ()">xmlSecTmplTransformAddXPath</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPointer" title="xmlSecTmplTransformAddXPointer ()">xmlSecTmplTransformAddXPointer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXsltStylesheet" title="xmlSecTmplTransformAddXsltStylesheet ()">xmlSecTmplTransformAddXsltStylesheet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddCertificate" title="xmlSecTmplX509DataAddCertificate ()">xmlSecTmplX509DataAddCertificate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddCRL" title="xmlSecTmplX509DataAddCRL ()">xmlSecTmplX509DataAddCRL</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddIssuerSerial" title="xmlSecTmplX509DataAddIssuerSerial ()">xmlSecTmplX509DataAddIssuerSerial</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddSKI" title="xmlSecTmplX509DataAddSKI ()">xmlSecTmplX509DataAddSKI</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddSubjectName" title="xmlSecTmplX509DataAddSubjectName ()">xmlSecTmplX509DataAddSubjectName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddIssuerName" title="xmlSecTmplX509IssuerSerialAddIssuerName ()">xmlSecTmplX509IssuerSerialAddIssuerName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddSerialNumber" title="xmlSecTmplX509IssuerSerialAddSerialNumber ()">xmlSecTmplX509IssuerSerialAddSerialNumber</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes128CbcGetKlass" title="xmlSecTransformAes128CbcGetKlass ()">xmlSecTransformAes128CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes128CbcId" title="xmlSecTransformAes128CbcId">xmlSecTransformAes128CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes128GcmGetKlass" title="xmlSecTransformAes128GcmGetKlass ()">xmlSecTransformAes128GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes128GcmId" title="xmlSecTransformAes128GcmId">xmlSecTransformAes128GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes192CbcGetKlass" title="xmlSecTransformAes192CbcGetKlass ()">xmlSecTransformAes192CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes192CbcId" title="xmlSecTransformAes192CbcId">xmlSecTransformAes192CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes192GcmGetKlass" title="xmlSecTransformAes192GcmGetKlass ()">xmlSecTransformAes192GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes192GcmId" title="xmlSecTransformAes192GcmId">xmlSecTransformAes192GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes256CbcGetKlass" title="xmlSecTransformAes256CbcGetKlass ()">xmlSecTransformAes256CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes256CbcId" title="xmlSecTransformAes256CbcId">xmlSecTransformAes256CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes256GcmGetKlass" title="xmlSecTransformAes256GcmGetKlass ()">xmlSecTransformAes256GcmGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformAes256GcmId" title="xmlSecTransformAes256GcmId">xmlSecTransformAes256GcmId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64GetKlass" title="xmlSecTransformBase64GetKlass ()">xmlSecTransformBase64GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64Id" title="xmlSecTransformBase64Id">xmlSecTransformBase64Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64SetLineSize" title="xmlSecTransformBase64SetLineSize ()">xmlSecTransformBase64SetLineSize</a></p></li>
+<li class="listitem"><p><font>XMLSEC-TRANSFORM-BINARY-CHUNK</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCheckId" title="xmlSecTransformCheckId()">xmlSecTransformCheckId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCheckSize" title="xmlSecTransformCheckSize()">xmlSecTransformCheckSize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()">xmlSecTransformConnect</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCreateInputBuffer" title="xmlSecTransformCreateInputBuffer ()">xmlSecTransformCreateInputBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCreate" title="xmlSecTransformCreate ()">xmlSecTransformCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCreateOutputBuffer" title="xmlSecTransformCreateOutputBuffer ()">xmlSecTransformCreateOutputBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxAppend" title="xmlSecTransformCtxAppend ()">xmlSecTransformCtxAppend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxBinaryExecute" title="xmlSecTransformCtxBinaryExecute ()">xmlSecTransformCtxBinaryExecute</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCopyUserPref" title="xmlSecTransformCtxCopyUserPref ()">xmlSecTransformCtxCopyUserPref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreateAndAppend" title="xmlSecTransformCtxCreateAndAppend ()">xmlSecTransformCtxCreateAndAppend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreateAndPrepend" title="xmlSecTransformCtxCreateAndPrepend ()">xmlSecTransformCtxCreateAndPrepend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreate" title="xmlSecTransformCtxCreate ()">xmlSecTransformCtxCreate</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDebugDump" title="xmlSecTransformCtxDebugDump ()">xmlSecTransformCtxDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDebugXmlDump" title="xmlSecTransformCtxDebugXmlDump ()">xmlSecTransformCtxDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDestroy" title="xmlSecTransformCtxDestroy ()">xmlSecTransformCtxDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxExecute" title="xmlSecTransformCtxExecute ()">xmlSecTransformCtxExecute</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxFinalize" title="xmlSecTransformCtxFinalize ()">xmlSecTransformCtxFinalize</a></p></li>
+<li class="listitem"><p><font>XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxInitialize" title="xmlSecTransformCtxInitialize ()">xmlSecTransformCtxInitialize</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx">xmlSecTransformCtx</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxNodeRead" title="xmlSecTransformCtxNodeRead ()">xmlSecTransformCtxNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxNodesListRead" title="xmlSecTransformCtxNodesListRead ()">xmlSecTransformCtxNodesListRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPreExecuteCallback" title="xmlSecTransformCtxPreExecuteCallback ()">xmlSecTransformCtxPreExecuteCallback</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPrepare" title="xmlSecTransformCtxPrepare ()">xmlSecTransformCtxPrepare</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPrepend" title="xmlSecTransformCtxPrepend ()">xmlSecTransformCtxPrepend</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxReset" title="xmlSecTransformCtxReset ()">xmlSecTransformCtxReset</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxSetUri" title="xmlSecTransformCtxSetUri ()">xmlSecTransformCtxSetUri</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxUriExecute" title="xmlSecTransformCtxUriExecute ()">xmlSecTransformCtxUriExecute</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxXmlExecute" title="xmlSecTransformCtxXmlExecute ()">xmlSecTransformCtxXmlExecute</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeBin" title="xmlSecTransformDataTypeBin">xmlSecTransformDataTypeBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType">xmlSecTransformDataType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeUnknown" title="xmlSecTransformDataTypeUnknown">xmlSecTransformDataTypeUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeXml" title="xmlSecTransformDataTypeXml">xmlSecTransformDataTypeXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDebugDump" title="xmlSecTransformDebugDump ()">xmlSecTransformDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDebugXmlDump" title="xmlSecTransformDebugXmlDump ()">xmlSecTransformDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultGetDataType" title="xmlSecTransformDefaultGetDataType ()">xmlSecTransformDefaultGetDataType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPopBin" title="xmlSecTransformDefaultPopBin ()">xmlSecTransformDefaultPopBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPopXml" title="xmlSecTransformDefaultPopXml ()">xmlSecTransformDefaultPopXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPushBin" title="xmlSecTransformDefaultPushBin ()">xmlSecTransformDefaultPushBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPushXml" title="xmlSecTransformDefaultPushXml ()">xmlSecTransformDefaultPushXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDes3CbcGetKlass" title="xmlSecTransformDes3CbcGetKlass ()">xmlSecTransformDes3CbcGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDes3CbcId" title="xmlSecTransformDes3CbcId">xmlSecTransformDes3CbcId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformDestroy" title="xmlSecTransformDestroy ()">xmlSecTransformDestroy</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha1GetKlass" title="xmlSecTransformDsaSha1GetKlass ()">xmlSecTransformDsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha1Id" title="xmlSecTransformDsaSha1Id">xmlSecTransformDsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha256GetKlass" title="xmlSecTransformDsaSha256GetKlass ()">xmlSecTransformDsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformDsaSha256Id" title="xmlSecTransformDsaSha256Id">xmlSecTransformDsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha1GetKlass" title="xmlSecTransformEcdsaSha1GetKlass ()">xmlSecTransformEcdsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha1Id" title="xmlSecTransformEcdsaSha1Id">xmlSecTransformEcdsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha224GetKlass" title="xmlSecTransformEcdsaSha224GetKlass ()">xmlSecTransformEcdsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha224Id" title="xmlSecTransformEcdsaSha224Id">xmlSecTransformEcdsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha256GetKlass" title="xmlSecTransformEcdsaSha256GetKlass ()">xmlSecTransformEcdsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha256Id" title="xmlSecTransformEcdsaSha256Id">xmlSecTransformEcdsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha384GetKlass" title="xmlSecTransformEcdsaSha384GetKlass ()">xmlSecTransformEcdsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha384Id" title="xmlSecTransformEcdsaSha384Id">xmlSecTransformEcdsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha512GetKlass" title="xmlSecTransformEcdsaSha512GetKlass ()">xmlSecTransformEcdsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformEcdsaSha512Id" title="xmlSecTransformEcdsaSha512Id">xmlSecTransformEcdsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformEnvelopedGetKlass" title="xmlSecTransformEnvelopedGetKlass ()">xmlSecTransformEnvelopedGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformEnvelopedId" title="xmlSecTransformEnvelopedId">xmlSecTransformEnvelopedId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NGetKlass" title="xmlSecTransformExclC14NGetKlass ()">xmlSecTransformExclC14NGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NId" title="xmlSecTransformExclC14NId">xmlSecTransformExclC14NId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsGetKlass" title="xmlSecTransformExclC14NWithCommentsGetKlass ()">xmlSecTransformExclC14NWithCommentsGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsId" title="xmlSecTransformExclC14NWithCommentsId">xmlSecTransformExclC14NWithCommentsId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">xmlSecTransformExecuteMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExecute" title="xmlSecTransformExecute ()">xmlSecTransformExecute</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformFinalizeMethod" title="xmlSecTransformFinalizeMethod ()">xmlSecTransformFinalizeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformGetDataTypeMethod" title="xmlSecTransformGetDataTypeMethod ()">xmlSecTransformGetDataTypeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformGetDataType" title="xmlSecTransformGetDataType ()">xmlSecTransformGetDataType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformGetName" title="xmlSecTransformGetName()">xmlSecTransformGetName</a></p></li>
+<li class="listitem"><p><font>xmlSecTransformGost2001GostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGost2001GostR3411-94Id</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3410-2012GostR3411-2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-2012-256GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-2012-256Id</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-2012-512GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-2012-512Id</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-94GetKlass</font></p></li>
+<li class="listitem"><p><font>xmlSecTransformGostR3411-94Id</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacMd5GetKlass" title="xmlSecTransformHmacMd5GetKlass ()">xmlSecTransformHmacMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacMd5Id" title="xmlSecTransformHmacMd5Id">xmlSecTransformHmacMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacRipemd160GetKlass" title="xmlSecTransformHmacRipemd160GetKlass ()">xmlSecTransformHmacRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacRipemd160Id" title="xmlSecTransformHmacRipemd160Id">xmlSecTransformHmacRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha1GetKlass" title="xmlSecTransformHmacSha1GetKlass ()">xmlSecTransformHmacSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha1Id" title="xmlSecTransformHmacSha1Id">xmlSecTransformHmacSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha224GetKlass" title="xmlSecTransformHmacSha224GetKlass ()">xmlSecTransformHmacSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha224Id" title="xmlSecTransformHmacSha224Id">xmlSecTransformHmacSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha256GetKlass" title="xmlSecTransformHmacSha256GetKlass ()">xmlSecTransformHmacSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha256Id" title="xmlSecTransformHmacSha256Id">xmlSecTransformHmacSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha384GetKlass" title="xmlSecTransformHmacSha384GetKlass ()">xmlSecTransformHmacSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha384Id" title="xmlSecTransformHmacSha384Id">xmlSecTransformHmacSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha512GetKlass" title="xmlSecTransformHmacSha512GetKlass ()">xmlSecTransformHmacSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformHmacSha512Id" title="xmlSecTransformHmacSha512Id">xmlSecTransformHmacSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListDebugDump" title="xmlSecTransformIdListDebugDump ()">xmlSecTransformIdListDebugDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListDebugXmlDump" title="xmlSecTransformIdListDebugXmlDump ()">xmlSecTransformIdListDebugXmlDump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFindByHref" title="xmlSecTransformIdListFindByHref ()">xmlSecTransformIdListFindByHref</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFindByName" title="xmlSecTransformIdListFindByName ()">xmlSecTransformIdListFindByName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFind" title="xmlSecTransformIdListFind ()">xmlSecTransformIdListFind</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListGetKlass" title="xmlSecTransformIdListGetKlass ()">xmlSecTransformIdListGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListId" title="xmlSecTransformIdListId">xmlSecTransformIdListId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsGet" title="xmlSecTransformIdsGet ()">xmlSecTransformIdsGet</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsInit" title="xmlSecTransformIdsInit ()">xmlSecTransformIdsInit</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsRegisterDefault" title="xmlSecTransformIdsRegisterDefault ()">xmlSecTransformIdsRegisterDefault</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsRegister" title="xmlSecTransformIdsRegister ()">xmlSecTransformIdsRegister</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsShutdown" title="xmlSecTransformIdsShutdown ()">xmlSecTransformIdsShutdown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdUnknown" title="xmlSecTransformIdUnknown">xmlSecTransformIdUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11GetKlass" title="xmlSecTransformInclC14N11GetKlass ()">xmlSecTransformInclC14N11GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11Id" title="xmlSecTransformInclC14N11Id">xmlSecTransformInclC14N11Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsGetKlass" title="xmlSecTransformInclC14N11WithCommentsGetKlass ()">xmlSecTransformInclC14N11WithCommentsGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsId" title="xmlSecTransformInclC14N11WithCommentsId">xmlSecTransformInclC14N11WithCommentsId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NGetKlass" title="xmlSecTransformInclC14NGetKlass ()">xmlSecTransformInclC14NGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NId" title="xmlSecTransformInclC14NId">xmlSecTransformInclC14NId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsGetKlass" title="xmlSecTransformInclC14NWithCommentsGetKlass ()">xmlSecTransformInclC14NWithCommentsGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsId" title="xmlSecTransformInclC14NWithCommentsId">xmlSecTransformInclC14NWithCommentsId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInitializeMethod" title="xmlSecTransformInitializeMethod ()">xmlSecTransformInitializeMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecTransformInputURIClose" title="xmlSecTransformInputURIClose ()">xmlSecTransformInputURIClose</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecTransformInputURIGetKlass" title="xmlSecTransformInputURIGetKlass ()">xmlSecTransformInputURIGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecTransformInputURIId" title="xmlSecTransformInputURIId">xmlSecTransformInputURIId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-io.html#xmlSecTransformInputURIOpen" title="xmlSecTransformInputURIOpen ()">xmlSecTransformInputURIOpen</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformIsValid" title="xmlSecTransformIsValid()">xmlSecTransformIsValid</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformKlassGetName" title="xmlSecTransformKlassGetName()">xmlSecTransformKlassGetName</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformKlass" title="struct xmlSecTransformKlass">xmlSecTransformKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes128GetKlass" title="xmlSecTransformKWAes128GetKlass ()">xmlSecTransformKWAes128GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes128Id" title="xmlSecTransformKWAes128Id">xmlSecTransformKWAes128Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes192GetKlass" title="xmlSecTransformKWAes192GetKlass ()">xmlSecTransformKWAes192GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes192Id" title="xmlSecTransformKWAes192Id">xmlSecTransformKWAes192Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes256GetKlass" title="xmlSecTransformKWAes256GetKlass ()">xmlSecTransformKWAes256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWAes256Id" title="xmlSecTransformKWAes256Id">xmlSecTransformKWAes256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWDes3GetKlass" title="xmlSecTransformKWDes3GetKlass ()">xmlSecTransformKWDes3GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformKWDes3Id" title="xmlSecTransformKWDes3Id">xmlSecTransformKWDes3Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformMd5GetKlass" title="xmlSecTransformMd5GetKlass ()">xmlSecTransformMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformMd5Id" title="xmlSecTransformMd5Id">xmlSecTransformMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufGetBuffer" title="xmlSecTransformMemBufGetBuffer ()">xmlSecTransformMemBufGetBuffer</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufGetKlass" title="xmlSecTransformMemBufGetKlass ()">xmlSecTransformMemBufGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufId" title="xmlSecTransformMemBufId">xmlSecTransformMemBufId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformMode" title="enum xmlSecTransformMode">xmlSecTransformMode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform">xmlSecTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeReadMethod" title="xmlSecTransformNodeReadMethod ()">xmlSecTransformNodeReadMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeRead" title="xmlSecTransformNodeRead ()">xmlSecTransformNodeRead</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeWriteMethod" title="xmlSecTransformNodeWriteMethod ()">xmlSecTransformNodeWriteMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformOperation" title="enum xmlSecTransformOperation">xmlSecTransformOperation</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBinMethod" title="xmlSecTransformPopBinMethod ()">xmlSecTransformPopBinMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBin" title="xmlSecTransformPopBin ()">xmlSecTransformPopBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXmlMethod" title="xmlSecTransformPopXmlMethod ()">xmlSecTransformPopXmlMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXml" title="xmlSecTransformPopXml ()">xmlSecTransformPopXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPump" title="xmlSecTransformPump ()">xmlSecTransformPump</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBinMethod" title="xmlSecTransformPushBinMethod ()">xmlSecTransformPushBinMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBin" title="xmlSecTransformPushBin ()">xmlSecTransformPushBin</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXmlMethod" title="xmlSecTransformPushXmlMethod ()">xmlSecTransformPushXmlMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXml" title="xmlSecTransformPushXml ()">xmlSecTransformPushXml</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformRelationshipGetKlass" title="xmlSecTransformRelationshipGetKlass ()">xmlSecTransformRelationshipGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformRelationshipId" title="xmlSecTransformRelationshipId">xmlSecTransformRelationshipId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformRemove" title="xmlSecTransformRemove ()">xmlSecTransformRemove</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NGetKlass" title="xmlSecTransformRemoveXmlTagsC14NGetKlass ()">xmlSecTransformRemoveXmlTagsC14NGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NId" title="xmlSecTransformRemoveXmlTagsC14NId">xmlSecTransformRemoveXmlTagsC14NId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRipemd160GetKlass" title="xmlSecTransformRipemd160GetKlass ()">xmlSecTransformRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRipemd160Id" title="xmlSecTransformRipemd160Id">xmlSecTransformRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaMd5GetKlass" title="xmlSecTransformRsaMd5GetKlass ()">xmlSecTransformRsaMd5GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaMd5Id" title="xmlSecTransformRsaMd5Id">xmlSecTransformRsaMd5Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaOaepGetKlass" title="xmlSecTransformRsaOaepGetKlass ()">xmlSecTransformRsaOaepGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaOaepId" title="xmlSecTransformRsaOaepId">xmlSecTransformRsaOaepId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaPkcs1GetKlass" title="xmlSecTransformRsaPkcs1GetKlass ()">xmlSecTransformRsaPkcs1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaPkcs1Id" title="xmlSecTransformRsaPkcs1Id">xmlSecTransformRsaPkcs1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaRipemd160GetKlass" title="xmlSecTransformRsaRipemd160GetKlass ()">xmlSecTransformRsaRipemd160GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaRipemd160Id" title="xmlSecTransformRsaRipemd160Id">xmlSecTransformRsaRipemd160Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha1GetKlass" title="xmlSecTransformRsaSha1GetKlass ()">xmlSecTransformRsaSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha1Id" title="xmlSecTransformRsaSha1Id">xmlSecTransformRsaSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha224GetKlass" title="xmlSecTransformRsaSha224GetKlass ()">xmlSecTransformRsaSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha224Id" title="xmlSecTransformRsaSha224Id">xmlSecTransformRsaSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha256GetKlass" title="xmlSecTransformRsaSha256GetKlass ()">xmlSecTransformRsaSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha256Id" title="xmlSecTransformRsaSha256Id">xmlSecTransformRsaSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha384GetKlass" title="xmlSecTransformRsaSha384GetKlass ()">xmlSecTransformRsaSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha384Id" title="xmlSecTransformRsaSha384Id">xmlSecTransformRsaSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha512GetKlass" title="xmlSecTransformRsaSha512GetKlass ()">xmlSecTransformRsaSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformRsaSha512Id" title="xmlSecTransformRsaSha512Id">xmlSecTransformRsaSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyMethod" title="xmlSecTransformSetKeyMethod ()">xmlSecTransformSetKeyMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKey" title="xmlSecTransformSetKey ()">xmlSecTransformSetKey</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyReq" title="xmlSecTransformSetKeyReq ()">xmlSecTransformSetKeyReq</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyRequirementsMethod" title="xmlSecTransformSetKeyRequirementsMethod ()">xmlSecTransformSetKeyRequirementsMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha1GetKlass" title="xmlSecTransformSha1GetKlass ()">xmlSecTransformSha1GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha1Id" title="xmlSecTransformSha1Id">xmlSecTransformSha1Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha224GetKlass" title="xmlSecTransformSha224GetKlass ()">xmlSecTransformSha224GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha224Id" title="xmlSecTransformSha224Id">xmlSecTransformSha224Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha256GetKlass" title="xmlSecTransformSha256GetKlass ()">xmlSecTransformSha256GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha256Id" title="xmlSecTransformSha256Id">xmlSecTransformSha256Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha384GetKlass" title="xmlSecTransformSha384GetKlass ()">xmlSecTransformSha384GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha384Id" title="xmlSecTransformSha384Id">xmlSecTransformSha384Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha512GetKlass" title="xmlSecTransformSha512GetKlass ()">xmlSecTransformSha512GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecTransformSha512Id" title="xmlSecTransformSha512Id">xmlSecTransformSha512Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformStatus" title="enum xmlSecTransformStatus">xmlSecTransformStatus</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeAny" title="xmlSecTransformUriTypeAny">xmlSecTransformUriTypeAny</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeCheck" title="xmlSecTransformUriTypeCheck ()">xmlSecTransformUriTypeCheck</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeEmpty" title="xmlSecTransformUriTypeEmpty">xmlSecTransformUriTypeEmpty</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeLocal" title="xmlSecTransformUriTypeLocal">xmlSecTransformUriTypeLocal</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriType" title="xmlSecTransformUriType">xmlSecTransformUriType</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeNone" title="xmlSecTransformUriTypeNone">xmlSecTransformUriTypeNone</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeRemote" title="xmlSecTransformUriTypeRemote">xmlSecTransformUriTypeRemote</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeSameDocument" title="xmlSecTransformUriTypeSameDocument">xmlSecTransformUriTypeSameDocument</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageAny" title="xmlSecTransformUsageAny">xmlSecTransformUsageAny</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageC14NMethod" title="xmlSecTransformUsageC14NMethod">xmlSecTransformUsageC14NMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageDigestMethod" title="xmlSecTransformUsageDigestMethod">xmlSecTransformUsageDigestMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageDSigTransform" title="xmlSecTransformUsageDSigTransform">xmlSecTransformUsageDSigTransform</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageEncryptionMethod" title="xmlSecTransformUsageEncryptionMethod">xmlSecTransformUsageEncryptionMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage">xmlSecTransformUsage</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageSignatureMethod" title="xmlSecTransformUsageSignatureMethod">xmlSecTransformUsageSignatureMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageUnknown" title="xmlSecTransformUsageUnknown">xmlSecTransformUsageUnknown</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()">xmlSecTransformVerifyMethod</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVerify" title="xmlSecTransformVerify ()">xmlSecTransformVerify</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyNodeContent" title="xmlSecTransformVerifyNodeContent ()">xmlSecTransformVerifyNodeContent</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackGetKlass" title="xmlSecTransformVisa3DHackGetKlass ()">xmlSecTransformVisa3DHackGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackId" title="xmlSecTransformVisa3DHackId">xmlSecTransformVisa3DHackId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackSetID" title="xmlSecTransformVisa3DHackSetID ()">xmlSecTransformVisa3DHackSetID</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-parser.html#xmlSecTransformXmlParserGetKlass" title="xmlSecTransformXmlParserGetKlass ()">xmlSecTransformXmlParserGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-parser.html#xmlSecTransformXmlParserId" title="xmlSecTransformXmlParserId">xmlSecTransformXmlParserId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPath2GetKlass" title="xmlSecTransformXPath2GetKlass ()">xmlSecTransformXPath2GetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPath2Id" title="xmlSecTransformXPath2Id">xmlSecTransformXPath2Id</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPathGetKlass" title="xmlSecTransformXPathGetKlass ()">xmlSecTransformXPathGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPathId" title="xmlSecTransformXPathId">xmlSecTransformXPathId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerGetKlass" title="xmlSecTransformXPointerGetKlass ()">xmlSecTransformXPointerGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerId" title="xmlSecTransformXPointerId">xmlSecTransformXPointerId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerSetExpr" title="xmlSecTransformXPointerSetExpr ()">xmlSecTransformXPointerSetExpr</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltGetKlass" title="xmlSecTransformXsltGetKlass ()">xmlSecTransformXsltGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltId" title="xmlSecTransformXsltId">xmlSecTransformXsltId</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltSetDefaultSecurityPrefs" title="xmlSecTransformXsltSetDefaultSecurityPrefs ()">xmlSecTransformXsltSetDefaultSecurityPrefs</a></p></li>
+<li class="listitem"><p><font>XMLSEC-VERSION-INFO</font></p></li>
+<li class="listitem"><p><font>XMLSEC-VERSION-MAJOR</font></p></li>
+<li class="listitem"><p><font>XMLSEC-VERSION-MINOR</font></p></li>
+<li class="listitem"><p><font>XMLSEC-VERSION</font></p></li>
+<li class="listitem"><p><font>XMLSEC-VERSION-SUBMINOR</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUnicode" title="xmlSecWin32ConvertLocaleToUnicode ()">xmlSecWin32ConvertLocaleToUnicode</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUtf8" title="xmlSecWin32ConvertLocaleToUtf8 ()">xmlSecWin32ConvertLocaleToUtf8</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertTstrToUtf8" title="xmlSecWin32ConvertTstrToUtf8 ()">xmlSecWin32ConvertTstrToUtf8</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUnicodeToUtf8" title="xmlSecWin32ConvertUnicodeToUtf8 ()">xmlSecWin32ConvertUnicodeToUtf8</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToLocale" title="xmlSecWin32ConvertUtf8ToLocale ()">xmlSecWin32ConvertUtf8ToLocale</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToTstr" title="xmlSecWin32ConvertUtf8ToTstr ()">xmlSecWin32ConvertUtf8ToTstr</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToUnicode" title="xmlSecWin32ConvertUtf8ToUnicode ()">xmlSecWin32ConvertUtf8ToUnicode</a></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-CERTIFICATE-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-CRL-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-DEFAULT</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-x509.html#xmlSecX509DataGetNodeContent" title="xmlSecX509DataGetNodeContent ()">xmlSecX509DataGetNodeContent</a></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-ISSUERSERIAL-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-SKI-NODE</font></p></li>
+<li class="listitem"><p><font>XMLSEC-X509DATA-SUBJECTNAME-NODE</font></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecX509StoreGetKlass" title="xmlSecX509StoreGetKlass ()">xmlSecX509StoreGetKlass</a></p></li>
+<li class="listitem"><p><a class="link" href="xmlsec-app.html#xmlSecX509StoreId" title="xmlSecX509StoreId">xmlSecX509StoreId</a></p></li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-io.html b/docs/api/xmlsec-io.html
index e6999e9a..36e690bc 100644
--- a/docs/api/xmlsec-io.html
+++ b/docs/api/xmlsec-io.html
@@ -1,374 +1,302 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>io</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="errors" href="xmlsec-errors.html">
-<link rel="NEXT" title="keyinfo" href="xmlsec-keyinfo.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>io: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-errors.html" title="errors">
+<link rel="next" href="xmlsec-keyinfo.html" title="keyinfo">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-io.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-errors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-errors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-keyinfo.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-IO"></a>io</h1>
-<div class="REFNAMEDIV">
-<a name="AEN7298"></a><h2>Name</h2>io -- Input/output support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-IO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7303"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-io"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-io.top_of_page"></a>io</span></h2>
+<p>io — Input/output functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-io.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-io.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECIOINIT">xmlSecIOInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecIOInit" title="xmlSecIOInit ()">xmlSecIOInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECIOSHUTDOWN">xmlSecIOShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecIOShutdown" title="xmlSecIOShutdown ()">xmlSecIOShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECIOCLEANUPCALLBACKS">xmlSecIOCleanupCallbacks</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecIOCleanupCallbacks" title="xmlSecIOCleanupCallbacks ()">xmlSecIOCleanupCallbacks</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECIOREGISTERDEFAULTCALLBACKS">xmlSecIORegisterDefaultCallbacks</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecIORegisterDefaultCallbacks" title="xmlSecIORegisterDefaultCallbacks ()">xmlSecIORegisterDefaultCallbacks</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECIOREGISTERCALLBACKS">xmlSecIORegisterCallbacks</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecIORegisterCallbacks" title="xmlSecIORegisterCallbacks ()">xmlSecIORegisterCallbacks</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIGETKLASS">xmlSecTransformInputURIGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecTransformInputURIGetKlass" title="xmlSecTransformInputURIGetKlass ()">xmlSecTransformInputURIGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIOPEN">xmlSecTransformInputURIOpen</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecTransformInputURIOpen" title="xmlSecTransformInputURIOpen ()">xmlSecTransformInputURIOpen</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURICLOSE">xmlSecTransformInputURIClose</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-io.html#xmlSecTransformInputURIClose" title="xmlSecTransformInputURIClose ()">xmlSecTransformInputURIClose</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-IO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7364"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-io.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-io.html#XMLSECTRANSFORMINPUTURIID">xmlSecTransformInputURIId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-io.html#xmlSecTransformInputURIId" title="xmlSecTransformInputURIId">xmlSecTransformInputURIId</a></td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-IO.DESCRIPTION"></a><h2>Description</h2>
-<p>Input/output support.</p>
+<div class="refsect1">
+<a name="xmlsec-io.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-IO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECIOINIT"></a><h3>xmlSecIOInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecIOInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The IO initialization (called from <a href="xmlsec-xmlsec.html#XMLSECINIT"><span class="TYPE">xmlSecInit</span></a> function).
+<div class="refsect1">
+<a name="xmlsec-io.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecIOInit"></a><h3>xmlSecIOInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecIOInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The IO initialization (called from <a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()"><span class="type">xmlSecInit</span></a> function).
Applications should not call this function directly.</p>
-<div class="REFSECT3">
-<a name="AEN7388"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecIOInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECIOSHUTDOWN"></a><h3>xmlSecIOShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecIOShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The IO clenaup (called from <a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN"><span class="TYPE">xmlSecShutdown</span></a> function).
+<div class="refsect2">
+<a name="xmlSecIOShutdown"></a><h3>xmlSecIOShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecIOShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The IO cleanup (called from <a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()"><span class="type">xmlSecShutdown</span></a> function).
Applications should not call this function directly.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECIOCLEANUPCALLBACKS"></a><h3>xmlSecIOCleanupCallbacks ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecIOCleanupCallbacks (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecIOCleanupCallbacks"></a><h3>xmlSecIOCleanupCallbacks ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecIOCleanupCallbacks (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Clears the entire input callback table. this includes the
compiled-in I/O.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECIOREGISTERDEFAULTCALLBACKS"></a><h3>xmlSecIORegisterDefaultCallbacks ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecIORegisterDefaultCallbacks (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecIORegisterDefaultCallbacks"></a><h3>xmlSecIORegisterDefaultCallbacks ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecIORegisterDefaultCallbacks (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Registers the default compiled-in I/O handlers.</p>
-<div class="REFSECT3">
-<a name="AEN7423"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecIORegisterDefaultCallbacks.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECIOREGISTERCALLBACKS"></a><h3>xmlSecIORegisterCallbacks ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecIORegisterCallbacks (<code class="PARAMETER"><font><span class="TYPE">xmlInputMatchCallback</span></font> matchFunc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlInputOpenCallback</span></font> openFunc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlInputReadCallback</span></font> readFunc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlInputCloseCallback</span></font> closeFunc</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecIORegisterCallbacks"></a><h3>xmlSecIORegisterCallbacks ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecIORegisterCallbacks (<em class="parameter"><code><font><span class="type">xmlInputMatchCallback</span></font> matchFunc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlInputOpenCallback</span></font> openFunc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlInputReadCallback</span></font> readFunc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlInputCloseCallback</span></font> closeFunc</code></em>);</pre>
<p>Register a new set of I/O callback for handling parser input.</p>
-<div class="REFSECT3">
-<a name="AEN7446"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7448"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecIORegisterCallbacks.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>matchFunc</p></td>
-<td><p>the protocol match callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>matchFunc</p></td>
+<td class="parameter_description"><p>the protocol match callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>openFunc</p></td>
-<td><p>the open stream callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>openFunc</p></td>
+<td class="parameter_description"><p>the open stream callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>readFunc</p></td>
-<td><p>the read from stream callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>readFunc</p></td>
+<td class="parameter_description"><p>the read from stream callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>closeFunc</p></td>
-<td><p>the close stream callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>closeFunc</p></td>
+<td class="parameter_description"><p>the close stream callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN7475"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecIORegisterCallbacks.returns"></a><h4>Returns</h4>
<p> the 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINPUTURIGETKLASS"></a><h3>xmlSecTransformInputURIGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformInputURIGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInputURIGetKlass"></a><h3>xmlSecTransformInputURIGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformInputURIGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The input uri transform klass. Reads binary data from an uri.</p>
-<div class="REFSECT3">
-<a name="AEN7488"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInputURIGetKlass.returns"></a><h4>Returns</h4>
<p> input URI transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINPUTURIOPEN"></a><h3>xmlSecTransformInputURIOpen ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformInputURIOpen (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Opens the given <code class="PARAMETER">uri</code>
+<div class="refsect2">
+<a name="xmlSecTransformInputURIOpen"></a><h3>xmlSecTransformInputURIOpen ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformInputURIOpen (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Opens the given <em class="parameter"><code>uri</code></em>
for reading.</p>
-<div class="REFSECT3">
-<a name="AEN7506"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7508"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformInputURIOpen.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to IO transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to IO transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URL to open.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URL to open.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN7523"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInputURIOpen.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINPUTURICLOSE"></a><h3>xmlSecTransformInputURIClose ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformInputURIClose (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
-<p>Closes the given <code class="PARAMETER">transform</code>
- and frees up resourses.</p>
-<div class="REFSECT3">
-<a name="AEN7538"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7540"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformInputURIClose"></a><h3>xmlSecTransformInputURIClose ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformInputURIClose (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
+<p>Closes the given <em class="parameter"><code>transform</code></em>
+ and frees up resources.</p>
+<div class="refsect3">
+<a name="xmlSecTransformInputURIClose.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to IO transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to IO transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN7549"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInputURIClose.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-IO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINPUTURIID"></a><h3>xmlSecTransformInputURIId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformInputURIId</pre>
+<div class="refsect1">
+<a name="xmlsec-io.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecTransformInputURIId"></a><h3>xmlSecTransformInputURIId</h3>
+<pre class="programlisting">#define xmlSecTransformInputURIId</pre>
<p>The Input URI transform id.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-errors.html"><b>&lt;&lt;&lt; errors</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-keyinfo.html"><b>keyinfo &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-keyinfo.html b/docs/api/xmlsec-keyinfo.html
index 6f6df64a..ed6cae15 100644
--- a/docs/api/xmlsec-keyinfo.html
+++ b/docs/api/xmlsec-keyinfo.html
@@ -1,685 +1,643 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keyinfo</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="io" href="xmlsec-io.html">
-<link rel="NEXT" title="keysdata" href="xmlsec-keysdata.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keyinfo: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-io.html" title="io">
+<link rel="next" href="xmlsec-keysdata.html" title="keysdata">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-keyinfo.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-io.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-io.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-keysdata.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-KEYINFO"></a>keyinfo</h1>
-<div class="REFNAMEDIV">
-<a name="AEN7565"></a><h2>Name</h2>keyinfo -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYINFO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7571"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-keyinfo"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-keyinfo.top_of_page"></a>keyinfo</span></h2>
+<p>keyinfo — <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-keyinfo.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-keyinfo.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFONODEREAD">xmlSecKeyInfoNodeRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeRead" title="xmlSecKeyInfoNodeRead ()">xmlSecKeyInfoNodeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFONODEWRITE">xmlSecKeyInfoNodeWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeWrite" title="xmlSecKeyInfoNodeWrite ()">xmlSecKeyInfoNodeWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="RETURNVALUE">xmlSecKeyInfoCtxPtr</span></a></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCREATE">xmlSecKeyInfoCtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="returnvalue">xmlSecKeyInfoCtxPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate" title="xmlSecKeyInfoCtxCreate ()">xmlSecKeyInfoCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDESTROY">xmlSecKeyInfoCtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy" title="xmlSecKeyInfoCtxDestroy ()">xmlSecKeyInfoCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXINITIALIZE">xmlSecKeyInfoCtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize" title="xmlSecKeyInfoCtxInitialize ()">xmlSecKeyInfoCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXFINALIZE">xmlSecKeyInfoCtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize" title="xmlSecKeyInfoCtxFinalize ()">xmlSecKeyInfoCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXRESET">xmlSecKeyInfoCtxReset</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxReset" title="xmlSecKeyInfoCtxReset ()">xmlSecKeyInfoCtxReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCOPYUSERPREF">xmlSecKeyInfoCtxCopyUserPref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCopyUserPref" title="xmlSecKeyInfoCtxCopyUserPref ()">xmlSecKeyInfoCtxCopyUserPref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCREATEENCCTX">xmlSecKeyInfoCtxCreateEncCtx</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreateEncCtx" title="xmlSecKeyInfoCtxCreateEncCtx ()">xmlSecKeyInfoCtxCreateEncCtx</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDEBUGDUMP">xmlSecKeyInfoCtxDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugDump" title="xmlSecKeyInfoCtxDebugDump ()">xmlSecKeyInfoCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDEBUGXMLDUMP">xmlSecKeyInfoCtxDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugXmlDump" title="xmlSecKeyInfoCtxDebugXmlDump ()">xmlSecKeyInfoCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYDATANAMEGETKLASS">xmlSecKeyDataNameGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameGetKlass" title="xmlSecKeyDataNameGetKlass ()">xmlSecKeyDataNameGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYDATAVALUEGETKLASS">xmlSecKeyDataValueGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueGetKlass" title="xmlSecKeyDataValueGetKlass ()">xmlSecKeyDataValueGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYDATARETRIEVALMETHODGETKLASS">xmlSecKeyDataRetrievalMethodGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodGetKlass" title="xmlSecKeyDataRetrievalMethodGetKlass ()">xmlSecKeyDataRetrievalMethodGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keyinfo.html#XMLSECKEYDATAENCRYPTEDKEYGETKLASS">xmlSecKeyDataEncryptedKeyGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyGetKlass" title="xmlSecKeyDataEncryptedKeyGetKlass ()">xmlSecKeyDataEncryptedKeyGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYINFO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7681"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-keyinfo.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYINFOMODE">xmlSecKeyInfoMode</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoMode" title="enum xmlSecKeyInfoMode">xmlSecKeyInfoMode</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS">XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS" title="XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND">XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS">XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS">XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS" title="XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN">XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS">XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS" title="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS" title="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS">XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS">XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS">XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS" title="XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION">XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS">XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS" title="XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE">XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS">XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS">XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX">xmlSecKeyInfoCtx</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx">xmlSecKeyInfoCtx</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYDATANAMEID">xmlSecKeyDataNameId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameId" title="xmlSecKeyDataNameId">xmlSecKeyDataNameId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYDATAVALUEID">xmlSecKeyDataValueId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueId" title="xmlSecKeyDataValueId">xmlSecKeyDataValueId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYDATARETRIEVALMETHODID">xmlSecKeyDataRetrievalMethodId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodId" title="xmlSecKeyDataRetrievalMethodId">xmlSecKeyDataRetrievalMethodId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keyinfo.html#XMLSECKEYDATAENCRYPTEDKEYID">xmlSecKeyDataEncryptedKeyId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyId" title="xmlSecKeyDataEncryptedKeyId">xmlSecKeyDataEncryptedKeyId</a></td>
</tr>
</tbody>
-</table>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-keyinfo.description"></a><h2>Description</h2>
+<p><a class="ulink" href="https://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">KeyInfo</a> is an
+optional element that enables the recipient(s) to obtain
+the key needed to validate the signature. KeyInfo may contain keys,
+names, certificates and other public key management information, such as
+in-band key distribution or key agreement data.</p>
+<p>Schema Definition:</p>
+<div class="informalexample"><pre class="programlisting">
+ &lt;element name="KeyInfo" type="ds:KeyInfoType"/&gt;
+ &lt;complexType name="KeyInfoType" mixed="true"&gt;
+ &lt;choice maxOccurs="unbounded"&gt;
+ &lt;element ref="ds:KeyName"/&gt;
+ &lt;element ref="ds:KeyValue"/&gt;
+ &lt;element ref="ds:RetrievalMethod"/&gt;
+ &lt;element ref="ds:X509Data"/&gt;
+ &lt;element ref="ds:PGPData"/&gt;
+ &lt;element ref="ds:SPKIData"/&gt;
+ &lt;element ref="ds:MgmtData"/&gt;
+ &lt;any processContents="lax" namespace="##other"/&gt;
+ &lt;!-- (1,1) elements from (0,unbounded) namespaces --&gt;
+ &lt;/choice&gt;
+ &lt;attribute name="Id" type="ID" use="optional"/&gt;
+ &lt;/complexType&gt;
+</pre></div>
+<p></p>
+<p>DTD:</p>
+<div class="informalexample"><pre class="programlisting">
+&lt;!ELEMENT KeyInfo (#PCDATA|KeyName|KeyValue|RetrievalMethod|
+ X509Data|PGPData|SPKIData|MgmtData %KeyInfo.ANY;)* &gt;
+&lt;!ATTLIST KeyInfo Id ID #IMPLIED &gt;
+</pre></div>
<p></p>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYINFO.DESCRIPTION"></a><h2>Description</h2>
-<p><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYINFO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFONODEREAD"></a><h3>xmlSecKeyInfoNodeRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyInfoNodeRead (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Parses the &lt;dsig:KeyInfo/&gt; element <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect1">
+<a name="xmlsec-keyinfo.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecKeyInfoNodeRead"></a><h3>xmlSecKeyInfoNodeRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyInfoNodeRead (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Parses the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element <em class="parameter"><code>keyInfoNode</code></em>
, extracts the key data
-and stores into <code class="PARAMETER">key</code>
+and stores into <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN7785"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7787"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoNodeRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to result key object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to result key object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN7808"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoNodeRead.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFONODEWRITE"></a><h3>xmlSecKeyInfoNodeWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyInfoNodeWrite (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Writes the <code class="PARAMETER">key</code>
- into the &lt;dsig:KeyInfo/&gt; element template <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecKeyInfoNodeWrite"></a><h3>xmlSecKeyInfoNodeWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyInfoNodeWrite (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Writes the <em class="parameter"><code>key</code></em>
+ into the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element template <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN7830"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7832"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoNodeWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN7853"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoNodeWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXCREATE"></a><h3>xmlSecKeyInfoCtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="RETURNVALUE">xmlSecKeyInfoCtxPtr</span></a>
-xmlSecKeyInfoCtxCreate (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Allocates and initializes &lt;dsig:KeyInfo/&gt; element processing context.
-Caller is responsible for freeing it by calling <a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXDESTROY"><span class="TYPE">xmlSecKeyInfoCtxDestroy</span></a>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxCreate"></a><h3>xmlSecKeyInfoCtxCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="returnvalue">xmlSecKeyInfoCtxPtr</span></a>
+xmlSecKeyInfoCtxCreate (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Allocates and initializes <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.
+Caller is responsible for freeing it by calling <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy" title="xmlSecKeyInfoCtxDestroy ()"><span class="type">xmlSecKeyInfoCtxDestroy</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN7869"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7871"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN7880"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated object or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXDESTROY"></a><h3>xmlSecKeyInfoCtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyInfoCtxDestroy (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Destroys <code class="PARAMETER">keyInfoCtx</code>
- object created with <a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXCREATE"><span class="TYPE">xmlSecKeyInfoCtxCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN7897"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7899"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxDestroy"></a><h3>xmlSecKeyInfoCtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyInfoCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Destroys <em class="parameter"><code>keyInfoCtx</code></em>
+ object created with <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate" title="xmlSecKeyInfoCtxCreate ()"><span class="type">xmlSecKeyInfoCtxCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXINITIALIZE"></a><h3>xmlSecKeyInfoCtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyInfoCtxInitialize (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Initializes &lt;dsig:KeyInfo/&gt; element processing context. Caller is
-responsible for cleaning it up by <a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXFINALIZE"><span class="TYPE">xmlSecKeyInfoCtxFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN7924"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7926"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxInitialize"></a><h3>xmlSecKeyInfoCtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyInfoCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Initializes <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context. Caller is
+responsible for cleaning it up by <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize" title="xmlSecKeyInfoCtxFinalize ()"><span class="type">xmlSecKeyInfoCtxFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN7941"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXFINALIZE"></a><h3>xmlSecKeyInfoCtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyInfoCtxFinalize (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Cleans up the <code class="PARAMETER">keyInfoCtx</code>
- initialized with <a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTXINITIALIZE"><span class="TYPE">xmlSecKeyInfoCtxInitialize</span></a>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxFinalize"></a><h3>xmlSecKeyInfoCtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyInfoCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Cleans up the <em class="parameter"><code>keyInfoCtx</code></em>
+ initialized with <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize" title="xmlSecKeyInfoCtxInitialize ()"><span class="type">xmlSecKeyInfoCtxInitialize</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN7958"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7960"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXRESET"></a><h3>xmlSecKeyInfoCtxReset ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyInfoCtxReset (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Resets the <code class="PARAMETER">keyInfoCtx</code>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxReset"></a><h3>xmlSecKeyInfoCtxReset ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyInfoCtxReset (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Resets the <em class="parameter"><code>keyInfoCtx</code></em>
state. User settings are not changed.</p>
-<div class="REFSECT3">
-<a name="AEN7981"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN7983"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxReset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXCOPYUSERPREF"></a><h3>xmlSecKeyInfoCtxCopyUserPref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyInfoCtxCopyUserPref (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> src</code>);</pre>
-<p>Copies user preferences from <code class="PARAMETER">src</code>
- context to <code class="PARAMETER">dst</code>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxCopyUserPref"></a><h3>xmlSecKeyInfoCtxCopyUserPref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyInfoCtxCopyUserPref (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> src</code></em>);</pre>
+<p>Copies user preferences from <em class="parameter"><code>src</code></em>
+ context to <em class="parameter"><code>dst</code></em>
context.</p>
-<div class="REFSECT3">
-<a name="AEN8008"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8010"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCopyUserPref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN8025"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCopyUserPref.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXCREATEENCCTX"></a><h3>xmlSecKeyInfoCtxCreateEncCtx ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyInfoCtxCreateEncCtx (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Creates encryption context form processing &lt;enc:EncryptedKey/&gt; child
-of &lt;dsig:KeyInfo/&gt; element.</p>
-<div class="REFSECT3">
-<a name="AEN8039"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8041"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxCreateEncCtx"></a><h3>xmlSecKeyInfoCtxCreateEncCtx ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyInfoCtxCreateEncCtx (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Creates encryption context form processing <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> child
+of <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element.</p>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCreateEncCtx.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN8050"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxCreateEncCtx.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXDEBUGDUMP"></a><h3>xmlSecKeyInfoCtxDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyInfoCtxDebugDump (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints user settings and current context state to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxDebugDump"></a><h3>xmlSecKeyInfoCtxDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyInfoCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints user settings and current context state to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN8068"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8070"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the output file pointer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the output file pointer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTXDEBUGXMLDUMP"></a><h3>xmlSecKeyInfoCtxDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyInfoCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints user settings and current context state in XML format to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtxDebugXmlDump"></a><h3>xmlSecKeyInfoCtxDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyInfoCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints user settings and current context state in XML format to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN8100"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8102"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the output file pointer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the output file pointer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATANAMEGETKLASS"></a><h3>xmlSecKeyDataNameGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataNameGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The &lt;dsig:KeyName/&gt; element key data klass
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-KeyName</span></font>):</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataNameGetKlass"></a><h3>xmlSecKeyDataNameGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataNameGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> element key data klass
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-KeyName</span></font>):</p>
<p>The KeyName element contains a string value (in which white space is
significant) which may be used by the signer to communicate a key
identifier to the recipient. Typically, KeyName contains an identifier
@@ -687,32 +645,32 @@ related to the key pair used to sign the message, but it may contain
other protocol-related information that indirectly identifies a key pair.
(Common uses of KeyName include simple string names for keys, a key index,
a distinguished name (DN), an email address, etc.)</p>
-<div class="REFSECT3">
-<a name="AEN8130"></a><h4>Returns</h4>
-<p> the &lt;dsig:KeyName/&gt; element processing key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataNameGetKlass.returns"></a><h4>Returns</h4>
+<p> the <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAVALUEGETKLASS"></a><h3>xmlSecKeyDataValueGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataValueGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The &lt;dsig:KeyValue/&gt; element key data klass
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-KeyValue</span></font>):</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataValueGetKlass"></a><h3>xmlSecKeyDataValueGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataValueGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> element key data klass
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-KeyValue</span></font>):</p>
<p>The KeyValue element contains a single public key that may be useful in
validating the signature.</p>
-<div class="REFSECT3">
-<a name="AEN8146"></a><h4>Returns</h4>
-<p> the &lt;dsig:KeyValue/&gt; element processing key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataValueGetKlass.returns"></a><h4>Returns</h4>
+<p> the <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARETRIEVALMETHODGETKLASS"></a><h3>xmlSecKeyDataRetrievalMethodGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataRetrievalMethodGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The &lt;dsig:RetrievalMethod/&gt; element key data klass
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-RetrievalMethod</span></font>):
+<div class="refsect2">
+<a name="xmlSecKeyDataRetrievalMethodGetKlass"></a><h3>xmlSecKeyDataRetrievalMethodGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataRetrievalMethodGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> element key data klass
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-RetrievalMethod</span></font>):
A RetrievalMethod element within KeyInfo is used to convey a reference to
KeyInfo information that is stored at another location. For example,
several signatures in a document might use a key verified by an X.509v3
@@ -722,18 +680,18 @@ RetrievalMethod element instead of including the entire chain with a
sequence of X509Certificate elements.</p>
<p>RetrievalMethod uses the same syntax and dereferencing behavior as
Reference's URI and The Reference Processing Model.</p>
-<div class="REFSECT3">
-<a name="AEN8162"></a><h4>Returns</h4>
-<p> the &lt;dsig:RetrievalMethod/&gt; element processing key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataRetrievalMethodGetKlass.returns"></a><h4>Returns</h4>
+<p> the <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAENCRYPTEDKEYGETKLASS"></a><h3>xmlSecKeyDataEncryptedKeyGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataEncryptedKeyGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The &lt;enc:EncryptedKey/&gt; element key data klass
-(http://www.w3.org/TR/xmlenc-core/<font><span class="TYPE">sec-EncryptedKey</span></font>):</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataEncryptedKeyGetKlass"></a><h3>xmlSecKeyDataEncryptedKeyGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataEncryptedKeyGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> element key data klass
+(http://www.w3.org/TR/xmlenc-core/<font><span class="type">sec-EncryptedKey</span></font>):</p>
<p>The EncryptedKey element is used to transport encryption keys from
the originator to a known recipient(s). It may be used as a stand-alone
XML document, be placed within an application document, or appear inside
@@ -741,138 +699,149 @@ an EncryptedData element as a child of a ds:KeyInfo element. The key value
is always encrypted to the recipient(s). When EncryptedKey is decrypted the
resulting octets are made available to the EncryptionMethod algorithm
without any additional processing.</p>
-<div class="REFSECT3">
-<a name="AEN8178"></a><h4>Returns</h4>
-<p> the &lt;enc:EncryptedKey/&gt; element processing key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataEncryptedKeyGetKlass.returns"></a><h4>Returns</h4>
+<p> the <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> element processing key data klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYINFO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOMODE"></a><h3>enum xmlSecKeyInfoMode</h3>
-<p>The <code class="PARAMETER">xmlSecKeyInfoCtx</code>
+<div class="refsect1">
+<a name="xmlsec-keyinfo.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecKeyInfoMode"></a><h3>enum xmlSecKeyInfoMode</h3>
+<p>The <em class="parameter"><code>xmlSecKeyInfoCtx</code></em>
operation mode (read or write).</p>
-<div class="REFSECT3">
-<a name="AEN8189"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8191"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyInfoMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecKeyInfoModeRead</p></td>
-<td><p>read &lt;dsig:KeyInfo /&gt; element.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyInfoModeRead"></a>xmlSecKeyInfoModeRead</p></td>
+<td class="enum_member_description"><p>read <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyInfoModeWrite</p></td>
-<td><p>write &lt;dsig:KeyInfo /&gt; element.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyInfoModeWrite"></a>xmlSecKeyInfoModeWrite</p></td>
+<td class="enum_member_description"><p>write <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND 0x00000001</pre>
-<p>If flag is set then we will continue reading &lt;dsig:KeyInfo /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND 0x00000001
+</pre>
+<p>If flag is set then we will continue reading <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a>
element even when key is already found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD 0x00000002</pre>
-<p>If flag is set then we abort if an unknown &lt;dsig:KeyInfo /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD 0x00000002
+</pre>
+<p>If flag is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a>
child is found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN 0x00000004</pre>
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN 0x00000004
+</pre>
<p>If flags is set then we abort if an unknown key name
-(content of &lt;dsig:KeyName /&gt; element) is found.</p>
+(content of <a class="ulink" href="" target="_top">&lt;dsig:KeyName /&gt;</a> element) is found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD 0x00000008</pre>
-<p>If flags is set then we abort if an unknown &lt;dsig:KeyValue /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD 0x00000008
+</pre>
+<p>If flags is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:KeyValue /&gt;</a>
child is found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF 0x00000010</pre>
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF 0x00000010
+</pre>
<p>If flag is set then we abort if an unknown href attribute
-of &lt;dsig:RetrievalMethod /&gt; element is found.</p>
+of <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element is found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF 0x00000020</pre>
-<p>If flag is set then we abort if an href attribute &lt;dsig:RetrievalMethod /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF 0x00000020
+</pre>
+<p>If flag is set then we abort if an href attribute <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a>
element does not match the real key data type.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD 0x00000100</pre>
-<p>If flags is set then we abort if an unknown &lt;dsig:X509Data /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD 0x00000100
+</pre>
+<p>If flags is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a>
child is found.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS 0x00000200</pre>
-<p>If flag is set then we'll load certificates from &lt;dsig:X509Data /&gt;
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS 0x00000200
+</pre>
+<p>If flag is set then we'll load certificates from <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a>
element without verification.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT 0x00000400</pre>
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT 0x00000400
+</pre>
<p>If flag is set then we'll stop when we could not resolve reference
-to certificate from &lt;dsig:X509IssuerSerial /&gt;, &lt;dsig:X509SKI /&gt; or
-&lt;dsig:X509SubjectName /&gt; elements.</p>
+to certificate from <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial /&gt;</a>, <a class="ulink" href="" target="_top">&lt;dsig:X509SKI /&gt;</a> or</p>
+<a class="ulink" href="" target="_top">&lt;dsig:X509SubjectName /&gt;</a> elements.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT 0x00000800</pre>
-<p>If the flag is set then we'll stop when &lt;dsig:X509Data /&gt; element
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT 0x00000800
+</pre>
+<p>If the flag is set then we'll stop when <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a> element
processing does not return a verified certificate.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION 0x00001000</pre>
-<p>If the flag is set then we'll stop when &lt;enc:EncryptedKey /&gt; element
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION 0x00001000
+</pre>
+<p>If the flag is set then we'll stop when <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element
processing fails.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE 0x00002000</pre>
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE 0x00002000
+</pre>
<p>If the flag is set then we'll stop when we found an empty node.
Otherwise we just ignore it.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS 0x00004000</pre>
+<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS 0x00004000
+</pre>
<p>If the flag is set then we'll skip strict checking of certs and CRLs</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYINFOCTX"></a><h3>struct xmlSecKeyInfoCtx</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyInfoCtx {
+<div class="refsect2">
+<a name="xmlSecKeyInfoCtx"></a><h3>struct xmlSecKeyInfoCtx</h3>
+<pre class="programlisting">struct xmlSecKeyInfoCtx {
void* userData;
unsigned int flags;
unsigned int flags2;
@@ -908,167 +877,168 @@ Otherwise we just ignore it.</p>
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
-<p>The &lt;dsig:KeyInfo /&gt; reading or writing context.</p>
-<div class="REFSECT3">
-<a name="AEN8290"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8292"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+};
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> reading or writing context.</p>
+<div class="refsect3">
+<a name="xmlSecKeyInfoCtx.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">userData</code>;</p></td>
-<td><p>the pointer to user data (xmlsec and xmlsec-crypto
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.userData"></a>userData</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto
never touch this).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags</code>;</p></td>
-<td><p>the bit mask for flags that control processin.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.flags"></a>flags</code></em>;</p></td>
+<td class="struct_member_description"><p>the bit mask for flags that control processin.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags2</code>;</p></td>
-<td><p>reserved for future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.flags2"></a>flags2</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> <code class="STRUCTFIELD">keysMngr</code>;</p></td>
-<td><p>the pointer to current keys manager.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.keysMngr"></a>keysMngr</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to current keys manager.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOMODE"><span class="TYPE">xmlSecKeyInfoMode</span></a> <code class="STRUCTFIELD">mode</code>;</p></td>
-<td><p>do we read or write &lt;dsig:KeyInfo /&gt; element.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoMode" title="enum xmlSecKeyInfoMode"><span class="type">xmlSecKeyInfoMode</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.mode"></a>mode</code></em>;</p></td>
+<td class="struct_member_description"><p>do we read or write <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">enabledKeyData</code>;</p></td>
-<td><p>the list of enabled <code class="PARAMETER">xmlSecKeyDataId</code>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.enabledKeyData"></a>enabledKeyData</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of enabled <em class="parameter"><code>xmlSecKeyDataId</code></em>
(if list is
empty then all data ids are enabled).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">base64LineSize</code>;</p></td>
-<td><p>the max columns size for base64 encoding.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.base64LineSize"></a>base64LineSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the max columns size for base64 encoding.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtx</span></a> <code class="STRUCTFIELD">retrievalMethodCtx</code>;</p></td>
-<td><p>the transforms context for &lt;dsig:RetrievalMethod /&gt;
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtx</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.retrievalMethodCtx"></a>retrievalMethodCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the transforms context for <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a>
element processing.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">maxRetrievalMethodLevel</code>;</p></td>
-<td><p>the max recursion level when processing
-&lt;dsig:RetrievalMethod /&gt; element; default level is 1
-(see also <code class="PARAMETER">curRetrievalMethodLevel</code>
-).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.maxRetrievalMethodLevel"></a>maxRetrievalMethodLevel</code></em>;</p></td>
+<td class="struct_member_description">
+<p>the max recursion level when processing</p>
+<a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element; default level is 1
+(see also <em class="parameter"><code>curRetrievalMethodLevel</code></em>).</td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> <code class="STRUCTFIELD">encCtx</code>;</p></td>
-<td><p>the encryption context for &lt;dsig:EncryptedKey /&gt; element
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.encCtx"></a>encCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the encryption context for <a class="ulink" href="" target="_top">&lt;dsig:EncryptedKey /&gt;</a> element
processing.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">maxEncryptedKeyLevel</code>;</p></td>
-<td><p>the max recursion level when processing
-&lt;enc:EncryptedKey /&gt; element; default level is 1
-(see <code class="PARAMETER">curEncryptedKeyLevel</code>
-).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.maxEncryptedKeyLevel"></a>maxEncryptedKeyLevel</code></em>;</p></td>
+<td class="struct_member_description">
+<p>the max recursion level when processing</p>
+<a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element; default level is 1
+(see <em class="parameter"><code>curEncryptedKeyLevel</code></em>).</td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">time_t</span></font> <code class="STRUCTFIELD">certsVerificationTime</code>;</p></td>
-<td><p>the time to use for X509 certificates verification
+<td class="struct_member_name"><p><font><span class="type">time_t</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.certsVerificationTime"></a>certsVerificationTime</code></em>;</p></td>
+<td class="struct_member_description"><p>the time to use for X509 certificates verification
("not valid before" and "not valid after" checks);
-if <code class="PARAMETER">certsVerificationTime</code>
+if <em class="parameter"><code>certsVerificationTime</code></em>
is equal to 0 (default)
then we verify certificates against the system's
clock "now".</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">certsVerificationDepth</code>;</p></td>
-<td><p>the max certifications chain length (default is 9).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.certsVerificationDepth"></a>certsVerificationDepth</code></em>;</p></td>
+<td class="struct_member_description"><p>the max certifications chain length (default is 9).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">pgpReserved</code>;</p></td>
-<td><p>reserved for PGP.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.pgpReserved"></a>pgpReserved</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for PGP.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">curRetrievalMethodLevel</code>;</p></td>
-<td><p>the current &lt;dsig:RetrievalMethod /&gt; element
-processing level (see <code class="PARAMETER">maxRetrievalMethodLevel</code>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.curRetrievalMethodLevel"></a>curRetrievalMethodLevel</code></em>;</p></td>
+<td class="struct_member_description"><p>the current <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element
+processing level (see <em class="parameter"><code>maxRetrievalMethodLevel</code></em>
).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">curEncryptedKeyLevel</code>;</p></td>
-<td><p>the current &lt;enc:EncryptedKey /&gt; element
-processing level (see <code class="PARAMETER">maxEncryptedKeyLevel</code>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.curEncryptedKeyLevel"></a>curEncryptedKeyLevel</code></em>;</p></td>
+<td class="struct_member_description"><p>the current <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element
+processing level (see <em class="parameter"><code>maxEncryptedKeyLevel</code></em>
).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReq</span></a> <code class="STRUCTFIELD">keyReq</code>;</p></td>
-<td><p>the current key requirements.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReq</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.keyReq"></a>keyReq</code></em>;</p></td>
+<td class="struct_member_description"><p>the current key requirements.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATANAMEID"></a><h3>xmlSecKeyDataNameId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataNameId xmlSecKeyDataNameGetKlass()</pre>
-<p>The &lt;dsig:KeyName&gt; processing class.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataNameId"></a><h3>xmlSecKeyDataNameId</h3>
+<pre class="programlisting">#define xmlSecKeyDataNameId xmlSecKeyDataNameGetKlass()
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> processing class.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAVALUEID"></a><h3>xmlSecKeyDataValueId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataValueId xmlSecKeyDataValueGetKlass()</pre>
-<p>The &lt;dsig:KeyValue&gt; processing class.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataValueId"></a><h3>xmlSecKeyDataValueId</h3>
+<pre class="programlisting">#define xmlSecKeyDataValueId xmlSecKeyDataValueGetKlass()
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> processing class.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATARETRIEVALMETHODID"></a><h3>xmlSecKeyDataRetrievalMethodId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataRetrievalMethodId xmlSecKeyDataRetrievalMethodGetKlass()</pre>
-<p>The &lt;dsig:RetrievalMethod&gt; processing class.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataRetrievalMethodId"></a><h3>xmlSecKeyDataRetrievalMethodId</h3>
+<pre class="programlisting">#define xmlSecKeyDataRetrievalMethodId xmlSecKeyDataRetrievalMethodGetKlass()
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> processing class.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAENCRYPTEDKEYID"></a><h3>xmlSecKeyDataEncryptedKeyId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataEncryptedKeyId xmlSecKeyDataEncryptedKeyGetKlass()</pre>
-<p>The &lt;enc:EncryptedKey&gt; processing class.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataEncryptedKeyId"></a><h3>xmlSecKeyDataEncryptedKeyId</h3>
+<pre class="programlisting">#define xmlSecKeyDataEncryptedKeyId xmlSecKeyDataEncryptedKeyGetKlass()
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> processing class.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-io.html"><b>&lt;&lt;&lt; io</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-keysdata.html"><b>keysdata &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-keys.html b/docs/api/xmlsec-keys.html
index b7659a02..df67374d 100644
--- a/docs/api/xmlsec-keys.html
+++ b/docs/api/xmlsec-keys.html
@@ -1,1944 +1,1872 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keys</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="keysdata" href="xmlsec-keysdata.html">
-<link rel="NEXT" title="keysmngr" href="xmlsec-keysmngr.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keys: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-keysdata.html" title="keysdata">
+<link rel="next" href="xmlsec-keysmngr.html" title="keysmngr">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-keysdata.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-keys.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-keysdata.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-keysmngr.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-KEYS"></a>keys</h1>
-<div class="REFNAMEDIV">
-<a name="AEN11886"></a><h2>Name</h2>keys -- Crypto key object definition.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYS.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11891"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-keys"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-keys.top_of_page"></a>keys</span></h2>
+<p>keys — Crypto key object functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-keys.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-keys.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHINITIALIZE">xmlSecKeyUseWithInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithInitialize" title="xmlSecKeyUseWithInitialize ()">xmlSecKeyUseWithInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHFINALIZE">xmlSecKeyUseWithFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithFinalize" title="xmlSecKeyUseWithFinalize ()">xmlSecKeyUseWithFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHRESET">xmlSecKeyUseWithReset</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithReset" title="xmlSecKeyUseWithReset ()">xmlSecKeyUseWithReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHCOPY">xmlSecKeyUseWithCopy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithCopy" title="xmlSecKeyUseWithCopy ()">xmlSecKeyUseWithCopy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="RETURNVALUE">xmlSecKeyUseWithPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHCREATE">xmlSecKeyUseWithCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="returnvalue">xmlSecKeyUseWithPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithCreate" title="xmlSecKeyUseWithCreate ()">xmlSecKeyUseWithCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="RETURNVALUE">xmlSecKeyUseWithPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHDUPLICATE">xmlSecKeyUseWithDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="returnvalue">xmlSecKeyUseWithPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDuplicate" title="xmlSecKeyUseWithDuplicate ()">xmlSecKeyUseWithDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHDESTROY">xmlSecKeyUseWithDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDestroy" title="xmlSecKeyUseWithDestroy ()">xmlSecKeyUseWithDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHSET">xmlSecKeyUseWithSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithSet" title="xmlSecKeyUseWithSet ()">xmlSecKeyUseWithSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHDEBUGDUMP">xmlSecKeyUseWithDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDebugDump" title="xmlSecKeyUseWithDebugDump ()">xmlSecKeyUseWithDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHDEBUGXMLDUMP">xmlSecKeyUseWithDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithDebugXmlDump" title="xmlSecKeyUseWithDebugXmlDump ()">xmlSecKeyUseWithDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYUSEWITHPTRLISTGETKLASS">xmlSecKeyUseWithPtrListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithPtrListGetKlass" title="xmlSecKeyUseWithPtrListGetKlass ()">xmlSecKeyUseWithPtrListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQINITIALIZE">xmlSecKeyReqInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqInitialize" title="xmlSecKeyReqInitialize ()">xmlSecKeyReqInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQFINALIZE">xmlSecKeyReqFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqFinalize" title="xmlSecKeyReqFinalize ()">xmlSecKeyReqFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQRESET">xmlSecKeyReqReset</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqReset" title="xmlSecKeyReqReset ()">xmlSecKeyReqReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQCOPY">xmlSecKeyReqCopy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqCopy" title="xmlSecKeyReqCopy ()">xmlSecKeyReqCopy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQMATCHKEY">xmlSecKeyReqMatchKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqMatchKey" title="xmlSecKeyReqMatchKey ()">xmlSecKeyReqMatchKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQMATCHKEYVALUE">xmlSecKeyReqMatchKeyValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqMatchKeyValue" title="xmlSecKeyReqMatchKeyValue ()">xmlSecKeyReqMatchKeyValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQDEBUGDUMP">xmlSecKeyReqDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqDebugDump" title="xmlSecKeyReqDebugDump ()">xmlSecKeyReqDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREQDEBUGXMLDUMP">xmlSecKeyReqDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReqDebugXmlDump" title="xmlSecKeyReqDebugXmlDump ()">xmlSecKeyReqDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYCREATE">xmlSecKeyCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyCreate" title="xmlSecKeyCreate ()">xmlSecKeyCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYDESTROY">xmlSecKeyDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()">xmlSecKeyDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYEMPTY">xmlSecKeyEmpty</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyEmpty" title="xmlSecKeyEmpty ()">xmlSecKeyEmpty</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYDUPLICATE">xmlSecKeyDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyDuplicate" title="xmlSecKeyDuplicate ()">xmlSecKeyDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYCOPY">xmlSecKeyCopy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyCopy" title="xmlSecKeyCopy ()">xmlSecKeyCopy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGETNAME">xmlSecKeyGetName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGetName" title="xmlSecKeyGetName ()">xmlSecKeyGetName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYSETNAME">xmlSecKeySetName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeySetName" title="xmlSecKeySetName ()">xmlSecKeySetName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGETTYPE">xmlSecKeyGetType</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGetType" title="xmlSecKeyGetType ()">xmlSecKeyGetType</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGETVALUE">xmlSecKeyGetValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGetValue" title="xmlSecKeyGetValue ()">xmlSecKeyGetValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYSETVALUE">xmlSecKeySetValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeySetValue" title="xmlSecKeySetValue ()">xmlSecKeySetValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGETDATA">xmlSecKeyGetData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGetData" title="xmlSecKeyGetData ()">xmlSecKeyGetData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYENSUREDATA">xmlSecKeyEnsureData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyEnsureData" title="xmlSecKeyEnsureData ()">xmlSecKeyEnsureData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYADOPTDATA">xmlSecKeyAdoptData</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyAdoptData" title="xmlSecKeyAdoptData ()">xmlSecKeyAdoptData</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYDEBUGDUMP">xmlSecKeyDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyDebugDump" title="xmlSecKeyDebugDump ()">xmlSecKeyDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYDEBUGXMLDUMP">xmlSecKeyDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyDebugXmlDump" title="xmlSecKeyDebugXmlDump ()">xmlSecKeyDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGENERATE">xmlSecKeyGenerate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGenerate" title="xmlSecKeyGenerate ()">xmlSecKeyGenerate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYGENERATEBYNAME">xmlSecKeyGenerateByName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyGenerateByName" title="xmlSecKeyGenerateByName ()">xmlSecKeyGenerateByName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYMATCH">xmlSecKeyMatch</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyMatch" title="xmlSecKeyMatch ()">xmlSecKeyMatch</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREADBUFFER">xmlSecKeyReadBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReadBuffer" title="xmlSecKeyReadBuffer ()">xmlSecKeyReadBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREADBINARYFILE">xmlSecKeyReadBinaryFile</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReadBinaryFile" title="xmlSecKeyReadBinaryFile ()">xmlSecKeyReadBinaryFile</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYREADMEMORY">xmlSecKeyReadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyReadMemory" title="xmlSecKeyReadMemory ()">xmlSecKeyReadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYISVALID">xmlSecKeyIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyIsValid" title="xmlSecKeyIsValid()">xmlSecKeyIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYCHECKID">xmlSecKeyCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyCheckId" title="xmlSecKeyCheckId()">xmlSecKeyCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-keys.html#XMLSECKEYPTRLISTGETKLASS">xmlSecKeyPtrListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keys.html#xmlSecKeyPtrListGetKlass" title="xmlSecKeyPtrListGetKlass ()">xmlSecKeyPtrListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYS.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12193"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-keys.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGE">xmlSecKeyUsage</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsage" title="xmlSecKeyUsage">xmlSecKeyUsage</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGESIGN">xmlSecKeyUsageSign</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageSign" title="xmlSecKeyUsageSign">xmlSecKeyUsageSign</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGEVERIFY">xmlSecKeyUsageVerify</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageVerify" title="xmlSecKeyUsageVerify">xmlSecKeyUsageVerify</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGEENCRYPT">xmlSecKeyUsageEncrypt</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageEncrypt" title="xmlSecKeyUsageEncrypt">xmlSecKeyUsageEncrypt</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGEDECRYPT">xmlSecKeyUsageDecrypt</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageDecrypt" title="xmlSecKeyUsageDecrypt">xmlSecKeyUsageDecrypt</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGEKEYEXCHANGE">xmlSecKeyUsageKeyExchange</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageKeyExchange" title="xmlSecKeyUsageKeyExchange">xmlSecKeyUsageKeyExchange</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSAGEANY">xmlSecKeyUsageAny</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUsageAny" title="xmlSecKeyUsageAny">xmlSecKeyUsageAny</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSEWITH">xmlSecKeyUseWith</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith">xmlSecKeyUseWith</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYUSEWITHPTRLISTID">xmlSecKeyUseWithPtrListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWithPtrListId" title="xmlSecKeyUseWithPtrListId">xmlSecKeyUseWithPtrListId</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYREQ">xmlSecKeyReq</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq">xmlSecKeyReq</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keys.html#XMLSECKEY">xmlSecKey</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey">xmlSecKey</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keys.html#XMLSECKEYPTRLISTID">xmlSecKeyPtrListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keys.html#xmlSecKeyPtrListId" title="xmlSecKeyPtrListId">xmlSecKeyPtrListId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYS.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto key object definition.</p>
+<div class="refsect1">
+<a name="xmlsec-keys.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYS.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHINITIALIZE"></a><h3>xmlSecKeyUseWithInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyUseWithInitialize (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>);</pre>
-<p>Initializes <code class="PARAMETER">keyUseWith</code>
+<div class="refsect1">
+<a name="xmlsec-keys.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithInitialize"></a><h3>xmlSecKeyUseWithInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyUseWithInitialize (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>keyUseWith</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN12261"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12263"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12272"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHFINALIZE"></a><h3>xmlSecKeyUseWithFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyUseWithFinalize (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>);</pre>
-<p>Finalizes <code class="PARAMETER">keyUseWith</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithFinalize"></a><h3>xmlSecKeyUseWithFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyUseWithFinalize (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>);</pre>
+<p>Finalizes <em class="parameter"><code>keyUseWith</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN12287"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12289"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHRESET"></a><h3>xmlSecKeyUseWithReset ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyUseWithReset (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>);</pre>
-<p>Resets the <code class="PARAMETER">keyUseWith</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithReset"></a><h3>xmlSecKeyUseWithReset ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyUseWithReset (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>);</pre>
+<p>Resets the <em class="parameter"><code>keyUseWith</code></em>
to its state after initialization.</p>
-<div class="REFSECT3">
-<a name="AEN12310"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12312"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithReset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHCOPY"></a><h3>xmlSecKeyUseWithCopy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyUseWithCopy (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> src</code>);</pre>
-<p>Copies information from <code class="PARAMETER">dst</code>
- to <code class="PARAMETER">src</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithCopy"></a><h3>xmlSecKeyUseWithCopy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyUseWithCopy (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> src</code></em>);</pre>
+<p>Copies information from <em class="parameter"><code>dst</code></em>
+ to <em class="parameter"><code>src</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12337"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12339"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithCopy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12354"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithCopy.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHCREATE"></a><h3>xmlSecKeyUseWithCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="RETURNVALUE">xmlSecKeyUseWithPtr</span></a>
-xmlSecKeyUseWithCreate (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *application</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *identifier</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithCreate"></a><h3>xmlSecKeyUseWithCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="returnvalue">xmlSecKeyUseWithPtr</span></a>
+xmlSecKeyUseWithCreate (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *application</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *identifier</code></em>);</pre>
<p>Creates new xmlSecKeyUseWith object. The caller is responsible for destroying
-returned object with <code class="PARAMETER">xmlSecKeyUseWithDestroy</code>
+returned object with <em class="parameter"><code>xmlSecKeyUseWithDestroy</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN12372"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12374"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>application</p></td>
-<td><p>the application value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>application</p></td>
+<td class="parameter_description"><p>the application value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>identifier</p></td>
-<td><p>the identifier value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>identifier</p></td>
+<td class="parameter_description"><p>the identifier value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12389"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly created object or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHDUPLICATE"></a><h3>xmlSecKeyUseWithDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="RETURNVALUE">xmlSecKeyUseWithPtr</span></a>
-xmlSecKeyUseWithDuplicate (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>);</pre>
-<p>Duplicates <code class="PARAMETER">keyUseWith</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithDuplicate"></a><h3>xmlSecKeyUseWithDuplicate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="returnvalue">xmlSecKeyUseWithPtr</span></a>
+xmlSecKeyUseWithDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>);</pre>
+<p>Duplicates <em class="parameter"><code>keyUseWith</code></em>
object. The caller is responsible for destroying
-returned object with <code class="PARAMETER">xmlSecKeyUseWithDestroy</code>
+returned object with <em class="parameter"><code>xmlSecKeyUseWithDestroy</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN12405"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12407"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12416"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithDuplicate.returns"></a><h4>Returns</h4>
<p> pointer to newly created object or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHDESTROY"></a><h3>xmlSecKeyUseWithDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyUseWithDestroy (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>);</pre>
-<p>Destroys <code class="PARAMETER">keyUseWith</code>
- created with <code class="PARAMETER">xmlSecKeyUseWithCreate</code>
- or <code class="PARAMETER">xmlSecKeyUseWithDuplicate</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithDestroy"></a><h3>xmlSecKeyUseWithDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyUseWithDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>);</pre>
+<p>Destroys <em class="parameter"><code>keyUseWith</code></em>
+ created with <em class="parameter"><code>xmlSecKeyUseWithCreate</code></em>
+ or <em class="parameter"><code>xmlSecKeyUseWithDuplicate</code></em>
functions.</p>
-<div class="REFSECT3">
-<a name="AEN12433"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12435"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHSET"></a><h3>xmlSecKeyUseWithSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyUseWithSet (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *application</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *identifier</code>);</pre>
-<p>Sets <code class="PARAMETER">application</code>
- and <code class="PARAMETER">identifier</code>
- in the <code class="PARAMETER">keyUseWith</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithSet"></a><h3>xmlSecKeyUseWithSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyUseWithSet (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *application</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *identifier</code></em>);</pre>
+<p>Sets <em class="parameter"><code>application</code></em>
+ and <em class="parameter"><code>identifier</code></em>
+ in the <em class="parameter"><code>keyUseWith</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12464"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12466"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>application</p></td>
-<td><p>the new application value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>application</p></td>
+<td class="parameter_description"><p>the new application value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>identifier</p></td>
-<td><p>the new identifier value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>identifier</p></td>
+<td class="parameter_description"><p>the new identifier value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12487"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHDEBUGDUMP"></a><h3>xmlSecKeyUseWithDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyUseWithDebugDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints xmlSecKeyUseWith debug information to a file <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithDebugDump"></a><h3>xmlSecKeyUseWithDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyUseWithDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints xmlSecKeyUseWith debug information to a file <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12505"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12507"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHDEBUGXMLDUMP"></a><h3>xmlSecKeyUseWithDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyUseWithDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYUSEWITH"><span class="TYPE">xmlSecKeyUseWithPtr</span></a> keyUseWith</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints xmlSecKeyUseWith debug information to a file <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithDebugXmlDump"></a><h3>xmlSecKeyUseWithDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyUseWithDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyUseWith" title="struct xmlSecKeyUseWith"><span class="type">xmlSecKeyUseWithPtr</span></a> keyUseWith</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints xmlSecKeyUseWith debug information to a file <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN12537"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12539"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWithDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyUseWith</p></td>
-<td><p>the pointer to information about key application/user.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyUseWith</p></td>
+<td class="parameter_description"><p>the pointer to information about key application/user.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHPTRLISTGETKLASS"></a><h3>xmlSecKeyUseWithPtrListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecKeyUseWithPtrListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithPtrListGetKlass"></a><h3>xmlSecKeyUseWithPtrListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecKeyUseWithPtrListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The key data list klass.</p>
-<div class="REFSECT3">
-<a name="AEN12564"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyUseWithPtrListGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to the key data list klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQINITIALIZE"></a><h3>xmlSecKeyReqInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyReqInitialize (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyReqInitialize"></a><h3>xmlSecKeyReqInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyReqInitialize (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
<p>Initialize key requirements object. Caller is responsible for
-cleaning it with <a href="xmlsec-keys.html#XMLSECKEYREQFINALIZE"><span class="TYPE">xmlSecKeyReqFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN12580"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12582"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+cleaning it with <a class="link" href="xmlsec-keys.html#xmlSecKeyReqFinalize" title="xmlSecKeyReqFinalize ()"><span class="type">xmlSecKeyReqFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyReqInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12591"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReqInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQFINALIZE"></a><h3>xmlSecKeyReqFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyReqFinalize (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
-<p>Cleans the key requirements object initialized with <a href="xmlsec-keys.html#XMLSECKEYREQINITIALIZE"><span class="TYPE">xmlSecKeyReqInitialize</span></a>
+<div class="refsect2">
+<a name="xmlSecKeyReqFinalize"></a><h3>xmlSecKeyReqFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyReqFinalize (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
+<p>Cleans the key requirements object initialized with <a class="link" href="xmlsec-keys.html#xmlSecKeyReqInitialize" title="xmlSecKeyReqInitialize ()"><span class="type">xmlSecKeyReqInitialize</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN12607"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12609"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQRESET"></a><h3>xmlSecKeyReqReset ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyReqReset (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyReqReset"></a><h3>xmlSecKeyReqReset ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyReqReset (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
<p>Resets key requirements object for new key search.</p>
-<div class="REFSECT3">
-<a name="AEN12629"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12631"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqReset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQCOPY"></a><h3>xmlSecKeyReqCopy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyReqCopy (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> src</code>);</pre>
-<p>Copies key requirements from <code class="PARAMETER">src</code>
- object to <code class="PARAMETER">dst</code>
+<div class="refsect2">
+<a name="xmlSecKeyReqCopy"></a><h3>xmlSecKeyReqCopy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyReqCopy (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> src</code></em>);</pre>
+<p>Copies key requirements from <em class="parameter"><code>src</code></em>
+ object to <em class="parameter"><code>dst</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN12656"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12658"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqCopy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12673"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReqCopy.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQMATCHKEY"></a><h3>xmlSecKeyReqMatchKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyReqMatchKey (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Checks whether <code class="PARAMETER">key</code>
- matches key requirements <code class="PARAMETER">keyReq</code>
+<div class="refsect2">
+<a name="xmlSecKeyReqMatchKey"></a><h3>xmlSecKeyReqMatchKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyReqMatchKey (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Checks whether <em class="parameter"><code>key</code></em>
+ matches key requirements <em class="parameter"><code>keyReq</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12692"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12694"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqMatchKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN12709"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReqMatchKey.returns"></a><h4>Returns</h4>
<p> 1 if key matches requirements, 0 if not and a negative value
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQMATCHKEYVALUE"></a><h3>xmlSecKeyReqMatchKeyValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyReqMatchKeyValue (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> value</code>);</pre>
-<p>Checks whether <code class="PARAMETER">keyValue</code>
- matches key requirements <code class="PARAMETER">keyReq</code>
+<div class="refsect2">
+<a name="xmlSecKeyReqMatchKeyValue"></a><h3>xmlSecKeyReqMatchKeyValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyReqMatchKeyValue (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> value</code></em>);</pre>
+<p>Checks whether <em class="parameter"><code>keyValue</code></em>
+ matches key requirements <em class="parameter"><code>keyReq</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12728"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12730"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqMatchKeyValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>value</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12745"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReqMatchKeyValue.returns"></a><h4>Returns</h4>
<p> 1 if key value matches requirements, 0 if not and a negative value
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQDEBUGDUMP"></a><h3>xmlSecKeyReqDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyReqDebugDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">keyReq</code>
- into <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyReqDebugDump"></a><h3>xmlSecKeyReqDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyReqDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>keyReq</code></em>
+ into <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12764"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12766"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQDEBUGXMLDUMP"></a><h3>xmlSecKeyReqDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyReqDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">keyReq</code>
- into <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyReqDebugXmlDump"></a><h3>xmlSecKeyReqDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyReqDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>keyReq</code></em>
+ into <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN12797"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12799"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReqDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYCREATE"></a><h3>xmlSecKeyCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyCreate (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyCreate"></a><h3>xmlSecKeyCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyCreate (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Allocates and initializes new key. Caller is responsible for
-freeing returned object with <a href="xmlsec-keys.html#XMLSECKEYDESTROY"><span class="TYPE">xmlSecKeyDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN12826"></a><h4>Returns</h4>
-<p> the pointer to newly allocated <code class="PARAMETER">xmlSecKey</code>
+freeing returned object with <a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()"><span class="type">xmlSecKeyDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyCreate.returns"></a><h4>Returns</h4>
+<p> the pointer to newly allocated <em class="parameter"><code>xmlSecKey</code></em>
structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDESTROY"></a><h3>xmlSecKeyDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDestroy (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Destroys the key created using <a href="xmlsec-keys.html#XMLSECKEYCREATE"><span class="TYPE">xmlSecKeyCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN12843"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12845"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyDestroy"></a><h3>xmlSecKeyDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Destroys the key created using <a class="link" href="xmlsec-keys.html#xmlSecKeyCreate" title="xmlSecKeyCreate ()"><span class="type">xmlSecKeyCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYEMPTY"></a><h3>xmlSecKeyEmpty ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyEmpty (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Clears the <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyEmpty"></a><h3>xmlSecKeyEmpty ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyEmpty (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Clears the <em class="parameter"><code>key</code></em>
data.</p>
-<div class="REFSECT3">
-<a name="AEN12866"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12868"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyEmpty.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDUPLICATE"></a><h3>xmlSecKeyDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyDuplicate (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Creates a duplicate of the given <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyDuplicate"></a><h3>xmlSecKeyDuplicate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Creates a duplicate of the given <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12889"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12891"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to the <a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKey</span></a> structure.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to the <a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKey</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12902"></a><h4>Returns</h4>
-<p> the pointer to newly allocated <a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKey</span></a> structure
+<div class="refsect3">
+<a name="xmlSecKeyDuplicate.returns"></a><h4>Returns</h4>
+<p> the pointer to newly allocated <a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKey</span></a> structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYCOPY"></a><h3>xmlSecKeyCopy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyCopy (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> keyDst</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> keySrc</code>);</pre>
-<p>Copies key data from <code class="PARAMETER">keySrc</code>
- to <code class="PARAMETER">keyDst</code>
+<div class="refsect2">
+<a name="xmlSecKeyCopy"></a><h3>xmlSecKeyCopy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyCopy (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> keyDst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> keySrc</code></em>);</pre>
+<p>Copies key data from <em class="parameter"><code>keySrc</code></em>
+ to <em class="parameter"><code>keyDst</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN12923"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12925"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyCopy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyDst</p></td>
-<td><p>the destination key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyDst</p></td>
+<td class="parameter_description"><p>the destination key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keySrc</p></td>
-<td><p>the source key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keySrc</p></td>
+<td class="parameter_description"><p>the source key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12940"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyCopy.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGETNAME"></a><h3>xmlSecKeyGetName ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecKeyGetName (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Gets key name (see also <a href="xmlsec-keys.html#XMLSECKEYSETNAME"><span class="TYPE">xmlSecKeySetName</span></a> function).</p>
-<div class="REFSECT3">
-<a name="AEN12956"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12958"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyGetName"></a><h3>xmlSecKeyGetName ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+xmlSecKeyGetName (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Gets key name (see also <a class="link" href="xmlsec-keys.html#xmlSecKeySetName" title="xmlSecKeySetName ()"><span class="type">xmlSecKeySetName</span></a> function).</p>
+<div class="refsect3">
+<a name="xmlSecKeyGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN12967"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyGetName.returns"></a><h4>Returns</h4>
<p> key name.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSETNAME"></a><h3>xmlSecKeySetName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeySetName (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>);</pre>
-<p>Sets key name (see also <a href="xmlsec-keys.html#XMLSECKEYGETNAME"><span class="TYPE">xmlSecKeyGetName</span></a> function).</p>
-<div class="REFSECT3">
-<a name="AEN12986"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN12988"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeySetName"></a><h3>xmlSecKeySetName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeySetName (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>);</pre>
+<p>Sets key name (see also <a class="link" href="xmlsec-keys.html#xmlSecKeyGetName" title="xmlSecKeyGetName ()"><span class="type">xmlSecKeyGetName</span></a> function).</p>
+<div class="refsect3">
+<a name="xmlSecKeySetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the new key name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the new key name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13003"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeySetName.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGETTYPE"></a><h3>xmlSecKeyGetType ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a>
-xmlSecKeyGetType (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Gets <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyGetType"></a><h3>xmlSecKeyGetType ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+xmlSecKeyGetType (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Gets <em class="parameter"><code>key</code></em>
type.</p>
-<div class="REFSECT3">
-<a name="AEN13018"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13020"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyGetType.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13029"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyGetType.returns"></a><h4>Returns</h4>
<p> key type.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGETVALUE"></a><h3>xmlSecKeyGetValue ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecKeyGetValue (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Gets key value (see also <a href="xmlsec-keys.html#XMLSECKEYSETVALUE"><span class="TYPE">xmlSecKeySetValue</span></a> function).</p>
-<div class="REFSECT3">
-<a name="AEN13045"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13047"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyGetValue"></a><h3>xmlSecKeyGetValue ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecKeyGetValue (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Gets key value (see also <a class="link" href="xmlsec-keys.html#xmlSecKeySetValue" title="xmlSecKeySetValue ()"><span class="type">xmlSecKeySetValue</span></a> function).</p>
+<div class="refsect3">
+<a name="xmlSecKeyGetValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13056"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyGetValue.returns"></a><h4>Returns</h4>
<p> key value (crypto material).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSETVALUE"></a><h3>xmlSecKeySetValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeySetValue (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> value</code>);</pre>
-<p>Sets key value (see also <a href="xmlsec-keys.html#XMLSECKEYGETVALUE"><span class="TYPE">xmlSecKeyGetValue</span></a> function).</p>
-<div class="REFSECT3">
-<a name="AEN13075"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13077"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeySetValue"></a><h3>xmlSecKeySetValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeySetValue (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> value</code></em>);</pre>
+<p>Sets key value (see also <a class="link" href="xmlsec-keys.html#xmlSecKeyGetValue" title="xmlSecKeyGetValue ()"><span class="type">xmlSecKeyGetValue</span></a> function).</p>
+<div class="refsect3">
+<a name="xmlSecKeySetValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>value</p></td>
-<td><p>the new value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>value</p></td>
+<td class="parameter_description"><p>the new value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13092"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeySetValue.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGETDATA"></a><h3>xmlSecKeyGetData ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecKeyGetData (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyGetData"></a><h3>xmlSecKeyGetData ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecKeyGetData (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>);</pre>
<p>Gets key's data.</p>
-<div class="REFSECT3">
-<a name="AEN13109"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13111"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyGetData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataId</p></td>
-<td><p>the requested data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the requested data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13126"></a><h4>Returns</h4>
-<p> additional data associated with the <code class="PARAMETER">key</code>
+<div class="refsect3">
+<a name="xmlSecKeyGetData.returns"></a><h4>Returns</h4>
+<p> additional data associated with the <em class="parameter"><code>key</code></em>
(see also
-<a href="xmlsec-keys.html#XMLSECKEYADOPTDATA"><span class="TYPE">xmlSecKeyAdoptData</span></a> function).</p>
+<a class="link" href="xmlsec-keys.html#xmlSecKeyAdoptData" title="xmlSecKeyAdoptData ()"><span class="type">xmlSecKeyAdoptData</span></a> function).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYENSUREDATA"></a><h3>xmlSecKeyEnsureData ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecKeyEnsureData (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>);</pre>
-<p>If necessary, creates key data of <code class="PARAMETER">dataId</code>
- klass and adds to <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyEnsureData"></a><h3>xmlSecKeyEnsureData ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecKeyEnsureData (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>);</pre>
+<p>If necessary, creates key data of <em class="parameter"><code>dataId</code></em>
+ klass and adds to <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13148"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13150"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyEnsureData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataId</p></td>
-<td><p>the requested data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the requested data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13165"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyEnsureData.returns"></a><h4>Returns</h4>
<p> pointer to key data or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYADOPTDATA"></a><h3>xmlSecKeyAdoptData ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyAdoptData (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Adds <code class="PARAMETER">data</code>
- to the <code class="PARAMETER">key</code>
-. The <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecKeyAdoptData"></a><h3>xmlSecKeyAdoptData ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyAdoptData (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Adds <em class="parameter"><code>data</code></em>
+ to the <em class="parameter"><code>key</code></em>
+. The <em class="parameter"><code>data</code></em>
object will be destroyed
-by <code class="PARAMETER">key</code>
+by <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13186"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13188"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyAdoptData.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13203"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyAdoptData.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDEBUGDUMP"></a><h3>xmlSecKeyDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDebugDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the information about the <code class="PARAMETER">key</code>
- to the <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDebugDump"></a><h3>xmlSecKeyDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the information about the <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13222"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13224"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDEBUGXMLDUMP"></a><h3>xmlSecKeyDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the information about the <code class="PARAMETER">key</code>
- to the <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDebugXmlDump"></a><h3>xmlSecKeyDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the information about the <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN13255"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13257"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGENERATE"></a><h3>xmlSecKeyGenerate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyGenerate (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> sizeBits</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Generates new key of requested klass <code class="PARAMETER">dataId</code>
- and <code class="PARAMETER">type</code>
+<div class="refsect2">
+<a name="xmlSecKeyGenerate"></a><h3>xmlSecKeyGenerate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyGenerate (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> sizeBits</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Generates new key of requested klass <em class="parameter"><code>dataId</code></em>
+ and <em class="parameter"><code>type</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13291"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13293"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyGenerate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dataId</p></td>
-<td><p>the requested key klass (rsa, dsa, aes, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the requested key klass (rsa, dsa, aes, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>sizeBits</p></td>
-<td><p>the new key size (in bits!).</p></td>
-<td> </td>
+<td class="parameter_name"><p>sizeBits</p></td>
+<td class="parameter_description"><p>the new key size (in bits!).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the new key type (session, permanent, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the new key type (session, permanent, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13314"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyGenerate.returns"></a><h4>Returns</h4>
<p> pointer to newly created key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYGENERATEBYNAME"></a><h3>xmlSecKeyGenerateByName ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyGenerateByName (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> sizeBits</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Generates new key of requested <code class="PARAMETER">klass</code>
- and <code class="PARAMETER">type</code>
+<div class="refsect2">
+<a name="xmlSecKeyGenerateByName"></a><h3>xmlSecKeyGenerateByName ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyGenerateByName (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> sizeBits</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Generates new key of requested <em class="parameter"><code>klass</code></em>
+ and <em class="parameter"><code>type</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13336"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13338"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyGenerateByName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>name</p></td>
-<td><p>the requested key klass name (rsa, dsa, aes, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the requested key klass name (rsa, dsa, aes, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>sizeBits</p></td>
-<td><p>the new key size (in bits!).</p></td>
-<td> </td>
+<td class="parameter_name"><p>sizeBits</p></td>
+<td class="parameter_description"><p>the new key size (in bits!).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the new key type (session, permanent, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the new key type (session, permanent, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13359"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyGenerateByName.returns"></a><h4>Returns</h4>
<p> pointer to newly created key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYMATCH"></a><h3>xmlSecKeyMatch ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyMatch (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
-<p>Checks whether the <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyMatch"></a><h3>xmlSecKeyMatch ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyMatch (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
+<p>Checks whether the <em class="parameter"><code>key</code></em>
matches the given criteria.</p>
-<div class="REFSECT3">
-<a name="AEN13380"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13382"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyMatch.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the pointer to key name (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the pointer to key name (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13403"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyMatch.returns"></a><h4>Returns</h4>
<p> 1 if the key satisfies the given criteria or 0 otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREADBUFFER"></a><h3>xmlSecKeyReadBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyReadBuffer (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>,
- <code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBuffer</span></a> *buffer</code>);</pre>
-<p>Reads the key value of klass <code class="PARAMETER">dataId</code>
+<div class="refsect2">
+<a name="xmlSecKeyReadBuffer"></a><h3>xmlSecKeyReadBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyReadBuffer (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBuffer</span></a> *buffer</code></em>);</pre>
+<p>Reads the key value of klass <em class="parameter"><code>dataId</code></em>
from a buffer.</p>
-<div class="REFSECT3">
-<a name="AEN13421"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13423"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReadBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dataId</p></td>
-<td><p>the key value data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the key value data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buffer</p></td>
-<td><p>the buffer that contains the binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the buffer that contains the binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13438"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReadBuffer.returns"></a><h4>Returns</h4>
<p> pointer to newly created key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREADBINARYFILE"></a><h3>xmlSecKeyReadBinaryFile ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyReadBinaryFile (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>);</pre>
-<p>Reads the key value of klass <code class="PARAMETER">dataId</code>
- from a binary file <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecKeyReadBinaryFile"></a><h3>xmlSecKeyReadBinaryFile ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyReadBinaryFile (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>);</pre>
+<p>Reads the key value of klass <em class="parameter"><code>dataId</code></em>
+ from a binary file <em class="parameter"><code>filename</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13457"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13459"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReadBinaryFile.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dataId</p></td>
-<td><p>the key value data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the key value data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the key binary filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key binary filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13474"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReadBinaryFile.returns"></a><h4>Returns</h4>
<p> pointer to newly created key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREADMEMORY"></a><h3>xmlSecKeyReadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyReadMemory (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>);</pre>
-<p>Reads the key value of klass <code class="PARAMETER">dataId</code>
- from a memory block <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecKeyReadMemory"></a><h3>xmlSecKeyReadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyReadMemory (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>);</pre>
+<p>Reads the key value of klass <em class="parameter"><code>dataId</code></em>
+ from a memory block <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13496"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13498"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dataId</p></td>
-<td><p>the key value data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the key value data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the memory containing the key</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the memory containing the key</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of the memory block</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of the memory block</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN13519"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyReadMemory.returns"></a><h4>Returns</h4>
<p> pointer to newly created key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYISVALID"></a><h3>xmlSecKeyIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyIsValid(key)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">key</code>
- is not NULL and <code class="PARAMETER">key-&gt;id</code>
+<div class="refsect2">
+<a name="xmlSecKeyIsValid"></a><h3>xmlSecKeyIsValid()</h3>
+<pre class="programlisting">#define xmlSecKeyIsValid(key)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>key</code></em>
+ is not NULL and <em class="parameter"><code>key-&gt;id</code></em>
is not NULL
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN13530"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13532"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYCHECKID"></a><h3>xmlSecKeyCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyCheckId(key, keyId)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">key</code>
- is valid and <code class="PARAMETER">key</code>
-'s id is equal to <code class="PARAMETER">keyId</code>
+<div class="refsect2">
+<a name="xmlSecKeyCheckId"></a><h3>xmlSecKeyCheckId()</h3>
+<pre class="programlisting">#define xmlSecKeyCheckId(key, keyId)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>key</code></em>
+ is valid and <em class="parameter"><code>key</code></em>
+'s id is equal to <em class="parameter"><code>keyId</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN13550"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13552"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyId</p></td>
-<td><p>the key Id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyId</p></td>
+<td class="parameter_description"><p>the key Id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYPTRLISTGETKLASS"></a><h3>xmlSecKeyPtrListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecKeyPtrListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyPtrListGetKlass"></a><h3>xmlSecKeyPtrListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecKeyPtrListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The keys list klass.</p>
-<div class="REFSECT3">
-<a name="AEN13577"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyPtrListGetKlass.returns"></a><h4>Returns</h4>
<p> keys list id.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYS.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGE"></a><h3>xmlSecKeyUsage</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecKeyUsage;</pre>
+<div class="refsect1">
+<a name="xmlsec-keys.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecKeyUsage"></a><h3>xmlSecKeyUsage</h3>
+<pre class="programlisting">typedef unsigned int xmlSecKeyUsage;
+</pre>
<p>The key usage.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGESIGN"></a><h3>xmlSecKeyUsageSign</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageSign 0x00000001</pre>
-<p>Key can be used in any way.</p>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGEVERIFY"></a><h3>xmlSecKeyUsageVerify</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageVerify 0x00000002</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUsageSign"></a><h3>xmlSecKeyUsageSign</h3>
+<pre class="programlisting">#define xmlSecKeyUsageSign 0x00000001
+</pre>
<p>Key for signing.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGEENCRYPT"></a><h3>xmlSecKeyUsageEncrypt</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageEncrypt 0x00000004</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUsageVerify"></a><h3>xmlSecKeyUsageVerify</h3>
+<pre class="programlisting">#define xmlSecKeyUsageVerify 0x00000002
+</pre>
<p>Key for signature verification.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGEDECRYPT"></a><h3>xmlSecKeyUsageDecrypt</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageDecrypt 0x00000008</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUsageEncrypt"></a><h3>xmlSecKeyUsageEncrypt</h3>
+<pre class="programlisting">#define xmlSecKeyUsageEncrypt 0x00000004
+</pre>
<p>An encryption key.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGEKEYEXCHANGE"></a><h3>xmlSecKeyUsageKeyExchange</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageKeyExchange 0x00000010</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUsageDecrypt"></a><h3>xmlSecKeyUsageDecrypt</h3>
+<pre class="programlisting">#define xmlSecKeyUsageDecrypt 0x00000008
+</pre>
+<p>A decryption key.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecKeyUsageKeyExchange"></a><h3>xmlSecKeyUsageKeyExchange</h3>
+<pre class="programlisting">#define xmlSecKeyUsageKeyExchange 0x00000010
+</pre>
<p>The key is used for key exchange.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSAGEANY"></a><h3>xmlSecKeyUsageAny</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUsageAny 0xFFFFFFFF</pre>
-<p>A decryption key.</p>
+<div class="refsect2">
+<a name="xmlSecKeyUsageAny"></a><h3>xmlSecKeyUsageAny</h3>
+<pre class="programlisting">#define xmlSecKeyUsageAny 0xFFFFFFFF
+</pre>
+<p>Key can be used in any way.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITH"></a><h3>struct xmlSecKeyUseWith</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyUseWith {
+<div class="refsect2">
+<a name="xmlSecKeyUseWith"></a><h3>struct xmlSecKeyUseWith</h3>
+<pre class="programlisting">struct xmlSecKeyUseWith {
xmlChar* application;
xmlChar* identifier;
void* reserved1;
void* reserved2;
-};</pre>
+};
+</pre>
<p>Information about application and user of the key.</p>
-<div class="REFSECT3">
-<a name="AEN13630"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13632"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyUseWith.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">application</code>;</p></td>
-<td><p>the application.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyUseWith.application"></a>application</code></em>;</p></td>
+<td class="struct_member_description"><p>the application.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">identifier</code>;</p></td>
-<td><p>the identifier.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyUseWith.identifier"></a>identifier</code></em>;</p></td>
+<td class="struct_member_description"><p>the identifier.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for future use.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyUseWith.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for future use.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved2</code>;</p></td>
-<td><p>reserved for future use.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyUseWith.reserved2"></a>reserved2</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for future use.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYUSEWITHPTRLISTID"></a><h3>xmlSecKeyUseWithPtrListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyUseWithPtrListId xmlSecKeyUseWithPtrListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyUseWithPtrListId"></a><h3>xmlSecKeyUseWithPtrListId</h3>
+<pre class="programlisting">#define xmlSecKeyUseWithPtrListId xmlSecKeyUseWithPtrListGetKlass()
+</pre>
<p>The keys list klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYREQ"></a><h3>struct xmlSecKeyReq</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyReq {
+<div class="refsect2">
+<a name="xmlSecKeyReq"></a><h3>struct xmlSecKeyReq</h3>
+<pre class="programlisting">struct xmlSecKeyReq {
xmlSecKeyDataId keyId;
xmlSecKeyDataType keyType;
xmlSecKeyUsage keyUsage;
@@ -1947,126 +1875,123 @@ xmlSecKeyPtrListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span>
void* reserved1;
void* reserved2;
-};</pre>
+};
+</pre>
<p>The key requirements information.</p>
-<div class="REFSECT3">
-<a name="AEN13683"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13685"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyReq.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecKeyDataId</span></font> <code class="STRUCTFIELD">keyId</code>;</p></td>
-<td><p>the desired key value klass.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecKeyDataId</span></font> <em class="structfield"><code><a name="xmlSecKeyReq.keyId"></a>keyId</code></em>;</p></td>
+<td class="struct_member_description"><p>the desired key value klass.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> <code class="STRUCTFIELD">keyType</code>;</p></td>
-<td><p>the desired key type.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> <em class="structfield"><code><a name="xmlSecKeyReq.keyType"></a>keyType</code></em>;</p></td>
+<td class="struct_member_description"><p>the desired key type.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keys.html#XMLSECKEYUSAGE"><span class="TYPE">xmlSecKeyUsage</span></a> <code class="STRUCTFIELD">keyUsage</code>;</p></td>
-<td><p>the desired key usage.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsage" title="xmlSecKeyUsage"><span class="type">xmlSecKeyUsage</span></a> <em class="structfield"><code><a name="xmlSecKeyReq.keyUsage"></a>keyUsage</code></em>;</p></td>
+<td class="struct_member_description"><p>the desired key usage.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">keyBitsSize</code>;</p></td>
-<td><p>the desired key size (in bits!).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyReq.keyBitsSize"></a>keyBitsSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the desired key size (in bits!).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">keyUseWithList</code>;</p></td>
-<td><p>the desired key use with application/identifier information.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecKeyReq.keyUseWithList"></a>keyUseWithList</code></em>;</p></td>
+<td class="struct_member_description"><p>the desired key use with application/identifier information.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for future use.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyReq.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for future use.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved2</code>;</p></td>
-<td><p>reserved for future use.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyReq.reserved2"></a>reserved2</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for future use.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEY"></a><h3>struct xmlSecKey</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKey {
+<div class="refsect2">
+<a name="xmlSecKey"></a><h3>struct xmlSecKey</h3>
+<pre class="programlisting">struct xmlSecKey {
xmlChar* name;
xmlSecKeyDataPtr value;
xmlSecPtrListPtr dataList;
xmlSecKeyUsage usage;
time_t notValidBefore;
time_t notValidAfter;
-};</pre>
+};
+</pre>
<p>The key.</p>
-<div class="REFSECT3">
-<a name="AEN13757"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13759"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKey.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the key name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKey.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the key name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> <code class="STRUCTFIELD">value</code>;</p></td>
-<td><p>the key value.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> <em class="structfield"><code><a name="xmlSecKey.value"></a>value</code></em>;</p></td>
+<td class="struct_member_description"><p>the key value.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> <code class="STRUCTFIELD">dataList</code>;</p></td>
-<td><p>the key data list.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> <em class="structfield"><code><a name="xmlSecKey.dataList"></a>dataList</code></em>;</p></td>
+<td class="struct_member_description"><p>the key data list.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keys.html#XMLSECKEYUSAGE"><span class="TYPE">xmlSecKeyUsage</span></a> <code class="STRUCTFIELD">usage</code>;</p></td>
-<td><p>the key usage.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyUsage" title="xmlSecKeyUsage"><span class="type">xmlSecKeyUsage</span></a> <em class="structfield"><code><a name="xmlSecKey.usage"></a>usage</code></em>;</p></td>
+<td class="struct_member_description"><p>the key usage.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">time_t</span></font> <code class="STRUCTFIELD">notValidBefore</code>;</p></td>
-<td><p>the start key validity interval.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">time_t</span></font> <em class="structfield"><code><a name="xmlSecKey.notValidBefore"></a>notValidBefore</code></em>;</p></td>
+<td class="struct_member_description"><p>the start key validity interval.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">time_t</span></font> <code class="STRUCTFIELD">notValidAfter</code>;</p></td>
-<td><p>the end key validity interval.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">time_t</span></font> <em class="structfield"><code><a name="xmlSecKey.notValidAfter"></a>notValidAfter</code></em>;</p></td>
+<td class="struct_member_description"><p>the end key validity interval.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYPTRLISTID"></a><h3>xmlSecKeyPtrListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyPtrListId xmlSecKeyPtrListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyPtrListId"></a><h3>xmlSecKeyPtrListId</h3>
+<pre class="programlisting">#define xmlSecKeyPtrListId xmlSecKeyPtrListGetKlass()
+</pre>
<p>The keys list klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-keysdata.html"><b>&lt;&lt;&lt; keysdata</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-keysmngr.html"><b>keysmngr &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-keysdata.html b/docs/api/xmlsec-keysdata.html
index c4c5f15d..1f1990aa 100644
--- a/docs/api/xmlsec-keysdata.html
+++ b/docs/api/xmlsec-keysdata.html
@@ -1,3114 +1,3069 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keysdata</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="keyinfo" href="xmlsec-keyinfo.html">
-<link rel="NEXT" title="keys" href="xmlsec-keys.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keysdata: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-keyinfo.html" title="keyinfo">
+<link rel="next" href="xmlsec-keys.html" title="keys">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-keyinfo.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-keysdata.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-keyinfo.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-keys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-KEYSDATA"></a>keysdata</h1>
-<div class="REFNAMEDIV">
-<a name="AEN8501"></a><h2>Name</h2>keysdata -- Crypto key data object definition.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSDATA.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8506"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
+<div class="refentry">
+<a name="xmlsec-keysdata"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-keysdata.top_of_page"></a>keysdata</span></h2>
+<p>keysdata — Crypto key data object functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-keysdata.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-keysdata.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSGET">xmlSecKeyDataIdsGet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsGet" title="xmlSecKeyDataIdsGet ()">xmlSecKeyDataIdsGet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSINIT">xmlSecKeyDataIdsInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsInit" title="xmlSecKeyDataIdsInit ()">xmlSecKeyDataIdsInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSSHUTDOWN">xmlSecKeyDataIdsShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsShutdown" title="xmlSecKeyDataIdsShutdown ()">xmlSecKeyDataIdsShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSREGISTERDEFAULT">xmlSecKeyDataIdsRegisterDefault</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsRegisterDefault" title="xmlSecKeyDataIdsRegisterDefault ()">xmlSecKeyDataIdsRegisterDefault</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDSREGISTER">xmlSecKeyDataIdsRegister</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdsRegister" title="xmlSecKeyDataIdsRegister ()">xmlSecKeyDataIdsRegister</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATACREATE">xmlSecKeyDataCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCreate" title="xmlSecKeyDataCreate ()">xmlSecKeyDataCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATADUPLICATE">xmlSecKeyDataDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDuplicate" title="xmlSecKeyDataDuplicate ()">xmlSecKeyDataDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATADESTROY">xmlSecKeyDataDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDestroy" title="xmlSecKeyDataDestroy ()">xmlSecKeyDataDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAGENERATE">xmlSecKeyDataGenerate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGenerate" title="xmlSecKeyDataGenerate ()">xmlSecKeyDataGenerate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAGETTYPE">xmlSecKeyDataGetType</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetType" title="xmlSecKeyDataGetType ()">xmlSecKeyDataGetType</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAGETSIZE">xmlSecKeyDataGetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetSize" title="xmlSecKeyDataGetSize ()">xmlSecKeyDataGetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAGETIDENTIFIER">xmlSecKeyDataGetIdentifier</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifier" title="xmlSecKeyDataGetIdentifier ()">xmlSecKeyDataGetIdentifier</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMP">xmlSecKeyDataDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDump" title="xmlSecKeyDataDebugDump ()">xmlSecKeyDataDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGXMLDUMP">xmlSecKeyDataDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugXmlDump" title="xmlSecKeyDataDebugXmlDump ()">xmlSecKeyDataDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREAD">xmlSecKeyDataXmlRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlRead" title="xmlSecKeyDataXmlRead ()">xmlSecKeyDataXmlRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLWRITE">xmlSecKeyDataXmlWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlWrite" title="xmlSecKeyDataXmlWrite ()">xmlSecKeyDataXmlWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINREAD">xmlSecKeyDataBinRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinRead" title="xmlSecKeyDataBinRead ()">xmlSecKeyDataBinRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINWRITE">xmlSecKeyDataBinWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinWrite" title="xmlSecKeyDataBinWrite ()">xmlSecKeyDataBinWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAGETNAME">xmlSecKeyDataGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetName" title="xmlSecKeyDataGetName()">xmlSecKeyDataGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAISVALID">xmlSecKeyDataIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIsValid" title="xmlSecKeyDataIsValid()">xmlSecKeyDataIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKID">xmlSecKeyDataCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckId" title="xmlSecKeyDataCheckId()">xmlSecKeyDataCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKUSAGE">xmlSecKeyDataCheckUsage</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckUsage" title="xmlSecKeyDataCheckUsage()">xmlSecKeyDataCheckUsage</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATACHECKSIZE">xmlSecKeyDataCheckSize</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataCheckSize" title="xmlSecKeyDataCheckSize()">xmlSecKeyDataCheckSize</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDUNKNOWN">xmlSecKeyDataIdUnknown</a></td>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataInitMethod" title="xmlSecKeyDataInitMethod ()">*xmlSecKeyDataInitMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDuplicateMethod" title="xmlSecKeyDataDuplicateMethod ()">*xmlSecKeyDataDuplicateMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAINITMETHOD">*xmlSecKeyDataInitMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFinalizeMethod" title="xmlSecKeyDataFinalizeMethod ()">*xmlSecKeyDataFinalizeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATADUPLICATEMETHOD">*xmlSecKeyDataDuplicateMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlReadMethod" title="xmlSecKeyDataXmlReadMethod ()">*xmlSecKeyDataXmlReadMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAFINALIZEMETHOD">*xmlSecKeyDataFinalizeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlWriteMethod" title="xmlSecKeyDataXmlWriteMethod ()">*xmlSecKeyDataXmlWriteMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREADMETHOD">*xmlSecKeyDataXmlReadMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinReadMethod" title="xmlSecKeyDataBinReadMethod ()">*xmlSecKeyDataBinReadMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLWRITEMETHOD">*xmlSecKeyDataXmlWriteMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinWriteMethod" title="xmlSecKeyDataBinWriteMethod ()">*xmlSecKeyDataBinWriteMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATABINREADMETHOD">*xmlSecKeyDataBinReadMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGenerateMethod" title="xmlSecKeyDataGenerateMethod ()">*xmlSecKeyDataGenerateMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATABINWRITEMETHOD">*xmlSecKeyDataBinWriteMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetTypeMethod" title="xmlSecKeyDataGetTypeMethod ()">*xmlSecKeyDataGetTypeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAGENERATEMETHOD">*xmlSecKeyDataGenerateMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetSizeMethod" title="xmlSecKeyDataGetSizeMethod ()">*xmlSecKeyDataGetSizeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETTYPEMETHOD">*xmlSecKeyDataGetTypeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifierMethod" title="xmlSecKeyDataGetIdentifierMethod ()">*xmlSecKeyDataGetIdentifierMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETSIZEMETHOD">*xmlSecKeyDataGetSizeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDumpMethod" title="xmlSecKeyDataDebugDumpMethod ()">*xmlSecKeyDataDebugDumpMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETIDENTIFIERMETHOD">*xmlSecKeyDataGetIdentifierMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataKlassGetName" title="xmlSecKeyDataKlassGetName()">xmlSecKeyDataKlassGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMPMETHOD">*xmlSecKeyDataDebugDumpMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataListGetKlass" title="xmlSecKeyDataListGetKlass ()">xmlSecKeyDataListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAKLASSGETNAME">xmlSecKeyDataKlassGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListGetKlass" title="xmlSecKeyDataIdListGetKlass ()">xmlSecKeyDataIdListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATALISTGETKLASS">xmlSecKeyDataListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFind" title="xmlSecKeyDataIdListFind ()">xmlSecKeyDataIdListFind</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTGETKLASS">xmlSecKeyDataIdListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByNode" title="xmlSecKeyDataIdListFindByNode ()">xmlSecKeyDataIdListFindByNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFIND">xmlSecKeyDataIdListFind</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByHref" title="xmlSecKeyDataIdListFindByHref ()">xmlSecKeyDataIdListFindByHref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYNODE">xmlSecKeyDataIdListFindByNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByName" title="xmlSecKeyDataIdListFindByName ()">xmlSecKeyDataIdListFindByName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYHREF">xmlSecKeyDataIdListFindByHref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugDump" title="xmlSecKeyDataIdListDebugDump ()">xmlSecKeyDataIdListDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTFINDBYNAME">xmlSecKeyDataIdListFindByName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugXmlDump" title="xmlSecKeyDataIdListDebugXmlDump ()">xmlSecKeyDataIdListDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTDEBUGDUMP">xmlSecKeyDataIdListDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueInitialize" title="xmlSecKeyDataBinaryValueInitialize ()">xmlSecKeyDataBinaryValueInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTDEBUGXMLDUMP">xmlSecKeyDataIdListDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDuplicate" title="xmlSecKeyDataBinaryValueDuplicate ()">xmlSecKeyDataBinaryValueDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEINITIALIZE">xmlSecKeyDataBinaryValueInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueFinalize" title="xmlSecKeyDataBinaryValueFinalize ()">xmlSecKeyDataBinaryValueFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDUPLICATE">xmlSecKeyDataBinaryValueDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlRead" title="xmlSecKeyDataBinaryValueXmlRead ()">xmlSecKeyDataBinaryValueXmlRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEFINALIZE">xmlSecKeyDataBinaryValueFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlWrite" title="xmlSecKeyDataBinaryValueXmlWrite ()">xmlSecKeyDataBinaryValueXmlWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEXMLREAD">xmlSecKeyDataBinaryValueXmlRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinRead" title="xmlSecKeyDataBinaryValueBinRead ()">xmlSecKeyDataBinaryValueBinRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEXMLWRITE">xmlSecKeyDataBinaryValueXmlWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinWrite" title="xmlSecKeyDataBinaryValueBinWrite ()">xmlSecKeyDataBinaryValueBinWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEBINREAD">xmlSecKeyDataBinaryValueBinRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugDump" title="xmlSecKeyDataBinaryValueDebugDump ()">xmlSecKeyDataBinaryValueDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEBINWRITE">xmlSecKeyDataBinaryValueBinWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugXmlDump" title="xmlSecKeyDataBinaryValueDebugXmlDump ()">xmlSecKeyDataBinaryValueDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDEBUGDUMP">xmlSecKeyDataBinaryValueDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetSize" title="xmlSecKeyDataBinaryValueGetSize ()">xmlSecKeyDataBinaryValueGetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEDEBUGXMLDUMP">xmlSecKeyDataBinaryValueDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetBuffer" title="xmlSecKeyDataBinaryValueGetBuffer ()">xmlSecKeyDataBinaryValueGetBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEGETSIZE">xmlSecKeyDataBinaryValueGetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueSetBuffer" title="xmlSecKeyDataBinaryValueSetBuffer ()">xmlSecKeyDataBinaryValueSetBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUEGETBUFFER">xmlSecKeyDataBinaryValueGetBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="returnvalue">xmlSecKeyDataStorePtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCreate" title="xmlSecKeyDataStoreCreate ()">xmlSecKeyDataStoreCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYVALUESETBUFFER">xmlSecKeyDataBinaryValueSetBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreDestroy" title="xmlSecKeyDataStoreDestroy ()">xmlSecKeyDataStoreDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="RETURNVALUE">xmlSecKeyDataStorePtr</span></a></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECREATE">xmlSecKeyDataStoreCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreGetName" title="xmlSecKeyDataStoreGetName()">xmlSecKeyDataStoreGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREDESTROY">xmlSecKeyDataStoreDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreIsValid" title="xmlSecKeyDataStoreIsValid()">xmlSecKeyDataStoreIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREGETNAME">xmlSecKeyDataStoreGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckId" title="xmlSecKeyDataStoreCheckId()">xmlSecKeyDataStoreCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREISVALID">xmlSecKeyDataStoreIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckSize" title="xmlSecKeyDataStoreCheckSize()">xmlSecKeyDataStoreCheckSize</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECHECKID">xmlSecKeyDataStoreCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreInitializeMethod" title="xmlSecKeyDataStoreInitializeMethod ()">*xmlSecKeyDataStoreInitializeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECHECKSIZE">xmlSecKeyDataStoreCheckSize</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreFinalizeMethod" title="xmlSecKeyDataStoreFinalizeMethod ()">*xmlSecKeyDataStoreFinalizeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREINITIALIZEMETHOD">*xmlSecKeyDataStoreInitializeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreKlassGetName" title="xmlSecKeyDataStoreKlassGetName()">xmlSecKeyDataStoreKlassGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREFINALIZEMETHOD">*xmlSecKeyDataStoreFinalizeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListGetKlass" title="xmlSecKeyDataStorePtrListGetKlass ()">xmlSecKeyDataStorePtrListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREKLASSGETNAME">xmlSecKeyDataStoreKlassGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecImportSetPersistKey" title="xmlSecImportSetPersistKey ()">xmlSecImportSetPersistKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREPTRLISTGETKLASS">xmlSecKeyDataStorePtrListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysdata.html#xmlSecImportGetPersistKey" title="xmlSecImportGetPersistKey ()">xmlSecImportGetPersistKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSDATA.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN8983"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-keysdata.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE">xmlSecKeyDataUsage</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage">xmlSecKeyDataUsage</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEUNKNOWN">xmlSecKeyDataUsageUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageUnknown" title="xmlSecKeyDataUsageUnknown">xmlSecKeyDataUsageUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODEREAD">xmlSecKeyDataUsageKeyInfoNodeRead</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeRead" title="xmlSecKeyDataUsageKeyInfoNodeRead">xmlSecKeyDataUsageKeyInfoNodeRead</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODEWRITE">xmlSecKeyDataUsageKeyInfoNodeWrite</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeWrite" title="xmlSecKeyDataUsageKeyInfoNodeWrite">xmlSecKeyDataUsageKeyInfoNodeWrite</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODEREAD">xmlSecKeyDataUsageKeyValueNodeRead</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeRead" title="xmlSecKeyDataUsageKeyValueNodeRead">xmlSecKeyDataUsageKeyValueNodeRead</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODEWRITE">xmlSecKeyDataUsageKeyValueNodeWrite</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeWrite" title="xmlSecKeyDataUsageKeyValueNodeWrite">xmlSecKeyDataUsageKeyValueNodeWrite</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODEXML">xmlSecKeyDataUsageRetrievalMethodNodeXml</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeXml" title="xmlSecKeyDataUsageRetrievalMethodNodeXml">xmlSecKeyDataUsageRetrievalMethodNodeXml</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODEBIN">xmlSecKeyDataUsageRetrievalMethodNodeBin</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeBin" title="xmlSecKeyDataUsageRetrievalMethodNodeBin">xmlSecKeyDataUsageRetrievalMethodNodeBin</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEANY">xmlSecKeyDataUsageAny</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageAny" title="xmlSecKeyDataUsageAny">xmlSecKeyDataUsageAny</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYINFONODE">xmlSecKeyDataUsageKeyInfoNode</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNode" title="xmlSecKeyDataUsageKeyInfoNode">xmlSecKeyDataUsageKeyInfoNode</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGEKEYVALUENODE">xmlSecKeyDataUsageKeyValueNode</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNode" title="xmlSecKeyDataUsageKeyValueNode">xmlSecKeyDataUsageKeyValueNode</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGERETRIEVALMETHODNODE">xmlSecKeyDataUsageRetrievalMethodNode</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNode" title="xmlSecKeyDataUsageRetrievalMethodNode">xmlSecKeyDataUsageRetrievalMethodNode</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE">xmlSecKeyDataType</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType">xmlSecKeyDataType</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEUNKNOWN">xmlSecKeyDataTypeUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeUnknown" title="xmlSecKeyDataTypeUnknown">xmlSecKeyDataTypeUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPENONE">xmlSecKeyDataTypeNone</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeNone" title="xmlSecKeyDataTypeNone">xmlSecKeyDataTypeNone</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPUBLIC">xmlSecKeyDataTypePublic</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePublic" title="xmlSecKeyDataTypePublic">xmlSecKeyDataTypePublic</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPRIVATE">xmlSecKeyDataTypePrivate</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePrivate" title="xmlSecKeyDataTypePrivate">xmlSecKeyDataTypePrivate</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPESYMMETRIC">xmlSecKeyDataTypeSymmetric</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeSymmetric" title="xmlSecKeyDataTypeSymmetric">xmlSecKeyDataTypeSymmetric</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPESESSION">xmlSecKeyDataTypeSession</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeSession" title="xmlSecKeyDataTypeSession">xmlSecKeyDataTypeSession</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEPERMANENT">xmlSecKeyDataTypePermanent</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypePermanent" title="xmlSecKeyDataTypePermanent">xmlSecKeyDataTypePermanent</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPETRUSTED">xmlSecKeyDataTypeTrusted</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeTrusted" title="xmlSecKeyDataTypeTrusted">xmlSecKeyDataTypeTrusted</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEANY">xmlSecKeyDataTypeAny</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeAny" title="xmlSecKeyDataTypeAny">xmlSecKeyDataTypeAny</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT">xmlSecKeyDataFormat</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat">xmlSecKeyDataFormat</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA">xmlSecKeyData</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData">xmlSecKeyData</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAKLASS">xmlSecKeyDataKlass</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdUnknown" title="xmlSecKeyDataIdUnknown">xmlSecKeyDataIdUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATALISTID">xmlSecKeyDataListId</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataKlass" title="struct xmlSecKeyDataKlass">xmlSecKeyDataKlass</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATAIDLISTID">xmlSecKeyDataIdListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataListId" title="xmlSecKeyDataListId">xmlSecKeyDataListId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATABINARYSIZE">xmlSecKeyDataBinarySize</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataIdListId" title="xmlSecKeyDataIdListId">xmlSecKeyDataIdListId</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE">xmlSecKeyDataStore</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinarySize" title="xmlSecKeyDataBinarySize">xmlSecKeyDataBinarySize</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREIDUNKNOWN">xmlSecKeyDataStoreIdUnknown</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore">xmlSecKeyDataStore</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREKLASS">xmlSecKeyDataStoreKlass</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreIdUnknown" title="xmlSecKeyDataStoreIdUnknown">xmlSecKeyDataStoreIdUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREPTRLISTID">xmlSecKeyDataStorePtrListId</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass" title="struct xmlSecKeyDataStoreKlass">xmlSecKeyDataStoreKlass</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListId" title="xmlSecKeyDataStorePtrListId">xmlSecKeyDataStorePtrListId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-keysdata.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSDATA.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto key data object definition.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSDATA.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDSGET"></a><h3>xmlSecKeyDataIdsGet ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a>
-xmlSecKeyDataIdsGet (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-keysdata.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdsGet"></a><h3>xmlSecKeyDataIdsGet ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+xmlSecKeyDataIdsGet (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets global registered key data klasses list.</p>
-<div class="REFSECT3">
-<a name="AEN9129"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdsGet.returns"></a><h4>Returns</h4>
<p> the pointer to list of all registered key data klasses.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDSINIT"></a><h3>xmlSecKeyDataIdsInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataIdsInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdsInit"></a><h3>xmlSecKeyDataIdsInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataIdsInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Initializes the key data klasses. This function is called from the
-<a href="xmlsec-xmlsec.html#XMLSECINIT"><span class="TYPE">xmlSecInit</span></a> function and the application should not call it directly.</p>
-<div class="REFSECT3">
-<a name="AEN9144"></a><h4>Returns</h4>
+<a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()"><span class="type">xmlSecInit</span></a> function and the application should not call it directly.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdsInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDSSHUTDOWN"></a><h3>xmlSecKeyDataIdsShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataIdsShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdsShutdown"></a><h3>xmlSecKeyDataIdsShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataIdsShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Shuts down the keys data klasses. This function is called from the
-<a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN"><span class="TYPE">xmlSecShutdown</span></a> function and the application should not call it directly.</p>
+<a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()"><span class="type">xmlSecShutdown</span></a> function and the application should not call it directly.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDSREGISTERDEFAULT"></a><h3>xmlSecKeyDataIdsRegisterDefault ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataIdsRegisterDefault (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdsRegisterDefault"></a><h3>xmlSecKeyDataIdsRegisterDefault ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataIdsRegisterDefault (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Registers default (implemented by XML Security Library)
-key data klasses: &lt;dsig:KeyName/&gt; element processing klass,
-&lt;dsig:KeyValue/&gt; element processing klass, ...</p>
-<div class="REFSECT3">
-<a name="AEN9169"></a><h4>Returns</h4>
+key data klasses: <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> element processing klass,</p>
+<a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> element processing klass, ...
+<div class="refsect3">
+<a name="xmlSecKeyDataIdsRegisterDefault.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDSREGISTER"></a><h3>xmlSecKeyDataIdsRegister ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataIdsRegister (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>);</pre>
-<p>Registers <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdsRegister"></a><h3>xmlSecKeyDataIdsRegister ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataIdsRegister (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>);</pre>
+<p>Registers <em class="parameter"><code>id</code></em>
in the global list of key data klasses.</p>
-<div class="REFSECT3">
-<a name="AEN9184"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9186"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdsRegister.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the key data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the key data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN9195"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdsRegister.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATACREATE"></a><h3>xmlSecKeyDataCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecKeyDataCreate (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>);</pre>
-<p>Allocates and initializes new key data of the specified type <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataCreate"></a><h3>xmlSecKeyDataCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecKeyDataCreate (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>);</pre>
+<p>Allocates and initializes new key data of the specified type <em class="parameter"><code>id</code></em>
.
Caller is responsible for destroying returned object with
-<a href="xmlsec-keysdata.html#XMLSECKEYDATADESTROY"><span class="TYPE">xmlSecKeyDataDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN9212"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9214"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDestroy" title="xmlSecKeyDataDestroy ()"><span class="type">xmlSecKeyDataDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the data id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data id.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN9223"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataCreate.returns"></a><h4>Returns</h4>
<p> the pointer to newly allocated key data structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADUPLICATE"></a><h3>xmlSecKeyDataDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecKeyDataDuplicate (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Creates a duplicate of the given <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataDuplicate"></a><h3>xmlSecKeyDataDuplicate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecKeyDataDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Creates a duplicate of the given <em class="parameter"><code>data</code></em>
. Caller is responsible for
-destroying returned object with <a href="xmlsec-keysdata.html#XMLSECKEYDATADESTROY"><span class="TYPE">xmlSecKeyDataDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN9240"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9242"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+destroying returned object with <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDestroy" title="xmlSecKeyDataDestroy ()"><span class="type">xmlSecKeyDataDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to the key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to the key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9251"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataDuplicate.returns"></a><h4>Returns</h4>
<p> the pointer to newly allocated key data structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADESTROY"></a><h3>xmlSecKeyDataDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataDestroy (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDestroy"></a><h3>xmlSecKeyDataDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Destroys the data and frees all allocated memory.</p>
-<div class="REFSECT3">
-<a name="AEN9265"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9267"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to the key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to the key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGENERATE"></a><h3>xmlSecKeyDataGenerate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataGenerate (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> sizeBits</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGenerate"></a><h3>xmlSecKeyDataGenerate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataGenerate (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> sizeBits</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Generates new key data of given size and type.</p>
-<div class="REFSECT3">
-<a name="AEN9293"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9295"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGenerate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>sizeBits</p></td>
-<td><p>the desired key data size (in bits).</p></td>
-<td> </td>
+<td class="parameter_name"><p>sizeBits</p></td>
+<td class="parameter_description"><p>the desired key data size (in bits).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the desired key data type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the desired key data type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN9316"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGenerate.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETTYPE"></a><h3>xmlSecKeyDataGetType ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a>
-xmlSecKeyDataGetType (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetType"></a><h3>xmlSecKeyDataGetType ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+xmlSecKeyDataGetType (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets key data type.</p>
-<div class="REFSECT3">
-<a name="AEN9330"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9332"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetType.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9341"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetType.returns"></a><h4>Returns</h4>
<p> key data type.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETSIZE"></a><h3>xmlSecKeyDataGetSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecKeyDataGetSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetSize"></a><h3>xmlSecKeyDataGetSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecKeyDataGetSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets key data size.</p>
-<div class="REFSECT3">
-<a name="AEN9355"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9357"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN9366"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetSize.returns"></a><h4>Returns</h4>
<p> key data size (in bits).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETIDENTIFIER"></a><h3>xmlSecKeyDataGetIdentifier ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecKeyDataGetIdentifier (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetIdentifier"></a><h3>xmlSecKeyDataGetIdentifier ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+xmlSecKeyDataGetIdentifier (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets key data identifier string.</p>
-<div class="REFSECT3">
-<a name="AEN9380"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9382"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetIdentifier.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9391"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetIdentifier.returns"></a><h4>Returns</h4>
<p> key data id string.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADEBUGDUMP"></a><h3>xmlSecKeyDataDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataDebugDump (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDebugDump"></a><h3>xmlSecKeyDataDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
<p>Prints key data debug info.</p>
-<div class="REFSECT3">
-<a name="AEN9408"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9410"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADEBUGXMLDUMP"></a><h3>xmlSecKeyDataDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDebugXmlDump"></a><h3>xmlSecKeyDataDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
<p>Prints key data debug info in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN9439"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9441"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAXMLREAD"></a><h3>xmlSecKeyDataXmlRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataXmlRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads the key data of klass <code class="PARAMETER">id</code>
- from XML <code class="PARAMETER">node</code>
- and adds them to <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataXmlRead"></a><h3>xmlSecKeyDataXmlRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataXmlRead (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads the key data of klass <em class="parameter"><code>id</code></em>
+ from XML <em class="parameter"><code>node</code></em>
+ and adds them to <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9479"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9481"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the destination key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the destination key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9508"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAXMLWRITE"></a><h3>xmlSecKeyDataXmlWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataXmlWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Writes the key data of klass <code class="PARAMETER">id</code>
- from <code class="PARAMETER">key</code>
- to an XML <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataXmlWrite"></a><h3>xmlSecKeyDataXmlWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataXmlWrite (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Writes the key data of klass <em class="parameter"><code>id</code></em>
+ from <em class="parameter"><code>key</code></em>
+ to an XML <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9534"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9536"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the source key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the source key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN9563"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINREAD"></a><h3>xmlSecKeyDataBinRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads the key data of klass <code class="PARAMETER">id</code>
- from binary buffer <code class="PARAMETER">buf</code>
- to <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinRead"></a><h3>xmlSecKeyDataBinRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinRead (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads the key data of klass <em class="parameter"><code>id</code></em>
+ from binary buffer <em class="parameter"><code>buf</code></em>
+ to <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9592"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9594"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the destination key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the destination key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the input binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the input binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the input buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the input buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9627"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINWRITE"></a><h3>xmlSecKeyDataBinWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> **buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Writes the key data of klass <code class="PARAMETER">id</code>
- from the <code class="PARAMETER">key</code>
- to a binary buffer <code class="PARAMETER">buf</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinWrite"></a><h3>xmlSecKeyDataBinWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinWrite (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> **buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Writes the key data of klass <em class="parameter"><code>id</code></em>
+ from the <em class="parameter"><code>key</code></em>
+ to a binary buffer <em class="parameter"><code>buf</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9656"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9658"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the source key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the source key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the output binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the output binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the output buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the output buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9691"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETNAME"></a><h3>xmlSecKeyDataGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataGetName(data)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetName"></a><h3>xmlSecKeyDataGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyDataGetName(data)</pre>
<p>Macro. Returns the key data name.</p>
-<div class="REFSECT3">
-<a name="AEN9700"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9702"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAISVALID"></a><h3>xmlSecKeyDataIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataIsValid(data)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">data</code>
- is not NULL and <code class="PARAMETER">data-&gt;id</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIsValid"></a><h3>xmlSecKeyDataIsValid()</h3>
+<pre class="programlisting">#define xmlSecKeyDataIsValid(data)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>data</code></em>
+ is not NULL and <em class="parameter"><code>data-&gt;id</code></em>
is not NULL
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN9719"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9721"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATACHECKID"></a><h3>xmlSecKeyDataCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataCheckId(data, dataId)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">data</code>
- is valid and <code class="PARAMETER">data</code>
-'s id is equal to <code class="PARAMETER">dataId</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataCheckId"></a><h3>xmlSecKeyDataCheckId()</h3>
+<pre class="programlisting">#define xmlSecKeyDataCheckId(data, dataId)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>data</code></em>
+ is valid and <em class="parameter"><code>data</code></em>
+'s id is equal to <em class="parameter"><code>dataId</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9739"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9741"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataId</p></td>
-<td><p>the data Id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the data Id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATACHECKUSAGE"></a><h3>xmlSecKeyDataCheckUsage()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataCheckUsage(data, usg)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">data</code>
- is valid and could be used for <code class="PARAMETER">usg</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataCheckUsage"></a><h3>xmlSecKeyDataCheckUsage()</h3>
+<pre class="programlisting">#define xmlSecKeyDataCheckUsage(data, usg)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>data</code></em>
+ is valid and could be used for <em class="parameter"><code>usg</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN9764"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9766"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataCheckUsage.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usg</p></td>
-<td><p>the data usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usg</p></td>
+<td class="parameter_description"><p>the data usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATACHECKSIZE"></a><h3>xmlSecKeyDataCheckSize()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataCheckSize(data, size)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">data</code>
- is valid and <code class="PARAMETER">data</code>
-'s object has at least <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataCheckSize"></a><h3>xmlSecKeyDataCheckSize()</h3>
+<pre class="programlisting">#define xmlSecKeyDataCheckSize(data, size)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>data</code></em>
+ is valid and <em class="parameter"><code>data</code></em>
+'s object has at least <em class="parameter"><code>size</code></em>
bytes.</p>
-<div class="REFSECT3">
-<a name="AEN9790"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9792"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataCheckSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the expected size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the expected size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDUNKNOWN"></a><h3>xmlSecKeyDataIdUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataIdUnknown ((xmlSecKeyDataId)NULL)</pre>
-<p>The "unknown" id.</p>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAINITMETHOD"></a><h3>xmlSecKeyDataInitMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataInitMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataInitMethod"></a><h3>xmlSecKeyDataInitMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataInitMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Key data specific initialization method.</p>
-<div class="REFSECT3">
-<a name="AEN9826"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9828"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataInitMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9837"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataInitMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADUPLICATEMETHOD"></a><h3>xmlSecKeyDataDuplicateMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataDuplicateMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> src</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDuplicateMethod"></a><h3>xmlSecKeyDataDuplicateMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataDuplicateMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> src</code></em>);</pre>
<p>Key data specific duplication (copy) method.</p>
-<div class="REFSECT3">
-<a name="AEN9856"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9858"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataDuplicateMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the poiniter to source key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9873"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataDuplicateMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAFINALIZEMETHOD"></a><h3>xmlSecKeyDataFinalizeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataFinalizeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataFinalizeMethod"></a><h3>xmlSecKeyDataFinalizeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataFinalizeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Key data specific finalization method. All the objects and resources allocated
by the key data object must be freed inside this method.</p>
-<div class="REFSECT3">
-<a name="AEN9889"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9891"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataFinalizeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAXMLREADMETHOD"></a><h3>xmlSecKeyDataXmlReadMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataXmlReadMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataXmlReadMethod"></a><h3>xmlSecKeyDataXmlReadMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataXmlReadMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Key data specific method for reading XML node.</p>
-<div class="REFSECT3">
-<a name="AEN9922"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9924"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlReadMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to data's value XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to data's value XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN9951"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlReadMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAXMLWRITEMETHOD"></a><h3>xmlSecKeyDataXmlWriteMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataXmlWriteMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataXmlWriteMethod"></a><h3>xmlSecKeyDataXmlWriteMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataXmlWriteMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Key data specific method for writing XML node.</p>
-<div class="REFSECT3">
-<a name="AEN9976"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN9978"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlWriteMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to data's value XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to data's value XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10005"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataXmlWriteMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINREADMETHOD"></a><h3>xmlSecKeyDataBinReadMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataBinReadMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinReadMethod"></a><h3>xmlSecKeyDataBinReadMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataBinReadMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Key data specific method for reading binary buffer.</p>
-<div class="REFSECT3">
-<a name="AEN10033"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10035"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinReadMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the input buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the input buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10068"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinReadMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINWRITEMETHOD"></a><h3>xmlSecKeyDataBinWriteMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataBinWriteMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> **buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinWriteMethod"></a><h3>xmlSecKeyDataBinWriteMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataBinWriteMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> **buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Key data specific method for reading binary buffer.</p>
-<div class="REFSECT3">
-<a name="AEN10096"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10098"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinWriteMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the output buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the output buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10131"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinWriteMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGENERATEMETHOD"></a><h3>xmlSecKeyDataGenerateMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataGenerateMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> sizeBits</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGenerateMethod"></a><h3>xmlSecKeyDataGenerateMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataGenerateMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> sizeBits</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Key data specific method for generating new key data.</p>
-<div class="REFSECT3">
-<a name="AEN10153"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10155"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGenerateMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>sizeBits</p></td>
-<td><p>the key data specific size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>sizeBits</p></td>
+<td class="parameter_description"><p>the key data specific size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the required key type (session/permanent, etc.)</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the required key type (session/permanent, etc.)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10176"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGenerateMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETTYPEMETHOD"></a><h3>xmlSecKeyDataGetTypeMethod ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="RETURNVALUE">xmlSecKeyDataType</span></a>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataGetTypeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetTypeMethod"></a><h3>xmlSecKeyDataGetTypeMethod ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="returnvalue">xmlSecKeyDataType</span></a>
+<span class="c_punctuation">(</span>*xmlSecKeyDataGetTypeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Key data specific method to get the key type.</p>
-<div class="REFSECT3">
-<a name="AEN10192"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10194"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetTypeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10203"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetTypeMethod.returns"></a><h4>Returns</h4>
<p> the key type.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETSIZEMETHOD"></a><h3>xmlSecKeyDataGetSizeMethod ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataGetSizeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetSizeMethod"></a><h3>xmlSecKeyDataGetSizeMethod ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+<span class="c_punctuation">(</span>*xmlSecKeyDataGetSizeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Key data specific method to get the key size.</p>
-<div class="REFSECT3">
-<a name="AEN10219"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10221"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetSizeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10230"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetSizeMethod.returns"></a><h4>Returns</h4>
<p> the key size in bits.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAGETIDENTIFIERMETHOD"></a><h3>xmlSecKeyDataGetIdentifierMethod ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">xmlChar</span></font> *
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataGetIdentifierMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataGetIdentifierMethod"></a><h3>xmlSecKeyDataGetIdentifierMethod ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+<span class="c_punctuation">(</span>*xmlSecKeyDataGetIdentifierMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Key data specific method to get the key data identifier string (for example,
X509 data identifier is the subject of the verified cert).</p>
-<div class="REFSECT3">
-<a name="AEN10246"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10248"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataGetIdentifierMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10257"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataGetIdentifierMethod.returns"></a><h4>Returns</h4>
<p> the identifier string or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATADEBUGDUMPMETHOD"></a><h3>xmlSecKeyDataDebugDumpMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataDebugDumpMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataDebugDumpMethod"></a><h3>xmlSecKeyDataDebugDumpMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataDebugDumpMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
<p>Key data specific method for printing debug info.</p>
-<div class="REFSECT3">
-<a name="AEN10276"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10278"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataDebugDumpMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the FILE to print debug info (should be open for writing).</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the FILE to print debug info (should be open for writing).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAKLASSGETNAME"></a><h3>xmlSecKeyDataKlassGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataKlassGetName(klass)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataKlassGetName"></a><h3>xmlSecKeyDataKlassGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyDataKlassGetName(klass)</pre>
<p>Macro. Returns data klass name.</p>
-<div class="REFSECT3">
-<a name="AEN10299"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10301"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataKlassGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>klass</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>klass</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATALISTGETKLASS"></a><h3>xmlSecKeyDataListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecKeyDataListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataListGetKlass"></a><h3>xmlSecKeyDataListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecKeyDataListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The key data list klass.</p>
-<div class="REFSECT3">
-<a name="AEN10320"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataListGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to the key data list klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTGETKLASS"></a><h3>xmlSecKeyDataIdListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecKeyDataIdListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListGetKlass"></a><h3>xmlSecKeyDataIdListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecKeyDataIdListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The key data id list klass.</p>
-<div class="REFSECT3">
-<a name="AEN10333"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to the key data id list klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTFIND"></a><h3>xmlSecKeyDataIdListFind ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataIdListFind (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> dataId</code>);</pre>
-<p>Lookups <code class="PARAMETER">dataId</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListFind"></a><h3>xmlSecKeyDataIdListFind ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataIdListFind (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> dataId</code></em>);</pre>
+<p>Lookups <em class="parameter"><code>dataId</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10352"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10354"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFind.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataId</p></td>
-<td><p>the key data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the key data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10369"></a><h4>Returns</h4>
-<p> 1 if <code class="PARAMETER">dataId</code>
-is found in the <code class="PARAMETER">list</code>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFind.returns"></a><h4>Returns</h4>
+<p> 1 if <em class="parameter"><code>dataId</code></em>
+is found in the <em class="parameter"><code>list</code></em>
, 0 if not and a negative
value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTFINDBYNODE"></a><h3>xmlSecKeyDataIdListFindByNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataIdListFindByNode (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeNs</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE"><span class="TYPE">xmlSecKeyDataUsage</span></a> usage</code>);</pre>
-<p>Lookups data klass in the list with given <code class="PARAMETER">nodeName</code>
-, <code class="PARAMETER">nodeNs</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListFindByNode"></a><h3>xmlSecKeyDataIdListFindByNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataIdListFindByNode (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeNs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage"><span class="type">xmlSecKeyDataUsage</span></a> usage</code></em>);</pre>
+<p>Lookups data klass in the list with given <em class="parameter"><code>nodeName</code></em>
+, <em class="parameter"><code>nodeNs</code></em>
and
-<code class="PARAMETER">usage</code>
- in the <code class="PARAMETER">list</code>
+<em class="parameter"><code>usage</code></em>
+ in the <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10398"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10400"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeName</p></td>
-<td><p>the desired key data klass XML node name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeName</p></td>
+<td class="parameter_description"><p>the desired key data klass XML node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeNs</p></td>
-<td><p>the desired key data klass XML node namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeNs</p></td>
+<td class="parameter_description"><p>the desired key data klass XML node namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the desired key data usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the desired key data usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10427"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByNode.returns"></a><h4>Returns</h4>
<p> key data klass is found and NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTFINDBYHREF"></a><h3>xmlSecKeyDataIdListFindByHref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataIdListFindByHref (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *href</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE"><span class="TYPE">xmlSecKeyDataUsage</span></a> usage</code>);</pre>
-<p>Lookups data klass in the list with given <code class="PARAMETER">href</code>
- and <code class="PARAMETER">usage</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListFindByHref"></a><h3>xmlSecKeyDataIdListFindByHref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataIdListFindByHref (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *href</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage"><span class="type">xmlSecKeyDataUsage</span></a> usage</code></em>);</pre>
+<p>Lookups data klass in the list with given <em class="parameter"><code>href</code></em>
+ and <em class="parameter"><code>usage</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10450"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10452"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByHref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>href</p></td>
-<td><p>the desired key data klass href.</p></td>
-<td> </td>
+<td class="parameter_name"><p>href</p></td>
+<td class="parameter_description"><p>the desired key data klass href.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the desired key data usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the desired key data usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10473"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByHref.returns"></a><h4>Returns</h4>
<p> key data klass is found and NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTFINDBYNAME"></a><h3>xmlSecKeyDataIdListFindByName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecKeyDataIdListFindByName (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE"><span class="TYPE">xmlSecKeyDataUsage</span></a> usage</code>);</pre>
-<p>Lookups data klass in the list with given <code class="PARAMETER">name</code>
- and <code class="PARAMETER">usage</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListFindByName"></a><h3>xmlSecKeyDataIdListFindByName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecKeyDataIdListFindByName (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage"><span class="type">xmlSecKeyDataUsage</span></a> usage</code></em>);</pre>
+<p>Lookups data klass in the list with given <em class="parameter"><code>name</code></em>
+ and <em class="parameter"><code>usage</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10496"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10498"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the desired key data klass name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the desired key data klass name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the desired key data usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the desired key data usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10519"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListFindByName.returns"></a><h4>Returns</h4>
<p> key data klass is found and NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTDEBUGDUMP"></a><h3>xmlSecKeyDataIdListDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataIdListDebugDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary key data debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListDebugDump"></a><h3>xmlSecKeyDataIdListDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataIdListDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary key data debug information to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10537"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10539"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTDEBUGXMLDUMP"></a><h3>xmlSecKeyDataIdListDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataIdListDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary key data debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListDebugXmlDump"></a><h3>xmlSecKeyDataIdListDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataIdListDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary key data debug information to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN10569"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10571"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataIdListDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to key data ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to key data ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEINITIALIZE"></a><h3>xmlSecKeyDataBinaryValueInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueInitialize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueInitialize"></a><h3>xmlSecKeyDataBinaryValueInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueInitialize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Initializes key data.</p>
-<div class="REFSECT3">
-<a name="AEN10597"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10599"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10608"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEDUPLICATE"></a><h3>xmlSecKeyDataBinaryValueDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueDuplicate (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> src</code>);</pre>
-<p>Copies binary key data from <code class="PARAMETER">src</code>
- to <code class="PARAMETER">dst</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueDuplicate"></a><h3>xmlSecKeyDataBinaryValueDuplicate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> src</code></em>);</pre>
+<p>Copies binary key data from <em class="parameter"><code>src</code></em>
+ to <em class="parameter"><code>dst</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10627"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10629"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10644"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueDuplicate.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEFINALIZE"></a><h3>xmlSecKeyDataBinaryValueFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataBinaryValueFinalize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueFinalize"></a><h3>xmlSecKeyDataBinaryValueFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataBinaryValueFinalize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Cleans up binary key data.</p>
-<div class="REFSECT3">
-<a name="AEN10658"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10660"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEXMLREAD"></a><h3>xmlSecKeyDataBinaryValueXmlRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueXmlRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads binary key data from <code class="PARAMETER">node</code>
- to the key by base64 decoding the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueXmlRead"></a><h3>xmlSecKeyDataBinaryValueXmlRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueXmlRead (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads binary key data from <em class="parameter"><code>node</code></em>
+ to the key by base64 decoding the <em class="parameter"><code>node</code></em>
content.</p>
-<div class="REFSECT3">
-<a name="AEN10691"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10693"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueXmlRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to destination key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to destination key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10720"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueXmlRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEXMLWRITE"></a><h3>xmlSecKeyDataBinaryValueXmlWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueXmlWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Base64 encodes binary key data of klass <code class="PARAMETER">id</code>
- from the <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueXmlWrite"></a><h3>xmlSecKeyDataBinaryValueXmlWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueXmlWrite (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Base64 encodes binary key data of klass <em class="parameter"><code>id</code></em>
+ from the <em class="parameter"><code>key</code></em>
and
-sets to the <code class="PARAMETER">node</code>
+sets to the <em class="parameter"><code>node</code></em>
content.</p>
-<div class="REFSECT3">
-<a name="AEN10746"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10748"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueXmlWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to source key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to source key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN10775"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueXmlWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEBINREAD"></a><h3>xmlSecKeyDataBinaryValueBinRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueBinRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads binary key data of the klass <code class="PARAMETER">id</code>
- from <code class="PARAMETER">buf</code>
- to the <code class="PARAMETER">key</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueBinRead"></a><h3>xmlSecKeyDataBinaryValueBinRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueBinRead (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads binary key data of the klass <em class="parameter"><code>id</code></em>
+ from <em class="parameter"><code>buf</code></em>
+ to the <em class="parameter"><code>key</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10804"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10806"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueBinRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to destination key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to destination key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the source binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the source binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the source binary buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the source binary buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10839"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueBinRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEBINWRITE"></a><h3>xmlSecKeyDataBinaryValueBinWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueBinWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataId</span></font> id</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> **buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *bufSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Writes binary key data of klass <code class="PARAMETER">id</code>
- from the <code class="PARAMETER">key</code>
- to <code class="PARAMETER">buf</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueBinWrite"></a><h3>xmlSecKeyDataBinaryValueBinWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueBinWrite (<em class="parameter"><code><font><span class="type">xmlSecKeyDataId</span></font> id</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> **buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *bufSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Writes binary key data of klass <em class="parameter"><code>id</code></em>
+ from the <em class="parameter"><code>key</code></em>
+ to <em class="parameter"><code>buf</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10868"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10870"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueBinWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>id</p></td>
-<td><p>the data klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the data klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to source key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to source key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the destination binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the destination binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the destination binary buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the destination binary buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10903"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueBinWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEDEBUGDUMP"></a><h3>xmlSecKeyDataBinaryValueDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataBinaryValueDebugDump (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary key data debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueDebugDump"></a><h3>xmlSecKeyDataBinaryValueDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataBinaryValueDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary key data debug information to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN10921"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10923"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEDEBUGXMLDUMP"></a><h3>xmlSecKeyDataBinaryValueDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataBinaryValueDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary key data debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueDebugXmlDump"></a><h3>xmlSecKeyDataBinaryValueDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataBinaryValueDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary key data debug information to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN10953"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10955"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEGETSIZE"></a><h3>xmlSecKeyDataBinaryValueGetSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecKeyDataBinaryValueGetSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueGetSize"></a><h3>xmlSecKeyDataBinaryValueGetSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecKeyDataBinaryValueGetSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the binary key data size.</p>
-<div class="REFSECT3">
-<a name="AEN10981"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN10983"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueGetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN10992"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueGetSize.returns"></a><h4>Returns</h4>
<p> binary key data size in bits.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUEGETBUFFER"></a><h3>xmlSecKeyDataBinaryValueGetBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
-xmlSecKeyDataBinaryValueGetBuffer (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueGetBuffer"></a><h3>xmlSecKeyDataBinaryValueGetBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+xmlSecKeyDataBinaryValueGetBuffer (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the binary key data buffer.</p>
-<div class="REFSECT3">
-<a name="AEN11006"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11008"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueGetBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN11017"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueGetBuffer.returns"></a><h4>Returns</h4>
<p> pointer to binary key data buffer.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYVALUESETBUFFER"></a><h3>xmlSecKeyDataBinaryValueSetBuffer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeyDataBinaryValueSetBuffer (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
-<p>Sets the value of <code class="PARAMETER">data</code>
- to <code class="PARAMETER">buf</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinaryValueSetBuffer"></a><h3>xmlSecKeyDataBinaryValueSetBuffer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeyDataBinaryValueSetBuffer (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
+<p>Sets the value of <em class="parameter"><code>data</code></em>
+ to <em class="parameter"><code>buf</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN11039"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11041"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueSetBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the binary buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the binary buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN11062"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataBinaryValueSetBuffer.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTORECREATE"></a><h3>xmlSecKeyDataStoreCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="RETURNVALUE">xmlSecKeyDataStorePtr</span></a>
-xmlSecKeyDataStoreCreate (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataStoreId</span></font> id</code>);</pre>
-<p>Creates new key data store of the specified klass <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreCreate"></a><h3>xmlSecKeyDataStoreCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="returnvalue">xmlSecKeyDataStorePtr</span></a>
+xmlSecKeyDataStoreCreate (<em class="parameter"><code><font><span class="type">xmlSecKeyDataStoreId</span></font> id</code></em>);</pre>
+<p>Creates new key data store of the specified klass <em class="parameter"><code>id</code></em>
. Caller is responsible
-for freeing returned object with <a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREDESTROY"><span class="TYPE">xmlSecKeyDataStoreDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN11079"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11081"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+for freeing returned object with <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreDestroy" title="xmlSecKeyDataStoreDestroy ()"><span class="type">xmlSecKeyDataStoreDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the store id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the store id.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN11090"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreCreate.returns"></a><h4>Returns</h4>
<p> the pointer to newly allocated key data store structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREDESTROY"></a><h3>xmlSecKeyDataStoreDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyDataStoreDestroy (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>);</pre>
-<p>Destroys the key data store created with <a href="xmlsec-keysdata.html#XMLSECKEYDATASTORECREATE"><span class="TYPE">xmlSecKeyDataStoreCreate</span></a>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreDestroy"></a><h3>xmlSecKeyDataStoreDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyDataStoreDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>);</pre>
+<p>Destroys the key data store created with <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreCreate" title="xmlSecKeyDataStoreCreate ()"><span class="type">xmlSecKeyDataStoreCreate</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN11106"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11108"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to the key data store..</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to the key data store..</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREGETNAME"></a><h3>xmlSecKeyDataStoreGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreGetName(store)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreGetName"></a><h3>xmlSecKeyDataStoreGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreGetName(store)</pre>
<p>Macro. Returns key data store name.</p>
-<div class="REFSECT3">
-<a name="AEN11123"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11125"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREISVALID"></a><h3>xmlSecKeyDataStoreIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreIsValid(store)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">store</code>
- is not NULL and <code class="PARAMETER">store-&gt;id</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreIsValid"></a><h3>xmlSecKeyDataStoreIsValid()</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreIsValid(store)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>store</code></em>
+ is not NULL and <em class="parameter"><code>store-&gt;id</code></em>
is not NULL
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN11142"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11144"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTORECHECKID"></a><h3>xmlSecKeyDataStoreCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreCheckId(store, storeId)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">store</code>
- is valid and <code class="PARAMETER">store</code>
-'s id is equal to <code class="PARAMETER">storeId</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreCheckId"></a><h3>xmlSecKeyDataStoreCheckId()</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreCheckId(store, storeId)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>store</code></em>
+ is valid and <em class="parameter"><code>store</code></em>
+'s id is equal to <em class="parameter"><code>storeId</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN11162"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11164"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>storeId</p></td>
-<td><p>the store Id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>storeId</p></td>
+<td class="parameter_description"><p>the store Id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTORECHECKSIZE"></a><h3>xmlSecKeyDataStoreCheckSize()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreCheckSize(store, size)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">data</code>
- is valid and <code class="PARAMETER">stores</code>
-'s object has at least <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreCheckSize"></a><h3>xmlSecKeyDataStoreCheckSize()</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreCheckSize(store, size)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>data</code></em>
+ is valid and <em class="parameter"><code>stores</code></em>
+'s object has at least <em class="parameter"><code>size</code></em>
bytes.</p>
-<div class="REFSECT3">
-<a name="AEN11188"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11190"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreCheckSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the expected size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the expected size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREINITIALIZEMETHOD"></a><h3>xmlSecKeyDataStoreInitializeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataStoreInitializeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreInitializeMethod"></a><h3>xmlSecKeyDataStoreInitializeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataStoreInitializeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>);</pre>
<p>Key data store specific initialization method.</p>
-<div class="REFSECT3">
-<a name="AEN11218"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11220"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreInitializeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the data store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the data store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN11229"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreInitializeMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREFINALIZEMETHOD"></a><h3>xmlSecKeyDataStoreFinalizeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyDataStoreFinalizeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreFinalizeMethod"></a><h3>xmlSecKeyDataStoreFinalizeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyDataStoreFinalizeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>);</pre>
<p>Key data store specific finalization (destroy) method.</p>
-<div class="REFSECT3">
-<a name="AEN11245"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11247"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreFinalizeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the data store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the data store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREKLASSGETNAME"></a><h3>xmlSecKeyDataStoreKlassGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreKlassGetName(klass)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreKlassGetName"></a><h3>xmlSecKeyDataStoreKlassGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreKlassGetName(klass)</pre>
<p>Macro. Returns store klass name.</p>
-<div class="REFSECT3">
-<a name="AEN11262"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11264"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreKlassGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>klass</p></td>
-<td><p>the pointer to store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>klass</p></td>
+<td class="parameter_description"><p>the pointer to store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREPTRLISTGETKLASS"></a><h3>xmlSecKeyDataStorePtrListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecKeyDataStorePtrListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStorePtrListGetKlass"></a><h3>xmlSecKeyDataStorePtrListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecKeyDataStorePtrListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Key data stores list.</p>
-<div class="REFSECT3">
-<a name="AEN11283"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyDataStorePtrListGetKlass.returns"></a><h4>Returns</h4>
<p> key data stores list klass.</p>
</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecImportSetPersistKey"></a><h3>xmlSecImportSetPersistKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecImportSetPersistKey (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecImportGetPersistKey"></a><h3>xmlSecImportGetPersistKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecImportGetPersistKey (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSDATA.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGE"></a><h3>xmlSecKeyDataUsage</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecKeyDataUsage;</pre>
+<div class="refsect1">
+<a name="xmlsec-keysdata.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsage"></a><h3>xmlSecKeyDataUsage</h3>
+<pre class="programlisting">typedef unsigned int xmlSecKeyDataUsage;
+</pre>
<p>The bits mask that determines possible keys data usage.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEUNKNOWN"></a><h3>xmlSecKeyDataUsageUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageUnknown 0x00000</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageUnknown"></a><h3>xmlSecKeyDataUsageUnknown</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageUnknown 0x00000
+</pre>
<p>The key data usage is unknown.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYINFONODEREAD"></a><h3>xmlSecKeyDataUsageKeyInfoNodeRead</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyInfoNodeRead 0x00001</pre>
-<p>The key data could be read from a &lt;dsig:KeyInfo/&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyInfoNodeRead"></a><h3>xmlSecKeyDataUsageKeyInfoNodeRead</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyInfoNodeRead 0x00001
+</pre>
+<p>The key data could be read from a <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYINFONODEWRITE"></a><h3>xmlSecKeyDataUsageKeyInfoNodeWrite</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyInfoNodeWrite 0x00002</pre>
-<p>The key data could be written to a &lt;dsig:KeyInfo /&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyInfoNodeWrite"></a><h3>xmlSecKeyDataUsageKeyInfoNodeWrite</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyInfoNodeWrite 0x00002
+</pre>
+<p>The key data could be written to a <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYVALUENODEREAD"></a><h3>xmlSecKeyDataUsageKeyValueNodeRead</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyValueNodeRead 0x00004</pre>
-<p>The key data could be read from a &lt;dsig:KeyValue /&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyValueNodeRead"></a><h3>xmlSecKeyDataUsageKeyValueNodeRead</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyValueNodeRead 0x00004
+</pre>
+<p>The key data could be read from a <a class="ulink" href="" target="_top">&lt;dsig:KeyValue /&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYVALUENODEWRITE"></a><h3>xmlSecKeyDataUsageKeyValueNodeWrite</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyValueNodeWrite 0x00008</pre>
-<p>The key data could be written to a &lt;dsig:KeyValue /&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyValueNodeWrite"></a><h3>xmlSecKeyDataUsageKeyValueNodeWrite</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyValueNodeWrite 0x00008
+</pre>
+<p>The key data could be written to a <a class="ulink" href="" target="_top">&lt;dsig:KeyValue /&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGERETRIEVALMETHODNODEXML"></a><h3>xmlSecKeyDataUsageRetrievalMethodNodeXml</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageRetrievalMethodNodeXml 0x00010</pre>
-<p>The key data could be retrieved using &lt;dsig:RetrievalMethod /&gt; node
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageRetrievalMethodNodeXml"></a><h3>xmlSecKeyDataUsageRetrievalMethodNodeXml</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageRetrievalMethodNodeXml 0x00010
+</pre>
+<p>The key data could be retrieved using <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> node
in XML format.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGERETRIEVALMETHODNODEBIN"></a><h3>xmlSecKeyDataUsageRetrievalMethodNodeBin</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageRetrievalMethodNodeBin 0x00020</pre>
-<p>The key data could be retrieved using &lt;dsig:RetrievalMethod /&gt; node
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageRetrievalMethodNodeBin"></a><h3>xmlSecKeyDataUsageRetrievalMethodNodeBin</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageRetrievalMethodNodeBin 0x00020
+</pre>
+<p>The key data could be retrieved using <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> node
in binary format.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEANY"></a><h3>xmlSecKeyDataUsageAny</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageAny 0xFFFFF</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageAny"></a><h3>xmlSecKeyDataUsageAny</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageAny 0xFFFFF
+</pre>
<p>Any key data usage.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYINFONODE"></a><h3>xmlSecKeyDataUsageKeyInfoNode</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyInfoNode</pre>
-<p>The key data could be read and written from/to a &lt;dsig:KeyInfo /&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyInfoNode"></a><h3>xmlSecKeyDataUsageKeyInfoNode</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyInfoNode</pre>
+<p>The key data could be read and written from/to a <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGEKEYVALUENODE"></a><h3>xmlSecKeyDataUsageKeyValueNode</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageKeyValueNode</pre>
-<p>The key data could be read and written from/to a &lt;dsig:KeyValue /&gt; child.</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageKeyValueNode"></a><h3>xmlSecKeyDataUsageKeyValueNode</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageKeyValueNode</pre>
+<p>The key data could be read and written from/to a <a class="ulink" href="" target="_top">&lt;dsig:KeyValue /&gt;</a> child.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAUSAGERETRIEVALMETHODNODE"></a><h3>xmlSecKeyDataUsageRetrievalMethodNode</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataUsageRetrievalMethodNode</pre>
-<p>The key data could be retrieved using &lt;dsig:RetrievalMethod /&gt; node
+<div class="refsect2">
+<a name="xmlSecKeyDataUsageRetrievalMethodNode"></a><h3>xmlSecKeyDataUsageRetrievalMethodNode</h3>
+<pre class="programlisting">#define xmlSecKeyDataUsageRetrievalMethodNode</pre>
+<p>The key data could be retrieved using <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> node
in any format.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPE"></a><h3>xmlSecKeyDataType</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecKeyDataType;</pre>
-<p>The key data type (public/private, session/permanet, etc.).</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataType"></a><h3>xmlSecKeyDataType</h3>
+<pre class="programlisting">typedef unsigned int xmlSecKeyDataType;
+</pre>
+<p>The key data type (public/private, session/permanent, etc.).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPEUNKNOWN"></a><h3>xmlSecKeyDataTypeUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeUnknown 0x0000</pre>
-<p>The key data type is unknown (same as <a href="xmlsec-keysdata.html#XMLSECKEYDATATYPENONE"><span class="TYPE">xmlSecKeyDataTypeNone</span></a>).</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeUnknown"></a><h3>xmlSecKeyDataTypeUnknown</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeUnknown 0x0000
+</pre>
+<p>The key data type is unknown (same as <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeNone" title="xmlSecKeyDataTypeNone"><span class="type">xmlSecKeyDataTypeNone</span></a>).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPENONE"></a><h3>xmlSecKeyDataTypeNone</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeNone xmlSecKeyDataTypeUnknown</pre>
-<p>The key data type is unknown (same as <a href="xmlsec-keysdata.html#XMLSECKEYDATATYPEUNKNOWN"><span class="TYPE">xmlSecKeyDataTypeUnknown</span></a>).</p>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeNone"></a><h3>xmlSecKeyDataTypeNone</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeNone xmlSecKeyDataTypeUnknown
+</pre>
+<p>The key data type is unknown (same as <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataTypeUnknown" title="xmlSecKeyDataTypeUnknown"><span class="type">xmlSecKeyDataTypeUnknown</span></a>).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPEPUBLIC"></a><h3>xmlSecKeyDataTypePublic</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypePublic 0x0001</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypePublic"></a><h3>xmlSecKeyDataTypePublic</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypePublic 0x0001
+</pre>
<p>The key data contain a public key.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPEPRIVATE"></a><h3>xmlSecKeyDataTypePrivate</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypePrivate 0x0002</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypePrivate"></a><h3>xmlSecKeyDataTypePrivate</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypePrivate 0x0002
+</pre>
<p>The key data contain a private key.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPESYMMETRIC"></a><h3>xmlSecKeyDataTypeSymmetric</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeSymmetric 0x0004</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeSymmetric"></a><h3>xmlSecKeyDataTypeSymmetric</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeSymmetric 0x0004
+</pre>
<p>The key data contain a symmetric key.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPESESSION"></a><h3>xmlSecKeyDataTypeSession</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeSession 0x0008</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeSession"></a><h3>xmlSecKeyDataTypeSession</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeSession 0x0008
+</pre>
<p>The key data contain session key (one time key, not stored in keys manager).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPEPERMANENT"></a><h3>xmlSecKeyDataTypePermanent</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypePermanent 0x0010</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypePermanent"></a><h3>xmlSecKeyDataTypePermanent</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypePermanent 0x0010
+</pre>
<p>The key data contain permanent key (stored in keys manager).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPETRUSTED"></a><h3>xmlSecKeyDataTypeTrusted</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeTrusted 0x0100</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeTrusted"></a><h3>xmlSecKeyDataTypeTrusted</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeTrusted 0x0100
+</pre>
<p>The key data is trusted.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATATYPEANY"></a><h3>xmlSecKeyDataTypeAny</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataTypeAny 0xFFFF</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataTypeAny"></a><h3>xmlSecKeyDataTypeAny</h3>
+<pre class="programlisting">#define xmlSecKeyDataTypeAny 0xFFFF
+</pre>
<p>Any key data.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAFORMAT"></a><h3>enum xmlSecKeyDataFormat</h3>
+<div class="refsect2">
+<a name="xmlSecKeyDataFormat"></a><h3>enum xmlSecKeyDataFormat</h3>
<p>The key data format (binary, der, pem, etc.).</p>
-<div class="REFSECT3">
-<a name="AEN11429"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11431"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataFormat.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecKeyDataFormatUnknown</p></td>
-<td><p>the key data format is unknown.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatUnknown"></a>xmlSecKeyDataFormatUnknown</p></td>
+<td class="enum_member_description"><p>the key data format is unknown.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatBinary</p></td>
-<td><p>the binary key data.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatBinary"></a>xmlSecKeyDataFormatBinary</p></td>
+<td class="enum_member_description"><p>the binary key data.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatPem</p></td>
-<td><p>the PEM key data (cert or public/private key).</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatPem"></a>xmlSecKeyDataFormatPem</p></td>
+<td class="enum_member_description"><p>the PEM key data (cert or public/private key).</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatDer</p></td>
-<td><p>the DER key data (cert or public/private key).</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatDer"></a>xmlSecKeyDataFormatDer</p></td>
+<td class="enum_member_description"><p>the DER key data (cert or public/private key).</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatPkcs8Pem</p></td>
-<td><p>the PKCS8 PEM private key.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatPkcs8Pem"></a>xmlSecKeyDataFormatPkcs8Pem</p></td>
+<td class="enum_member_description"><p>the PKCS8 PEM private key.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatPkcs8Der</p></td>
-<td><p>the PKCS8 DER private key.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatPkcs8Der"></a>xmlSecKeyDataFormatPkcs8Der</p></td>
+<td class="enum_member_description"><p>the PKCS8 DER private key.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatPkcs12</p></td>
-<td><p>the PKCS12 format (bag of keys and certs)</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatPkcs12"></a>xmlSecKeyDataFormatPkcs12</p></td>
+<td class="enum_member_description"><p>the PKCS12 format (bag of keys and certs)</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatCertPem</p></td>
-<td><p>the PEM cert.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatCertPem"></a>xmlSecKeyDataFormatCertPem</p></td>
+<td class="enum_member_description"><p>the PEM cert.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecKeyDataFormatCertDer</p></td>
-<td><p>the DER cert.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecKeyDataFormatCertDer"></a>xmlSecKeyDataFormatCertDer</p></td>
+<td class="enum_member_description"><p>the DER cert.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATA"></a><h3>struct xmlSecKeyData</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyData {
+<div class="refsect2">
+<a name="xmlSecKeyData"></a><h3>struct xmlSecKeyData</h3>
+<pre class="programlisting">struct xmlSecKeyData {
xmlSecKeyDataId id;
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The key data: key value (crypto material), x509 data, pgp data, etc.</p>
-<div class="REFSECT3">
-<a name="AEN11494"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11496"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyData.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecKeyDataId</span></font> <code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the data id (<font><span class="TYPE">xmlSecKeyDataId</span></font>).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecKeyDataId</span></font> <em class="structfield"><code><a name="xmlSecKeyData.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the data id (<font><span class="type">xmlSecKeyDataId</span></font>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyData.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyData.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdUnknown"></a><h3>xmlSecKeyDataIdUnknown</h3>
+<pre class="programlisting">#define xmlSecKeyDataIdUnknown ((xmlSecKeyDataId)NULL)
+</pre>
+<p>The "unknown" id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAKLASS"></a><h3>struct xmlSecKeyDataKlass</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyDataKlass {
+<div class="refsect2">
+<a name="xmlSecKeyDataKlass"></a><h3>struct xmlSecKeyDataKlass</h3>
+<pre class="programlisting">struct xmlSecKeyDataKlass {
xmlSecSize klassSize;
xmlSecSize objSize;
@@ -3143,204 +3098,205 @@ in any format.</p>
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The data id (klass).</p>
-<div class="REFSECT3">
-<a name="AEN11534"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11536"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataKlass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">klassSize</code>;</p></td>
-<td><p>the klass size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.klassSize"></a>klassSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the klass size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">objSize</code>;</p></td>
-<td><p>the object size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.objSize"></a>objSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the object size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the object name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the object name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAUSAGE"><span class="TYPE">xmlSecKeyDataUsage</span></a> <code class="STRUCTFIELD">usage</code>;</p></td>
-<td><p>the allowed data usage.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataUsage" title="xmlSecKeyDataUsage"><span class="type">xmlSecKeyDataUsage</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.usage"></a>usage</code></em>;</p></td>
+<td class="struct_member_description"><p>the allowed data usage.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">href</code>;</p></td>
-<td><p>the identification string (href).</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.href"></a>href</code></em>;</p></td>
+<td class="struct_member_description"><p>the identification string (href).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">dataNodeName</code>;</p></td>
-<td><p>the data's XML node name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.dataNodeName"></a>dataNodeName</code></em>;</p></td>
+<td class="struct_member_description"><p>the data's XML node name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">dataNodeNs</code>;</p></td>
-<td><p>the data's XML node namespace.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.dataNodeNs"></a>dataNodeNs</code></em>;</p></td>
+<td class="struct_member_description"><p>the data's XML node namespace.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAINITMETHOD"><span class="TYPE">xmlSecKeyDataInitMethod</span></a> <code class="STRUCTFIELD">initialize</code>;</p></td>
-<td><p>the initialization method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataInitMethod" title="xmlSecKeyDataInitMethod ()"><span class="type">xmlSecKeyDataInitMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.initialize"></a>initialize</code></em>;</p></td>
+<td class="struct_member_description"><p>the initialization method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADUPLICATEMETHOD"><span class="TYPE">xmlSecKeyDataDuplicateMethod</span></a> <code class="STRUCTFIELD">duplicate</code>;</p></td>
-<td><p>the duplicate (copy) method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDuplicateMethod" title="xmlSecKeyDataDuplicateMethod ()"><span class="type">xmlSecKeyDataDuplicateMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.duplicate"></a>duplicate</code></em>;</p></td>
+<td class="struct_member_description"><p>the duplicate (copy) method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAFINALIZEMETHOD"><span class="TYPE">xmlSecKeyDataFinalizeMethod</span></a> <code class="STRUCTFIELD">finalize</code>;</p></td>
-<td><p>the finalization (destroy) method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFinalizeMethod" title="xmlSecKeyDataFinalizeMethod ()"><span class="type">xmlSecKeyDataFinalizeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.finalize"></a>finalize</code></em>;</p></td>
+<td class="struct_member_description"><p>the finalization (destroy) method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGENERATEMETHOD"><span class="TYPE">xmlSecKeyDataGenerateMethod</span></a> <code class="STRUCTFIELD">generate</code>;</p></td>
-<td><p>the new data generation method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGenerateMethod" title="xmlSecKeyDataGenerateMethod ()"><span class="type">xmlSecKeyDataGenerateMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.generate"></a>generate</code></em>;</p></td>
+<td class="struct_member_description"><p>the new data generation method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETTYPEMETHOD"><span class="TYPE">xmlSecKeyDataGetTypeMethod</span></a> <code class="STRUCTFIELD">getType</code>;</p></td>
-<td><p>the method to access data's type information.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetTypeMethod" title="xmlSecKeyDataGetTypeMethod ()"><span class="type">xmlSecKeyDataGetTypeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.getType"></a>getType</code></em>;</p></td>
+<td class="struct_member_description"><p>the method to access data's type information.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETSIZEMETHOD"><span class="TYPE">xmlSecKeyDataGetSizeMethod</span></a> <code class="STRUCTFIELD">getSize</code>;</p></td>
-<td><p>the method to access data's size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetSizeMethod" title="xmlSecKeyDataGetSizeMethod ()"><span class="type">xmlSecKeyDataGetSizeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.getSize"></a>getSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the method to access data's size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAGETIDENTIFIERMETHOD"><span class="TYPE">xmlSecKeyDataGetIdentifierMethod</span></a> <code class="STRUCTFIELD">getIdentifier</code>;</p></td>
-<td><p>the method to access data's string identifier.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifierMethod" title="xmlSecKeyDataGetIdentifierMethod ()"><span class="type">xmlSecKeyDataGetIdentifierMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.getIdentifier"></a>getIdentifier</code></em>;</p></td>
+<td class="struct_member_description"><p>the method to access data's string identifier.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREADMETHOD"><span class="TYPE">xmlSecKeyDataXmlReadMethod</span></a> <code class="STRUCTFIELD">xmlRead</code>;</p></td>
-<td><p>the method for reading data from XML node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlReadMethod" title="xmlSecKeyDataXmlReadMethod ()"><span class="type">xmlSecKeyDataXmlReadMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.xmlRead"></a>xmlRead</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for reading data from XML node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLWRITEMETHOD"><span class="TYPE">xmlSecKeyDataXmlWriteMethod</span></a> <code class="STRUCTFIELD">xmlWrite</code>;</p></td>
-<td><p>the method for writing data to XML node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlWriteMethod" title="xmlSecKeyDataXmlWriteMethod ()"><span class="type">xmlSecKeyDataXmlWriteMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.xmlWrite"></a>xmlWrite</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for writing data to XML node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINREADMETHOD"><span class="TYPE">xmlSecKeyDataBinReadMethod</span></a> <code class="STRUCTFIELD">binRead</code>;</p></td>
-<td><p>the method for reading data from a binary buffer.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinReadMethod" title="xmlSecKeyDataBinReadMethod ()"><span class="type">xmlSecKeyDataBinReadMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.binRead"></a>binRead</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for reading data from a binary buffer.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATABINWRITEMETHOD"><span class="TYPE">xmlSecKeyDataBinWriteMethod</span></a> <code class="STRUCTFIELD">binWrite</code>;</p></td>
-<td><p>the method for writing data to binary buffer.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinWriteMethod" title="xmlSecKeyDataBinWriteMethod ()"><span class="type">xmlSecKeyDataBinWriteMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.binWrite"></a>binWrite</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for writing data to binary buffer.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMPMETHOD"><span class="TYPE">xmlSecKeyDataDebugDumpMethod</span></a> <code class="STRUCTFIELD">debugDump</code>;</p></td>
-<td><p>the method for printing debug data information.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDumpMethod" title="xmlSecKeyDataDebugDumpMethod ()"><span class="type">xmlSecKeyDataDebugDumpMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.debugDump"></a>debugDump</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for printing debug data information.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATADEBUGDUMPMETHOD"><span class="TYPE">xmlSecKeyDataDebugDumpMethod</span></a> <code class="STRUCTFIELD">debugXmlDump</code>;</p></td>
-<td><p>the method for printing debug data information in XML format.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataDebugDumpMethod" title="xmlSecKeyDataDebugDumpMethod ()"><span class="type">xmlSecKeyDataDebugDumpMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataKlass.debugXmlDump"></a>debugXmlDump</code></em>;</p></td>
+<td class="struct_member_description"><p>the method for printing debug data information in XML format.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataKlass.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATALISTID"></a><h3>xmlSecKeyDataListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataListId xmlSecKeyDataListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataListId"></a><h3>xmlSecKeyDataListId</h3>
+<pre class="programlisting">#define xmlSecKeyDataListId xmlSecKeyDataListGetKlass()
+</pre>
<p>The key data klasses list klass id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATAIDLISTID"></a><h3>xmlSecKeyDataIdListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataIdListId xmlSecKeyDataIdListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataIdListId"></a><h3>xmlSecKeyDataIdListId</h3>
+<pre class="programlisting">#define xmlSecKeyDataIdListId xmlSecKeyDataIdListGetKlass()
+</pre>
<p>The key data list klass id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATABINARYSIZE"></a><h3>xmlSecKeyDataBinarySize</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataBinarySize</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataBinarySize"></a><h3>xmlSecKeyDataBinarySize</h3>
+<pre class="programlisting">#define xmlSecKeyDataBinarySize</pre>
<p>The binary key data object size.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTORE"></a><h3>struct xmlSecKeyDataStore</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyDataStore {
+<div class="refsect2">
+<a name="xmlSecKeyDataStore"></a><h3>struct xmlSecKeyDataStore</h3>
+<pre class="programlisting">struct xmlSecKeyDataStore {
xmlSecKeyDataStoreId id;
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The key data store. Key data store holds common key data specific information
required for key data processing. For example, X509 data store may hold
information about trusted (root) certificates.</p>
-<div class="REFSECT3">
-<a name="AEN11761"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11763"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStore.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecKeyDataStoreId</span></font> <code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the store id (<font><span class="TYPE">xmlSecKeyDataStoreId</span></font>).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecKeyDataStoreId</span></font> <em class="structfield"><code><a name="xmlSecKeyDataStore.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the store id (<font><span class="type">xmlSecKeyDataStoreId</span></font>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataStore.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataStore.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREIDUNKNOWN"></a><h3>xmlSecKeyDataStoreIdUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStoreIdUnknown NULL</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreIdUnknown"></a><h3>xmlSecKeyDataStoreIdUnknown</h3>
+<pre class="programlisting">#define xmlSecKeyDataStoreIdUnknown NULL
+</pre>
<p>The "unknown" id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREKLASS"></a><h3>struct xmlSecKeyDataStoreKlass</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyDataStoreKlass {
+<div class="refsect2">
+<a name="xmlSecKeyDataStoreKlass"></a><h3>struct xmlSecKeyDataStoreKlass</h3>
+<pre class="programlisting">struct xmlSecKeyDataStoreKlass {
xmlSecSize klassSize;
xmlSecSize objSize;
@@ -3354,69 +3310,67 @@ information about trusted (root) certificates.</p>
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The data store id (klass).</p>
-<div class="REFSECT3">
-<a name="AEN11807"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN11809"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyDataStoreKlass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">klassSize</code>;</p></td>
-<td><p>the data store klass size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.klassSize"></a>klassSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the data store klass size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">objSize</code>;</p></td>
-<td><p>the data store obj size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.objSize"></a>objSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the data store obj size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the store's name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREINITIALIZEMETHOD"><span class="TYPE">xmlSecKeyDataStoreInitializeMethod</span></a> <code class="STRUCTFIELD">initialize</code>;</p></td>
-<td><p>the store's initialization method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreInitializeMethod" title="xmlSecKeyDataStoreInitializeMethod ()"><span class="type">xmlSecKeyDataStoreInitializeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.initialize"></a>initialize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's initialization method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysdata.html#XMLSECKEYDATASTOREFINALIZEMETHOD"><span class="TYPE">xmlSecKeyDataStoreFinalizeMethod</span></a> <code class="STRUCTFIELD">finalize</code>;</p></td>
-<td><p>the store's finalization (destroy) method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStoreFinalizeMethod" title="xmlSecKeyDataStoreFinalizeMethod ()"><span class="type">xmlSecKeyDataStoreFinalizeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.finalize"></a>finalize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's finalization (destroy) method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyDataStoreKlass.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYDATASTOREPTRLISTID"></a><h3>xmlSecKeyDataStorePtrListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyDataStorePtrListId xmlSecKeyDataStorePtrListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecKeyDataStorePtrListId"></a><h3>xmlSecKeyDataStorePtrListId</h3>
+<pre class="programlisting">#define xmlSecKeyDataStorePtrListId xmlSecKeyDataStorePtrListGetKlass()
+</pre>
<p>The data store list id (klass).</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-keyinfo.html"><b>&lt;&lt;&lt; keyinfo</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-keys.html"><b>keys &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-keysmngr.html b/docs/api/xmlsec-keysmngr.html
index f64a3bab..e25d111d 100644
--- a/docs/api/xmlsec-keysmngr.html
+++ b/docs/api/xmlsec-keysmngr.html
@@ -1,1199 +1,1112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keysmngr</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="keys" href="xmlsec-keys.html">
-<link rel="NEXT" title="list" href="xmlsec-list.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keysmngr: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-keys.html" title="keys">
+<link rel="next" href="xmlsec-list.html" title="list">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-keysmngr.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-list.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-KEYSMNGR"></a>keysmngr</h1>
-<div class="REFNAMEDIV">
-<a name="AEN13827"></a><h2>Name</h2>keysmngr -- Keys manager object support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSMNGR.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN13832"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-keysmngr"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-keysmngr.top_of_page"></a>keysmngr</span></h2>
+<p>keysmngr — Keys manager object functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-keysmngr.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-keysmngr.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="RETURNVALUE">xmlSecKeysMngrPtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRCREATE">xmlSecKeysMngrCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="returnvalue">xmlSecKeysMngrPtr</span></a>
</td>
-</tr>
-<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRDESTROY">xmlSecKeysMngrDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrCreate" title="xmlSecKeysMngrCreate ()">xmlSecKeysMngrCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRFINDKEY">xmlSecKeysMngrFindKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrDestroy" title="xmlSecKeysMngrDestroy ()">xmlSecKeysMngrDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRADOPTKEYSSTORE">xmlSecKeysMngrAdoptKeysStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrFindKey" title="xmlSecKeysMngrFindKey ()">xmlSecKeysMngrFindKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="RETURNVALUE">xmlSecKeyStorePtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETKEYSSTORE">xmlSecKeysMngrGetKeysStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptKeysStore" title="xmlSecKeysMngrAdoptKeysStore ()">xmlSecKeysMngrAdoptKeysStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRADOPTDATASTORE">xmlSecKeysMngrAdoptDataStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="returnvalue">xmlSecKeyStorePtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetKeysStore" title="xmlSecKeysMngrGetKeysStore ()">xmlSecKeysMngrGetKeysStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="RETURNVALUE">xmlSecKeyDataStorePtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETDATASTORE">xmlSecKeysMngrGetDataStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptDataStore" title="xmlSecKeysMngrAdoptDataStore ()">xmlSecKeysMngrAdoptDataStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysmngr.html#XMLSECGETKEYCALLBACK">*xmlSecGetKeyCallback</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="returnvalue">xmlSecKeyDataStorePtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetDataStore" title="xmlSecKeysMngrGetDataStore ()">xmlSecKeysMngrGetDataStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRGETKEY">xmlSecKeysMngrGetKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysmngr.html#xmlSecGetKeyCallback" title="xmlSecGetKeyCallback ()">*xmlSecGetKeyCallback</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="RETURNVALUE">xmlSecKeyStorePtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTORECREATE">xmlSecKeyStoreCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrGetKey" title="xmlSecKeysMngrGetKey ()">xmlSecKeysMngrGetKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTOREDESTROY">xmlSecKeyStoreDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="returnvalue">xmlSecKeyStorePtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCreate" title="xmlSecKeyStoreCreate ()">xmlSecKeyStoreCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINDKEY">xmlSecKeyStoreFindKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreDestroy" title="xmlSecKeyStoreDestroy ()">xmlSecKeyStoreDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTOREGETNAME">xmlSecKeyStoreGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFindKey" title="xmlSecKeyStoreFindKey ()">xmlSecKeyStoreFindKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTOREISVALID">xmlSecKeyStoreIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreGetName" title="xmlSecKeyStoreGetName()">xmlSecKeyStoreGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTORECHECKID">xmlSecKeyStoreCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreIsValid" title="xmlSecKeyStoreIsValid()">xmlSecKeyStoreIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTORECHECKSIZE">xmlSecKeyStoreCheckSize</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCheckId" title="xmlSecKeyStoreCheckId()">xmlSecKeyStoreCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREIDUNKNOWN">xmlSecKeyStoreIdUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCheckSize" title="xmlSecKeyStoreCheckSize()">xmlSecKeyStoreCheckSize</a><span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREINITIALIZEMETHOD">*xmlSecKeyStoreInitializeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreInitializeMethod" title="xmlSecKeyStoreInitializeMethod ()">*xmlSecKeyStoreInitializeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINALIZEMETHOD">*xmlSecKeyStoreFinalizeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFinalizeMethod" title="xmlSecKeyStoreFinalizeMethod ()">*xmlSecKeyStoreFinalizeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINDKEYMETHOD">*xmlSecKeyStoreFindKeyMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFindKeyMethod" title="xmlSecKeyStoreFindKeyMethod ()">*xmlSecKeyStoreFindKeyMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECKEYSTOREKLASSGETNAME">xmlSecKeyStoreKlassGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreKlassGetName" title="xmlSecKeyStoreKlassGetName()">xmlSecKeyStoreKlassGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREGETKLASS">xmlSecSimpleKeysStoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKlass" title="xmlSecSimpleKeysStoreGetKlass ()">xmlSecSimpleKeysStoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREADOPTKEY">xmlSecSimpleKeysStoreAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreAdoptKey" title="xmlSecSimpleKeysStoreAdoptKey ()">xmlSecSimpleKeysStoreAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTORELOAD">xmlSecSimpleKeysStoreLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreLoad" title="xmlSecSimpleKeysStoreLoad ()">xmlSecSimpleKeysStoreLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTORESAVE">xmlSecSimpleKeysStoreSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreSave" title="xmlSecSimpleKeysStoreSave ()">xmlSecSimpleKeysStoreSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a></td>
-<td>
-<a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREGETKEYS">xmlSecSimpleKeysStoreGetKeys</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKeys" title="xmlSecSimpleKeysStoreGetKeys ()">xmlSecSimpleKeysStoreGetKeys</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSMNGR.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14014"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-keysmngr.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">xmlSecKeysMngr</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">xmlSecKeysMngr</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore">xmlSecKeyStore</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE">xmlSecKeyStore</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreIdUnknown" title="xmlSecKeyStoreIdUnknown">xmlSecKeyStoreIdUnknown</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREKLASS">xmlSecKeyStoreKlass</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreKlass" title="struct xmlSecKeyStoreKlass">xmlSecKeyStoreKlass</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID">xmlSecSimpleKeysStoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId">xmlSecSimpleKeysStoreId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-keysmngr.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSMNGR.DESCRIPTION"></a><h2>Description</h2>
-<p>Keys manager object support.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSMNGR.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRCREATE"></a><h3>xmlSecKeysMngrCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="RETURNVALUE">xmlSecKeysMngrPtr</span></a>
-xmlSecKeysMngrCreate (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-keysmngr.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecKeysMngrCreate"></a><h3>xmlSecKeysMngrCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="returnvalue">xmlSecKeysMngrPtr</span></a>
+xmlSecKeysMngrCreate (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Creates new keys manager. Caller is responsible for freeing it with
-<a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRDESTROY"><span class="TYPE">xmlSecKeysMngrDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN14050"></a><h4>Returns</h4>
+<a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrDestroy" title="xmlSecKeysMngrDestroy ()"><span class="type">xmlSecKeysMngrDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeysMngrCreate.returns"></a><h4>Returns</h4>
<p> the pointer to newly allocated keys manager or NULL if
an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRDESTROY"></a><h3>xmlSecKeysMngrDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeysMngrDestroy (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Destroys keys manager created with <a href="xmlsec-keysmngr.html#XMLSECKEYSMNGRCREATE"><span class="TYPE">xmlSecKeysMngrCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN14066"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14068"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeysMngrDestroy"></a><h3>xmlSecKeysMngrDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeysMngrDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Destroys keys manager created with <a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngrCreate" title="xmlSecKeysMngrCreate ()"><span class="type">xmlSecKeysMngrCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeysMngrDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRFINDKEY"></a><h3>xmlSecKeysMngrFindKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeysMngrFindKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeysMngrFindKey"></a><h3>xmlSecKeysMngrFindKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeysMngrFindKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Lookups key in the keys manager keys store. The caller is responsible
-for destroying the returned key using <a href="xmlsec-keys.html#XMLSECKEYDESTROY"><span class="TYPE">xmlSecKeyDestroy</span></a> method.</p>
-<div class="REFSECT3">
-<a name="AEN14096"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14098"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+for destroying the returned key using <a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()"><span class="type">xmlSecKeyDestroy</span></a> method.</p>
+<div class="refsect3">
+<a name="xmlSecKeysMngrFindKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the desired key name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the desired key name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14119"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeysMngrFindKey.returns"></a><h4>Returns</h4>
<p> the pointer to a key or NULL if key is not found or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRADOPTKEYSSTORE"></a><h3>xmlSecKeysMngrAdoptKeysStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeysMngrAdoptKeysStore (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>);</pre>
-<p>Adopts keys store in the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecKeysMngrAdoptKeysStore"></a><h3>xmlSecKeysMngrAdoptKeysStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeysMngrAdoptKeysStore (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>);</pre>
+<p>Adopts keys store in the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN14137"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14139"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngrAdoptKeysStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14154"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeysMngrAdoptKeysStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRGETKEYSSTORE"></a><h3>xmlSecKeysMngrGetKeysStore ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="RETURNVALUE">xmlSecKeyStorePtr</span></a>
-xmlSecKeysMngrGetKeysStore (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeysMngrGetKeysStore"></a><h3>xmlSecKeysMngrGetKeysStore ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="returnvalue">xmlSecKeyStorePtr</span></a>
+xmlSecKeysMngrGetKeysStore (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Gets the keys store.</p>
-<div class="REFSECT3">
-<a name="AEN14168"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14170"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetKeysStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14179"></a><h4>Returns</h4>
-<p> the keys store in the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetKeysStore.returns"></a><h4>Returns</h4>
+<p> the keys store in the keys manager <em class="parameter"><code>mngr</code></em>
or NULL if
there is no store or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRADOPTDATASTORE"></a><h3>xmlSecKeysMngrAdoptDataStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecKeysMngrAdoptDataStore (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeysMngrAdoptDataStore"></a><h3>xmlSecKeysMngrAdoptDataStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecKeysMngrAdoptDataStore (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>);</pre>
<p>Adopts data store in the keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN14197"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14199"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngrAdoptDataStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to data store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to data store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14214"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeysMngrAdoptDataStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRGETDATASTORE"></a><h3>xmlSecKeysMngrGetDataStore ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="RETURNVALUE">xmlSecKeyDataStorePtr</span></a>
-xmlSecKeysMngrGetDataStore (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecKeyDataStoreId</span></font> id</code>);</pre>
-<p>Lookups the data store of given klass <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecKeysMngrGetDataStore"></a><h3>xmlSecKeysMngrGetDataStore ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="returnvalue">xmlSecKeyDataStorePtr</span></a>
+xmlSecKeysMngrGetDataStore (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecKeyDataStoreId</span></font> id</code></em>);</pre>
+<p>Lookups the data store of given klass <em class="parameter"><code>id</code></em>
in the keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN14232"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14234"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetDataStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the desired data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the desired data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14249"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetDataStore.returns"></a><h4>Returns</h4>
<p> pointer to data store or NULL if it is not found or an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGETKEYCALLBACK"></a><h3>xmlSecGetKeyCallback ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecGetKeyCallback<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecGetKeyCallback"></a><h3>xmlSecGetKeyCallback ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+<span class="c_punctuation">(</span>*xmlSecGetKeyCallback<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
and extracts the key.</p>
-<div class="REFSECT3">
-<a name="AEN14269"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14271"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGetKeyCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14286"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGetKeyCallback.returns"></a><h4>Returns</h4>
<p> the pointer to key or NULL if the key is not found or
an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGRGETKEY"></a><h3>xmlSecKeysMngrGetKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeysMngrGetKey (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecKeysMngrGetKey"></a><h3>xmlSecKeysMngrGetKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeysMngrGetKey (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
and extracts the key.</p>
-<div class="REFSECT3">
-<a name="AEN14304"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14306"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14321"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeysMngrGetKey.returns"></a><h4>Returns</h4>
<p> the pointer to key or NULL if the key is not found or
an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTORECREATE"></a><h3>xmlSecKeyStoreCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="RETURNVALUE">xmlSecKeyStorePtr</span></a>
-xmlSecKeyStoreCreate (<code class="PARAMETER"><font><span class="TYPE">xmlSecKeyStoreId</span></font> id</code>);</pre>
-<p>Creates new store of the specified klass <code class="PARAMETER">klass</code>
+<div class="refsect2">
+<a name="xmlSecKeyStoreCreate"></a><h3>xmlSecKeyStoreCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="returnvalue">xmlSecKeyStorePtr</span></a>
+xmlSecKeyStoreCreate (<em class="parameter"><code><font><span class="type">xmlSecKeyStoreId</span></font> id</code></em>);</pre>
+<p>Creates new store of the specified klass <em class="parameter"><code>klass</code></em>
. Caller is responsible
-for freeing the returned store by calling <a href="xmlsec-keysmngr.html#XMLSECKEYSTOREDESTROY"><span class="TYPE">xmlSecKeyStoreDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN14338"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14340"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+for freeing the returned store by calling <a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreDestroy" title="xmlSecKeyStoreDestroy ()"><span class="type">xmlSecKeyStoreDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyStoreCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the key store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the key store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14349"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyStoreCreate.returns"></a><h4>Returns</h4>
<p> the pointer to newly allocated keys store or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREDESTROY"></a><h3>xmlSecKeyStoreDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecKeyStoreDestroy (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>);</pre>
-<p>Destroys the store created with <a href="xmlsec-keysmngr.html#XMLSECKEYSTORECREATE"><span class="TYPE">xmlSecKeyStoreCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN14365"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14367"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecKeyStoreDestroy"></a><h3>xmlSecKeyStoreDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecKeyStoreDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>);</pre>
+<p>Destroys the store created with <a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreCreate" title="xmlSecKeyStoreCreate ()"><span class="type">xmlSecKeyStoreCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecKeyStoreDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREFINDKEY"></a><h3>xmlSecKeyStoreFindKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecKeyStoreFindKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreFindKey"></a><h3>xmlSecKeyStoreFindKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecKeyStoreFindKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Lookups key in the store. The caller is responsible for destroying
-the returned key using <a href="xmlsec-keys.html#XMLSECKEYDESTROY"><span class="TYPE">xmlSecKeyDestroy</span></a> method.</p>
-<div class="REFSECT3">
-<a name="AEN14395"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14397"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+the returned key using <a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()"><span class="type">xmlSecKeyDestroy</span></a> method.</p>
+<div class="refsect3">
+<a name="xmlSecKeyStoreFindKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the desired key name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the desired key name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14418"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyStoreFindKey.returns"></a><h4>Returns</h4>
<p> the pointer to a key or NULL if key is not found or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREGETNAME"></a><h3>xmlSecKeyStoreGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreGetName(store)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreGetName"></a><h3>xmlSecKeyStoreGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyStoreGetName(store)</pre>
<p>Macro. Returns key store name.</p>
-<div class="REFSECT3">
-<a name="AEN14427"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14429"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREISVALID"></a><h3>xmlSecKeyStoreIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreIsValid(store)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">store</code>
- is not NULL and <code class="PARAMETER">store-&gt;id</code>
+<div class="refsect2">
+<a name="xmlSecKeyStoreIsValid"></a><h3>xmlSecKeyStoreIsValid()</h3>
+<pre class="programlisting">#define xmlSecKeyStoreIsValid(store)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>store</code></em>
+ is not NULL and <em class="parameter"><code>store-&gt;id</code></em>
is not NULL
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN14446"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14448"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTORECHECKID"></a><h3>xmlSecKeyStoreCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreCheckId(store, storeId)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">store</code>
- is valid and <code class="PARAMETER">store</code>
-'s id is equal to <code class="PARAMETER">storeId</code>
+<div class="refsect2">
+<a name="xmlSecKeyStoreCheckId"></a><h3>xmlSecKeyStoreCheckId()</h3>
+<pre class="programlisting">#define xmlSecKeyStoreCheckId(store, storeId)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>store</code></em>
+ is valid and <em class="parameter"><code>store</code></em>
+'s id is equal to <em class="parameter"><code>storeId</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN14466"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14468"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>storeId</p></td>
-<td><p>the store Id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>storeId</p></td>
+<td class="parameter_description"><p>the store Id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTORECHECKSIZE"></a><h3>xmlSecKeyStoreCheckSize()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreCheckSize(store, size)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">store</code>
- is valid and <code class="PARAMETER">stores</code>
-'s object has at least <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecKeyStoreCheckSize"></a><h3>xmlSecKeyStoreCheckSize()</h3>
+<pre class="programlisting">#define xmlSecKeyStoreCheckSize(store, size)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>store</code></em>
+ is valid and <em class="parameter"><code>stores</code></em>
+'s object has at least <em class="parameter"><code>size</code></em>
bytes.</p>
-<div class="REFSECT3">
-<a name="AEN14492"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14494"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreCheckSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the expected size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the expected size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREIDUNKNOWN"></a><h3>xmlSecKeyStoreIdUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreIdUnknown ((xmlSecKeyDataStoreId)NULL)</pre>
-<p>The "unknown" id.</p>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREINITIALIZEMETHOD"></a><h3>xmlSecKeyStoreInitializeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyStoreInitializeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreInitializeMethod"></a><h3>xmlSecKeyStoreInitializeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyStoreInitializeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>);</pre>
<p>Keys store specific initialization method.</p>
-<div class="REFSECT3">
-<a name="AEN14528"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14530"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreInitializeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14539"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyStoreInitializeMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREFINALIZEMETHOD"></a><h3>xmlSecKeyStoreFinalizeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyStoreFinalizeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreFinalizeMethod"></a><h3>xmlSecKeyStoreFinalizeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecKeyStoreFinalizeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>);</pre>
<p>Keys store specific finalization (destroy) method.</p>
-<div class="REFSECT3">
-<a name="AEN14555"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14557"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreFinalizeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREFINDKEYMETHOD"></a><h3>xmlSecKeyStoreFindKeyMethod ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecKeyStoreFindKeyMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreFindKeyMethod"></a><h3>xmlSecKeyStoreFindKeyMethod ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+<span class="c_punctuation">(</span>*xmlSecKeyStoreFindKeyMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Keys store specific find method. The caller is responsible for destroying
-the returned key using <a href="xmlsec-keys.html#XMLSECKEYDESTROY"><span class="TYPE">xmlSecKeyDestroy</span></a> method.</p>
-<div class="REFSECT3">
-<a name="AEN14587"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14589"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+the returned key using <a class="link" href="xmlsec-keys.html#xmlSecKeyDestroy" title="xmlSecKeyDestroy ()"><span class="type">xmlSecKeyDestroy</span></a> method.</p>
+<div class="refsect3">
+<a name="xmlSecKeyStoreFindKeyMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the desired key name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the desired key name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to key info context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to key info context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14610"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecKeyStoreFindKeyMethod.returns"></a><h4>Returns</h4>
<p> the pointer to a key or NULL if key is not found or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREKLASSGETNAME"></a><h3>xmlSecKeyStoreKlassGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecKeyStoreKlassGetName(klass)</pre>
+<div class="refsect2">
+<a name="xmlSecKeyStoreKlassGetName"></a><h3>xmlSecKeyStoreKlassGetName()</h3>
+<pre class="programlisting">#define xmlSecKeyStoreKlassGetName(klass)</pre>
<p>Macro. Returns store klass name.</p>
-<div class="REFSECT3">
-<a name="AEN14619"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14621"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreKlassGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>klass</p></td>
-<td><p>the pointer to store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>klass</p></td>
+<td class="parameter_description"><p>the pointer to store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTOREGETKLASS"></a><h3>xmlSecSimpleKeysStoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font>
-xmlSecSimpleKeysStoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreGetKlass"></a><h3>xmlSecSimpleKeysStoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+xmlSecSimpleKeysStoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The simple list based keys store klass.</p>
-<div class="REFSECT3">
-<a name="AEN14640"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreGetKlass.returns"></a><h4>Returns</h4>
<p> simple list based keys store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTOREADOPTKEY"></a><h3>xmlSecSimpleKeysStoreAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecSimpleKeysStoreAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreAdoptKey"></a><h3>xmlSecSimpleKeysStoreAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecSimpleKeysStoreAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN14659"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14661"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to simple keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to simple keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14676"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTORELOAD"></a><h3>xmlSecSimpleKeysStoreLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecSimpleKeysStoreLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreLoad"></a><h3>xmlSecSimpleKeysStoreLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecSimpleKeysStoreLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
<p>Reads keys from an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN14696"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14698"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to simple keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to simple keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to associated keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to associated keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14719"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTORESAVE"></a><h3>xmlSecSimpleKeysStoreSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecSimpleKeysStoreSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Writes keys from <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreSave"></a><h3>xmlSecSimpleKeysStoreSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecSimpleKeysStoreSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Writes keys from <em class="parameter"><code>store</code></em>
to an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN14740"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14742"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to simple keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to simple keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the saved keys type (public, private, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the saved keys type (public, private, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN14763"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTOREGETKEYS"></a><h3>xmlSecSimpleKeysStoreGetKeys ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a>
-xmlSecSimpleKeysStoreGetKeys (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreGetKeys"></a><h3>xmlSecSimpleKeysStoreGetKeys ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+xmlSecSimpleKeysStoreGetKeys (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>);</pre>
<p>Gets list of keys from simple keys store.</p>
-<div class="REFSECT3">
-<a name="AEN14777"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14779"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreGetKeys.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>store</p></td>
-<td><p>the pointer to simple keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to simple keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN14788"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecSimpleKeysStoreGetKeys.returns"></a><h4>Returns</h4>
<p> pointer to the list of keys stored in the keys store or NULL
if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-KEYSMNGR.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECKEYSMNGR"></a><h3>struct xmlSecKeysMngr</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeysMngr {
+<div class="refsect1">
+<a name="xmlsec-keysmngr.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecKeysMngr"></a><h3>struct xmlSecKeysMngr</h3>
+<pre class="programlisting">struct xmlSecKeysMngr {
xmlSecKeyStorePtr keysStore;
xmlSecPtrList storesList;
xmlSecGetKeyCallback getKey;
-};</pre>
+};
+</pre>
<p>The keys manager structure.</p>
-<div class="REFSECT3">
-<a name="AEN14799"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14801"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeysMngr.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> <code class="STRUCTFIELD">keysStore</code>;</p></td>
-<td><p>the key store (list of keys known to keys manager).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> <em class="structfield"><code><a name="xmlSecKeysMngr.keysStore"></a>keysStore</code></em>;</p></td>
+<td class="struct_member_description"><p>the key store (list of keys known to keys manager).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">storesList</code>;</p></td>
-<td><p>the list of key data stores known to keys manager.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecKeysMngr.storesList"></a>storesList</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of key data stores known to keys manager.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECGETKEYCALLBACK"><span class="TYPE">xmlSecGetKeyCallback</span></a> <code class="STRUCTFIELD">getKey</code>;</p></td>
-<td><p>the callback used to read &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecGetKeyCallback" title="xmlSecGetKeyCallback ()"><span class="type">xmlSecGetKeyCallback</span></a> <em class="structfield"><code><a name="xmlSecKeysMngr.getKey"></a>getKey</code></em>;</p></td>
+<td class="struct_member_description"><p>the callback used to read <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTORE"></a><h3>struct xmlSecKeyStore</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyStore {
+<div class="refsect2">
+<a name="xmlSecKeyStore"></a><h3>struct xmlSecKeyStore</h3>
+<pre class="programlisting">struct xmlSecKeyStore {
xmlSecKeyStoreId id;
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The keys store.</p>
-<div class="REFSECT3">
-<a name="AEN14837"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14839"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStore.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecKeyStoreId</span></font> <code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the store id (<font><span class="TYPE">xmlSecKeyStoreId</span></font>).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecKeyStoreId</span></font> <em class="structfield"><code><a name="xmlSecKeyStore.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the store id (<font><span class="type">xmlSecKeyStoreId</span></font>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyStore.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyStore.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecKeyStoreIdUnknown"></a><h3>xmlSecKeyStoreIdUnknown</h3>
+<pre class="programlisting">#define xmlSecKeyStoreIdUnknown ((xmlSecKeyDataStoreId)NULL)
+</pre>
+<p>The "unknown" id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECKEYSTOREKLASS"></a><h3>struct xmlSecKeyStoreKlass</h3>
-<pre class="PROGRAMLISTING">struct xmlSecKeyStoreKlass {
+<div class="refsect2">
+<a name="xmlSecKeyStoreKlass"></a><h3>struct xmlSecKeyStoreKlass</h3>
+<pre class="programlisting">struct xmlSecKeyStoreKlass {
xmlSecSize klassSize;
xmlSecSize objSize;
@@ -1208,74 +1121,72 @@ if an error occurs.</p>
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The keys store id (klass).</p>
-<div class="REFSECT3">
-<a name="AEN14877"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14879"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecKeyStoreKlass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">klassSize</code>;</p></td>
-<td><p>the store klass size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyStoreKlass.klassSize"></a>klassSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store klass size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">objSize</code>;</p></td>
-<td><p>the store obj size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecKeyStoreKlass.objSize"></a>objSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store obj size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the store's name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecKeyStoreKlass.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREINITIALIZEMETHOD"><span class="TYPE">xmlSecKeyStoreInitializeMethod</span></a> <code class="STRUCTFIELD">initialize</code>;</p></td>
-<td><p>the store's initialization method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreInitializeMethod" title="xmlSecKeyStoreInitializeMethod ()"><span class="type">xmlSecKeyStoreInitializeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyStoreKlass.initialize"></a>initialize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's initialization method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINALIZEMETHOD"><span class="TYPE">xmlSecKeyStoreFinalizeMethod</span></a> <code class="STRUCTFIELD">finalize</code>;</p></td>
-<td><p>the store's finalization (destroy) method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFinalizeMethod" title="xmlSecKeyStoreFinalizeMethod ()"><span class="type">xmlSecKeyStoreFinalizeMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyStoreKlass.finalize"></a>finalize</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's finalization (destroy) method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keysmngr.html#XMLSECKEYSTOREFINDKEYMETHOD"><span class="TYPE">xmlSecKeyStoreFindKeyMethod</span></a> <code class="STRUCTFIELD">findKey</code>;</p></td>
-<td><p>the store's find method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStoreFindKeyMethod" title="xmlSecKeyStoreFindKeyMethod ()"><span class="type">xmlSecKeyStoreFindKeyMethod</span></a> <em class="structfield"><code><a name="xmlSecKeyStoreKlass.findKey"></a>findKey</code></em>;</p></td>
+<td class="struct_member_description"><p>the store's find method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyStoreKlass.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyStoreKlass.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIMPLEKEYSSTOREID"></a><h3>xmlSecSimpleKeysStoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecSimpleKeysStoreId xmlSecSimpleKeysStoreGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecSimpleKeysStoreId"></a><h3>xmlSecSimpleKeysStoreId</h3>
+<pre class="programlisting">#define xmlSecSimpleKeysStoreId xmlSecSimpleKeysStoreGetKlass()
+</pre>
<p>A simple keys store klass id.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-keys.html"><b>&lt;&lt;&lt; keys</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-list.html"><b>list &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-list.html b/docs/api/xmlsec-list.html
index b9fa438d..a973f254 100644
--- a/docs/api/xmlsec-list.html
+++ b/docs/api/xmlsec-list.html
@@ -1,1168 +1,1079 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>list</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="keysmngr" href="xmlsec-keysmngr.html">
-<link rel="NEXT" title="membuf" href="xmlsec-membuf.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>list: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-keysmngr.html" title="keysmngr">
+<link rel="next" href="xmlsec-membuf.html" title="membuf">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-list.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-keysmngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-keysmngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-membuf.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-LIST"></a>list</h1>
-<div class="REFNAMEDIV">
-<a name="AEN14965"></a><h2>Name</h2>list -- Generic list structure implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-LIST.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN14970"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-list"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-list.top_of_page"></a>list</span></h2>
+<p>list — Generic list structure functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-list.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-list.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTSETDEFAULTALLOCMODE">xmlSecPtrListSetDefaultAllocMode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListSetDefaultAllocMode" title="xmlSecPtrListSetDefaultAllocMode ()">xmlSecPtrListSetDefaultAllocMode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTINITIALIZE">xmlSecPtrListInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListInitialize" title="xmlSecPtrListInitialize ()">xmlSecPtrListInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTFINALIZE">xmlSecPtrListFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListFinalize" title="xmlSecPtrListFinalize ()">xmlSecPtrListFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTCREATE">xmlSecPtrListCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListCreate" title="xmlSecPtrListCreate ()">xmlSecPtrListCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTDESTROY">xmlSecPtrListDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListDestroy" title="xmlSecPtrListDestroy ()">xmlSecPtrListDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTEMPTY">xmlSecPtrListEmpty</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListEmpty" title="xmlSecPtrListEmpty ()">xmlSecPtrListEmpty</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTCOPY">xmlSecPtrListCopy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListCopy" title="xmlSecPtrListCopy ()">xmlSecPtrListCopy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTDUPLICATE">xmlSecPtrListDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListDuplicate" title="xmlSecPtrListDuplicate ()">xmlSecPtrListDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTGETSIZE">xmlSecPtrListGetSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListGetSize" title="xmlSecPtrListGetSize ()">xmlSecPtrListGetSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtr</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTGETITEM">xmlSecPtrListGetItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListGetItem" title="xmlSecPtrListGetItem ()">xmlSecPtrListGetItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTADD">xmlSecPtrListAdd</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListAdd" title="xmlSecPtrListAdd ()">xmlSecPtrListAdd</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTSET">xmlSecPtrListSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListSet" title="xmlSecPtrListSet ()">xmlSecPtrListSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTREMOVE">xmlSecPtrListRemove</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListRemove" title="xmlSecPtrListRemove ()">xmlSecPtrListRemove</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtr</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTREMOVEANDRETURN">xmlSecPtrListRemoveAndReturn</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListRemoveAndReturn" title="xmlSecPtrListRemoveAndReturn ()">xmlSecPtrListRemoveAndReturn</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTDEBUGDUMP">xmlSecPtrListDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListDebugDump" title="xmlSecPtrListDebugDump ()">xmlSecPtrListDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTDEBUGXMLDUMP">xmlSecPtrListDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListDebugXmlDump" title="xmlSecPtrListDebugXmlDump ()">xmlSecPtrListDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTGETNAME">xmlSecPtrListGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListGetName" title="xmlSecPtrListGetName()">xmlSecPtrListGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTISVALID">xmlSecPtrListIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListIsValid" title="xmlSecPtrListIsValid()">xmlSecPtrListIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTCHECKID">xmlSecPtrListCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListCheckId" title="xmlSecPtrListCheckId()">xmlSecPtrListCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtr</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-list.html#XMLSECPTRDUPLICATEITEMMETHOD">*xmlSecPtrDuplicateItemMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtr</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-list.html#xmlSecPtrDuplicateItemMethod" title="xmlSecPtrDuplicateItemMethod ()">*xmlSecPtrDuplicateItemMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-list.html#XMLSECPTRDESTROYITEMMETHOD">*xmlSecPtrDestroyItemMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-list.html#xmlSecPtrDestroyItemMethod" title="xmlSecPtrDestroyItemMethod ()">*xmlSecPtrDestroyItemMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-list.html#XMLSECPTRDEBUGDUMPITEMMETHOD">*xmlSecPtrDebugDumpItemMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-list.html#xmlSecPtrDebugDumpItemMethod" title="xmlSecPtrDebugDumpItemMethod ()">*xmlSecPtrDebugDumpItemMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-list.html#XMLSECPTRLISTKLASSGETNAME">xmlSecPtrListKlassGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecPtrListKlassGetName" title="xmlSecPtrListKlassGetName()">xmlSecPtrListKlassGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-list.html#XMLSECSTRINGLISTGETKLASS">xmlSecStringListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-list.html#xmlSecStringListGetKlass" title="xmlSecStringListGetKlass ()">xmlSecStringListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-LIST.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15141"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-list.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST">xmlSecPtrList</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList">xmlSecPtrList</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-list.html#XMLSECPTRLISTIDUNKNOWN">xmlSecPtrListIdUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-list.html#xmlSecPtrListIdUnknown" title="xmlSecPtrListIdUnknown">xmlSecPtrListIdUnknown</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-list.html#XMLSECPTRLISTKLASS">xmlSecPtrListKlass</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-list.html#xmlSecPtrListKlass" title="struct xmlSecPtrListKlass">xmlSecPtrListKlass</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-list.html#XMLSECSTRINGLISTID">xmlSecStringListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-list.html#xmlSecStringListId" title="xmlSecStringListId">xmlSecStringListId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-list.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-LIST.DESCRIPTION"></a><h2>Description</h2>
-<p>Generic list structure implementation.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-LIST.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTSETDEFAULTALLOCMODE"></a><h3>xmlSecPtrListSetDefaultAllocMode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListSetDefaultAllocMode (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECALLOCMODE"><span class="TYPE">xmlSecAllocMode</span></a> defAllocMode</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> defInitialSize</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-list.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecPtrListSetDefaultAllocMode"></a><h3>xmlSecPtrListSetDefaultAllocMode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListSetDefaultAllocMode (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode"><span class="type">xmlSecAllocMode</span></a> defAllocMode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> defInitialSize</code></em>);</pre>
<p>Sets new default allocation mode and minimal initial list size.</p>
-<div class="REFSECT3">
-<a name="AEN15179"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15181"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListSetDefaultAllocMode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>defAllocMode</p></td>
-<td><p>the new default memory allocation mode.</p></td>
-<td> </td>
+<td class="parameter_name"><p>defAllocMode</p></td>
+<td class="parameter_description"><p>the new default memory allocation mode.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>defInitialSize</p></td>
-<td><p>the new default minimal initial size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>defInitialSize</p></td>
+<td class="parameter_description"><p>the new default minimal initial size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTINITIALIZE"></a><h3>xmlSecPtrListInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPtrListInitialize (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecPtrListId</span></font> id</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListInitialize"></a><h3>xmlSecPtrListInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPtrListInitialize (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecPtrListId</span></font> id</code></em>);</pre>
<p>Initializes the list of given klass. Caller is responsible
-for cleaning up by calling <a href="xmlsec-list.html#XMLSECPTRLISTFINALIZE"><span class="TYPE">xmlSecPtrListFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN15212"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15214"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+for cleaning up by calling <a class="link" href="xmlsec-list.html#xmlSecPtrListFinalize" title="xmlSecPtrListFinalize ()"><span class="type">xmlSecPtrListFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecPtrListInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the list klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the list klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN15229"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTFINALIZE"></a><h3>xmlSecPtrListFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListFinalize (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>);</pre>
-<p>Cleans up the list initialized with <a href="xmlsec-list.html#XMLSECPTRLISTINITIALIZE"><span class="TYPE">xmlSecPtrListInitialize</span></a>
+<div class="refsect2">
+<a name="xmlSecPtrListFinalize"></a><h3>xmlSecPtrListFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListFinalize (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>);</pre>
+<p>Cleans up the list initialized with <a class="link" href="xmlsec-list.html#xmlSecPtrListInitialize" title="xmlSecPtrListInitialize ()"><span class="type">xmlSecPtrListInitialize</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN15245"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15247"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTCREATE"></a><h3>xmlSecPtrListCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a>
-xmlSecPtrListCreate (<code class="PARAMETER"><font><span class="TYPE">xmlSecPtrListId</span></font> id</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListCreate"></a><h3>xmlSecPtrListCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+xmlSecPtrListCreate (<em class="parameter"><code><font><span class="type">xmlSecPtrListId</span></font> id</code></em>);</pre>
<p>Creates new list object. Caller is responsible for freeing returned list
-by calling <a href="xmlsec-list.html#XMLSECPTRLISTDESTROY"><span class="TYPE">xmlSecPtrListDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN15269"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15271"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+by calling <a class="link" href="xmlsec-list.html#xmlSecPtrListDestroy" title="xmlSecPtrListDestroy ()"><span class="type">xmlSecPtrListDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecPtrListCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the list klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the list klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15280"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated list or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTDESTROY"></a><h3>xmlSecPtrListDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListDestroy (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>);</pre>
-<p>Destroys <code class="PARAMETER">list</code>
- created with <a href="xmlsec-list.html#XMLSECPTRLISTCREATE"><span class="TYPE">xmlSecPtrListCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN15297"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15299"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecPtrListDestroy"></a><h3>xmlSecPtrListDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListDestroy (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>);</pre>
+<p>Destroys <em class="parameter"><code>list</code></em>
+ created with <a class="link" href="xmlsec-list.html#xmlSecPtrListCreate" title="xmlSecPtrListCreate ()"><span class="type">xmlSecPtrListCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecPtrListDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTEMPTY"></a><h3>xmlSecPtrListEmpty ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListEmpty (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>);</pre>
-<p>Remove all items from <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecPtrListEmpty"></a><h3>xmlSecPtrListEmpty ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListEmpty (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>);</pre>
+<p>Remove all items from <em class="parameter"><code>list</code></em>
(if any).</p>
-<div class="REFSECT3">
-<a name="AEN15320"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15322"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListEmpty.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTCOPY"></a><h3>xmlSecPtrListCopy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPtrListCopy (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> src</code>);</pre>
-<p>Copies <code class="PARAMETER">src</code>
- list items to <code class="PARAMETER">dst</code>
- list using <font><span class="TYPE">duplicateItem</span></font> method
-of the list klass. If <font><span class="TYPE">duplicateItem</span></font> method is NULL then
+<div class="refsect2">
+<a name="xmlSecPtrListCopy"></a><h3>xmlSecPtrListCopy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPtrListCopy (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> src</code></em>);</pre>
+<p>Copies <em class="parameter"><code>src</code></em>
+ list items to <em class="parameter"><code>dst</code></em>
+ list using <font><span class="type">duplicateItem</span></font> method
+of the list klass. If <font><span class="type">duplicateItem</span></font> method is NULL then
we jsut copy pointers to items.</p>
-<div class="REFSECT3">
-<a name="AEN15351"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15353"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListCopy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15368"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListCopy.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTDUPLICATE"></a><h3>xmlSecPtrListDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a>
-xmlSecPtrListDuplicate (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>);</pre>
-<p>Creates a new copy of <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecPtrListDuplicate"></a><h3>xmlSecPtrListDuplicate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+xmlSecPtrListDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>);</pre>
+<p>Creates a new copy of <em class="parameter"><code>list</code></em>
and all its items.</p>
-<div class="REFSECT3">
-<a name="AEN15383"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15385"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN15394"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListDuplicate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated list or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTGETSIZE"></a><h3>xmlSecPtrListGetSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecPtrListGetSize (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListGetSize"></a><h3>xmlSecPtrListGetSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecPtrListGetSize (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>);</pre>
<p>Gets list size.</p>
-<div class="REFSECT3">
-<a name="AEN15408"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15410"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListGetSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15419"></a><h4>Returns</h4>
-<p> the number of itmes in <code class="PARAMETER">list</code>
+<div class="refsect3">
+<a name="xmlSecPtrListGetSize.returns"></a><h4>Returns</h4>
+<p> the number of items in <em class="parameter"><code>list</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTGETITEM"></a><h3>xmlSecPtrListGetItem ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtr</span></font>
-xmlSecPtrListGetItem (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListGetItem"></a><h3>xmlSecPtrListGetItem ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtr</span></font>
+xmlSecPtrListGetItem (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets item from the list.</p>
-<div class="REFSECT3">
-<a name="AEN15437"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15439"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListGetItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the item position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the item position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN15454"></a><h4>Returns</h4>
-<p> the list item at position <code class="PARAMETER">pos</code>
-or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecPtrListGetItem.returns"></a><h4>Returns</h4>
+<p> the list item at position <em class="parameter"><code>pos</code></em>
+or NULL if <em class="parameter"><code>pos</code></em>
is greater
than the number of items in the list or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTADD"></a><h3>xmlSecPtrListAdd ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPtrListAdd (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecPtr</span></font> item</code>);</pre>
-<p>Adds <code class="PARAMETER">item</code>
- to the end of the <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecPtrListAdd"></a><h3>xmlSecPtrListAdd ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPtrListAdd (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecPtr</span></font> item</code></em>);</pre>
+<p>Adds <em class="parameter"><code>item</code></em>
+ to the end of the <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15475"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15477"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListAdd.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>item</p></td>
-<td><p>the item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>item</p></td>
+<td class="parameter_description"><p>the item.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15492"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListAdd.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTSET"></a><h3>xmlSecPtrListSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPtrListSet (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecPtr</span></font> item</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
-<p>Sets the value of list item at position <code class="PARAMETER">pos</code>
+<div class="refsect2">
+<a name="xmlSecPtrListSet"></a><h3>xmlSecPtrListSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPtrListSet (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecPtr</span></font> item</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Sets the value of list item at position <em class="parameter"><code>pos</code></em>
. The old value
is destroyed.</p>
-<div class="REFSECT3">
-<a name="AEN15513"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15515"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>item</p></td>
-<td><p>the item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>item</p></td>
+<td class="parameter_description"><p>the item.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the pos.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the pos.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15536"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTREMOVE"></a><h3>xmlSecPtrListRemove ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPtrListRemove (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
-<p>Destroys list item at the position <code class="PARAMETER">pos</code>
+<div class="refsect2">
+<a name="xmlSecPtrListRemove"></a><h3>xmlSecPtrListRemove ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPtrListRemove (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Destroys list item at the position <em class="parameter"><code>pos</code></em>
and sets it value to NULL.</p>
-<div class="REFSECT3">
-<a name="AEN15554"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15556"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListRemove.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN15571"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListRemove.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTREMOVEANDRETURN"></a><h3>xmlSecPtrListRemoveAndReturn ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtr</span></font>
-xmlSecPtrListRemoveAndReturn (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
-<p>Remove the list item at the position <code class="PARAMETER">pos</code>
+<div class="refsect2">
+<a name="xmlSecPtrListRemoveAndReturn"></a><h3>xmlSecPtrListRemoveAndReturn ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtr</span></font>
+xmlSecPtrListRemoveAndReturn (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
+<p>Remove the list item at the position <em class="parameter"><code>pos</code></em>
and return it back.</p>
-<div class="REFSECT3">
-<a name="AEN15589"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15591"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListRemoveAndReturn.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN15606"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrListRemoveAndReturn.returns"></a><h4>Returns</h4>
<p> the pointer to the list item.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTDEBUGDUMP"></a><h3>xmlSecPtrListDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListDebugDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">list</code>
- to the <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecPtrListDebugDump"></a><h3>xmlSecPtrListDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>list</code></em>
+ to the <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15625"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15627"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTDEBUGXMLDUMP"></a><h3>xmlSecPtrListDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecPtrListDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">list</code>
- to the <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecPtrListDebugXmlDump"></a><h3>xmlSecPtrListDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecPtrListDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>list</code></em>
+ to the <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN15658"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15660"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTGETNAME"></a><h3>xmlSecPtrListGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecPtrListGetName(list)</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListGetName"></a><h3>xmlSecPtrListGetName()</h3>
+<pre class="programlisting">#define xmlSecPtrListGetName(list)</pre>
<p>Macro. Returns lists's name.</p>
-<div class="REFSECT3">
-<a name="AEN15681"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15683"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the ponter to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the ponter to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTISVALID"></a><h3>xmlSecPtrListIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecPtrListIsValid(list)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">list</code>
- is not NULL and <code class="PARAMETER">list-&gt;id</code>
+<div class="refsect2">
+<a name="xmlSecPtrListIsValid"></a><h3>xmlSecPtrListIsValid()</h3>
+<pre class="programlisting">#define xmlSecPtrListIsValid(list)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>list</code></em>
+ is not NULL and <em class="parameter"><code>list-&gt;id</code></em>
is not NULL
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN15700"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15702"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTCHECKID"></a><h3>xmlSecPtrListCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecPtrListCheckId(list, dataId)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">list</code>
- is valid and <code class="PARAMETER">list</code>
-'s id is equal to <code class="PARAMETER">dataId</code>
+<div class="refsect2">
+<a name="xmlSecPtrListCheckId"></a><h3>xmlSecPtrListCheckId()</h3>
+<pre class="programlisting">#define xmlSecPtrListCheckId(list, dataId)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>list</code></em>
+ is valid and <em class="parameter"><code>list</code></em>
+'s id is equal to <em class="parameter"><code>dataId</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15720"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15722"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataId</p></td>
-<td><p>the list Id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataId</p></td>
+<td class="parameter_description"><p>the list Id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRDUPLICATEITEMMETHOD"></a><h3>xmlSecPtrDuplicateItemMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtr</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecPtrDuplicateItemMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecPtr</span></font> ptr</code>);</pre>
-<p>Duplicates item <code class="PARAMETER">ptr</code>
+<div class="refsect2">
+<a name="xmlSecPtrDuplicateItemMethod"></a><h3>xmlSecPtrDuplicateItemMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtr</span></font>
+<span class="c_punctuation">(</span>*xmlSecPtrDuplicateItemMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecPtr</span></font> ptr</code></em>);</pre>
+<p>Duplicates item <em class="parameter"><code>ptr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15751"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15753"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrDuplicateItemMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ptr</p></td>
-<td><p>the poinetr to list item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ptr</p></td>
+<td class="parameter_description"><p>the poinetr to list item.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN15762"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPtrDuplicateItemMethod.returns"></a><h4>Returns</h4>
<p> pointer to new item copy or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRDESTROYITEMMETHOD"></a><h3>xmlSecPtrDestroyItemMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecPtrDestroyItemMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecPtr</span></font> ptr</code>);</pre>
-<p>Destroys list item <code class="PARAMETER">ptr</code>
+<div class="refsect2">
+<a name="xmlSecPtrDestroyItemMethod"></a><h3>xmlSecPtrDestroyItemMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecPtrDestroyItemMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecPtr</span></font> ptr</code></em>);</pre>
+<p>Destroys list item <em class="parameter"><code>ptr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15779"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15781"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrDestroyItemMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ptr</p></td>
-<td><p>the poinetr to list item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ptr</p></td>
+<td class="parameter_description"><p>the poinetr to list item.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRDEBUGDUMPITEMMETHOD"></a><h3>xmlSecPtrDebugDumpItemMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecPtrDebugDumpItemMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><font><span class="TYPE">xmlSecPtr</span></font> ptr</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">item</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecPtrDebugDumpItemMethod"></a><h3>xmlSecPtrDebugDumpItemMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecPtrDebugDumpItemMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><font><span class="type">xmlSecPtr</span></font> ptr</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>item</code></em>
+ to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN15808"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15810"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrDebugDumpItemMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ptr</p></td>
-<td><p>the poinetr to list item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ptr</p></td>
+<td class="parameter_description"><p>the poinetr to list item.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTKLASSGETNAME"></a><h3>xmlSecPtrListKlassGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecPtrListKlassGetName(klass)</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListKlassGetName"></a><h3>xmlSecPtrListKlassGetName()</h3>
+<pre class="programlisting">#define xmlSecPtrListKlassGetName(klass)</pre>
<p>Macro. Returns the list klass name.</p>
-<div class="REFSECT3">
-<a name="AEN15831"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15833"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListKlassGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>klass</p></td>
-<td><p>the list klass.
+<td class="parameter_name"><p>klass</p></td>
+<td class="parameter_description"><p>the list klass.
2</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSTRINGLISTGETKLASS"></a><h3>xmlSecStringListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecStringListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The strins list class.</p>
-<div class="REFSECT3">
-<a name="AEN15852"></a><h4>Returns</h4>
+<div class="refsect2">
+<a name="xmlSecStringListGetKlass"></a><h3>xmlSecStringListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecStringListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The strings list class.</p>
+<div class="refsect3">
+<a name="xmlSecStringListGetKlass.returns"></a><h4>Returns</h4>
<p> strings list klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-LIST.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECPTRLIST"></a><h3>struct xmlSecPtrList</h3>
-<pre class="PROGRAMLISTING">struct xmlSecPtrList {
+<div class="refsect1">
+<a name="xmlsec-list.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecPtrList"></a><h3>struct xmlSecPtrList</h3>
+<pre class="programlisting">struct xmlSecPtrList {
xmlSecPtrListId id;
xmlSecPtr* data;
xmlSecSize use;
xmlSecSize max;
xmlSecAllocMode allocMode;
-};</pre>
+};
+</pre>
<p>The pointers list.</p>
-<div class="REFSECT3">
-<a name="AEN15863"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15865"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrList.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecPtrListId</span></font> <code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the list items description.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecPtrListId</span></font> <em class="structfield"><code><a name="xmlSecPtrList.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the list items description.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlSecPtr</span></font> *<code class="STRUCTFIELD">data</code>;</p></td>
-<td><p>the list data.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecPtr</span></font> *<em class="structfield"><code><a name="xmlSecPtrList.data"></a>data</code></em>;</p></td>
+<td class="struct_member_description"><p>the list data.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">use</code>;</p></td>
-<td><p>the current list size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecPtrList.use"></a>use</code></em>;</p></td>
+<td class="struct_member_description"><p>the current list size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">max</code>;</p></td>
-<td><p>the max (allocated) list size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecPtrList.max"></a>max</code></em>;</p></td>
+<td class="struct_member_description"><p>the max (allocated) list size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECALLOCMODE"><span class="TYPE">xmlSecAllocMode</span></a> <code class="STRUCTFIELD">allocMode</code>;</p></td>
-<td><p>the memory allocation mode.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecAllocMode" title="enum xmlSecAllocMode"><span class="type">xmlSecAllocMode</span></a> <em class="structfield"><code><a name="xmlSecPtrList.allocMode"></a>allocMode</code></em>;</p></td>
+<td class="struct_member_description"><p>the memory allocation mode.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTIDUNKNOWN"></a><h3>xmlSecPtrListIdUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecPtrListIdUnknown NULL</pre>
+<div class="refsect2">
+<a name="xmlSecPtrListIdUnknown"></a><h3>xmlSecPtrListIdUnknown</h3>
+<pre class="programlisting">#define xmlSecPtrListIdUnknown NULL
+</pre>
<p>The "unknown" id.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPTRLISTKLASS"></a><h3>struct xmlSecPtrListKlass</h3>
-<pre class="PROGRAMLISTING">struct xmlSecPtrListKlass {
+<div class="refsect2">
+<a name="xmlSecPtrListKlass"></a><h3>struct xmlSecPtrListKlass</h3>
+<pre class="programlisting">struct xmlSecPtrListKlass {
const xmlChar* name;
xmlSecPtrDuplicateItemMethod duplicateItem;
xmlSecPtrDestroyItemMethod destroyItem;
xmlSecPtrDebugDumpItemMethod debugDumpItem;
xmlSecPtrDebugDumpItemMethod debugXmlDumpItem;
-};</pre>
+};
+</pre>
<p>List klass.</p>
-<div class="REFSECT3">
-<a name="AEN15925"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15927"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPtrListKlass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the list klass name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecPtrListKlass.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the list klass name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRDUPLICATEITEMMETHOD"><span class="TYPE">xmlSecPtrDuplicateItemMethod</span></a> <code class="STRUCTFIELD">duplicateItem</code>;</p></td>
-<td><p>the duplciate item method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDuplicateItemMethod" title="xmlSecPtrDuplicateItemMethod ()"><span class="type">xmlSecPtrDuplicateItemMethod</span></a> <em class="structfield"><code><a name="xmlSecPtrListKlass.duplicateItem"></a>duplicateItem</code></em>;</p></td>
+<td class="struct_member_description"><p>the duplicate item method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRDESTROYITEMMETHOD"><span class="TYPE">xmlSecPtrDestroyItemMethod</span></a> <code class="STRUCTFIELD">destroyItem</code>;</p></td>
-<td><p>the destroy item method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDestroyItemMethod" title="xmlSecPtrDestroyItemMethod ()"><span class="type">xmlSecPtrDestroyItemMethod</span></a> <em class="structfield"><code><a name="xmlSecPtrListKlass.destroyItem"></a>destroyItem</code></em>;</p></td>
+<td class="struct_member_description"><p>the destroy item method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRDEBUGDUMPITEMMETHOD"><span class="TYPE">xmlSecPtrDebugDumpItemMethod</span></a> <code class="STRUCTFIELD">debugDumpItem</code>;</p></td>
-<td><p>the debug dump item method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDebugDumpItemMethod" title="xmlSecPtrDebugDumpItemMethod ()"><span class="type">xmlSecPtrDebugDumpItemMethod</span></a> <em class="structfield"><code><a name="xmlSecPtrListKlass.debugDumpItem"></a>debugDumpItem</code></em>;</p></td>
+<td class="struct_member_description"><p>the debug dump item method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRDEBUGDUMPITEMMETHOD"><span class="TYPE">xmlSecPtrDebugDumpItemMethod</span></a> <code class="STRUCTFIELD">debugXmlDumpItem</code>;</p></td>
-<td><p>the debug dump item in xml format method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrDebugDumpItemMethod" title="xmlSecPtrDebugDumpItemMethod ()"><span class="type">xmlSecPtrDebugDumpItemMethod</span></a> <em class="structfield"><code><a name="xmlSecPtrListKlass.debugXmlDumpItem"></a>debugXmlDumpItem</code></em>;</p></td>
+<td class="struct_member_description"><p>the debug dump item in xml format method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSTRINGLISTID"></a><h3>xmlSecStringListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecStringListId</pre>
+<div class="refsect2">
+<a name="xmlSecStringListId"></a><h3>xmlSecStringListId</h3>
+<pre class="programlisting">#define xmlSecStringListId</pre>
<p>Strings list klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-keysmngr.html"><b>&lt;&lt;&lt; keysmngr</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-membuf.html"><b>membuf &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-membuf.html b/docs/api/xmlsec-membuf.html
index bb4d6c0e..1dbdf1ed 100644
--- a/docs/api/xmlsec-membuf.html
+++ b/docs/api/xmlsec-membuf.html
@@ -1,213 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>membuf</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="list" href="xmlsec-list.html">
-<link rel="NEXT" title="nodeset" href="xmlsec-nodeset.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>membuf: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-list.html" title="list">
+<link rel="next" href="xmlsec-nodeset.html" title="nodeset">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-membuf.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-list.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-list.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nodeset.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MEMBUF"></a>membuf</h1>
-<div class="REFNAMEDIV">
-<a name="AEN15986"></a><h2>Name</h2>membuf -- Memory buffer transform implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MEMBUF.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN15991"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-membuf"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-membuf.top_of_page"></a>membuf</span></h2>
+<p>membuf — Memory buffer transform functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-membuf.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-membuf.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETKLASS">xmlSecTransformMemBufGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufGetKlass" title="xmlSecTransformMemBufGetKlass ()">xmlSecTransformMemBufGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETBUFFER">xmlSecTransformMemBufGetBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufGetBuffer" title="xmlSecTransformMemBufGetBuffer ()">xmlSecTransformMemBufGetBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MEMBUF.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16010"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-membuf.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFID">xmlSecTransformMemBufId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-membuf.html#xmlSecTransformMemBufId" title="xmlSecTransformMemBufId">xmlSecTransformMemBufId</a></td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MEMBUF.DESCRIPTION"></a><h2>Description</h2>
-<p>Memory buffer transform implementation.</p>
+<div class="refsect1">
+<a name="xmlsec-membuf.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MEMBUF.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMEMBUFGETKLASS"></a><h3>xmlSecTransformMemBufGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformMemBufGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The memory buffer transorm (used to store the data that go through it).</p>
-<div class="REFSECT3">
-<a name="AEN16032"></a><h4>Returns</h4>
+<div class="refsect1">
+<a name="xmlsec-membuf.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecTransformMemBufGetKlass"></a><h3>xmlSecTransformMemBufGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformMemBufGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The memory buffer transform (used to store the data that go through it).</p>
+<div class="refsect3">
+<a name="xmlSecTransformMemBufGetKlass.returns"></a><h4>Returns</h4>
<p> memory buffer transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMEMBUFGETBUFFER"></a><h3>xmlSecTransformMemBufGetBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
-xmlSecTransformMemBufGetBuffer (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformMemBufGetBuffer"></a><h3>xmlSecTransformMemBufGetBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+xmlSecTransformMemBufGetBuffer (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
<p>Gets the pointer to memory buffer transform buffer.</p>
-<div class="REFSECT3">
-<a name="AEN16046"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16048"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformMemBufGetBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to memory buffer transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to memory buffer transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect3">
+<a name="xmlSecTransformMemBufGetBuffer.returns"></a><h4>Returns</h4>
+<p> pointer to the transform's <a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBuffer</span></a>.</p>
</div>
-<div class="REFSECT3">
-<a name="AEN16057"></a><h4>Returns</h4>
-<p> pointer to the transform's <a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBuffer</span></a>.</p>
</div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MEMBUF.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMEMBUFID"></a><h3>xmlSecTransformMemBufId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformMemBufId</pre>
+<div class="refsect1">
+<a name="xmlsec-membuf.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecTransformMemBufId"></a><h3>xmlSecTransformMemBufId</h3>
+<pre class="programlisting">#define xmlSecTransformMemBufId</pre>
<p>The Memory Buffer transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-list.html"><b>&lt;&lt;&lt; list</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nodeset.html"><b>nodeset &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-msccng-ref.html b/docs/api/xmlsec-msccng-ref.html
new file mode 100644
index 00000000..2dfcd253
--- /dev/null
+++ b/docs/api/xmlsec-msccng-ref.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-x509.html" title="x509">
+<link rel="next" href="xmlsec-mscng-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-mscng-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-msccng-ref"></a>XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+</dl></div>
+<p>This section contains the API reference for xmlsec-mscng (based on
+ <span style="color: red">&lt;a&gt;Microsoft
+ Cryptography API: Next Generation (CNG)&lt;/a&gt;</span>). All the public interfaces are
+ documented here. This reference guide is build by extracting comments from
+ the code sources. </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscng-app.html b/docs/api/xmlsec-mscng-app.html
new file mode 100644
index 00000000..56f348a8
--- /dev/null
+++ b/docs/api/xmlsec-mscng-app.html
@@ -0,0 +1,807 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="prev" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="next" href="xmlsec-mscng-certkeys.html" title="certkeys">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscng-app.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-msccng-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-msccng-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-mscng-certkeys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-mscng-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscng-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for Microsoft Cryptography API: Next Generation (CNG).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscng-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppInit" title="xmlSecMSCngAppInit ()">xmlSecMSCngAppInit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppShutdown" title="xmlSecMSCngAppShutdown ()">xmlSecMSCngAppShutdown</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">LPCTSTR</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppGetCertStoreName" title="xmlSecMSCngAppGetCertStoreName ()">xmlSecMSCngAppGetCertStoreName</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrInit" title="xmlSecMSCngAppDefaultKeysMngrInit ()">xmlSecMSCngAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrAdoptKey" title="xmlSecMSCngAppDefaultKeysMngrAdoptKey ()">xmlSecMSCngAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrLoad" title="xmlSecMSCngAppDefaultKeysMngrLoad ()">xmlSecMSCngAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrSave" title="xmlSecMSCngAppDefaultKeysMngrSave ()">xmlSecMSCngAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoad" title="xmlSecMSCngAppKeysMngrCertLoad ()">xmlSecMSCngAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoadMemory" title="xmlSecMSCngAppKeysMngrCertLoadMemory ()">xmlSecMSCngAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoad" title="xmlSecMSCngAppKeyLoad ()">xmlSecMSCngAppKeyLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoadMemory" title="xmlSecMSCngAppKeyLoadMemory ()">xmlSecMSCngAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12Load" title="xmlSecMSCngAppPkcs12Load ()">xmlSecMSCngAppPkcs12Load</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12LoadMemory" title="xmlSecMSCngAppPkcs12LoadMemory ()">xmlSecMSCngAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoad" title="xmlSecMSCngAppKeyCertLoad ()">xmlSecMSCngAppKeyCertLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoadMemory" title="xmlSecMSCngAppKeyCertLoadMemory ()">xmlSecMSCngAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppGetDefaultPwdCallback" title="xmlSecMSCngAppGetDefaultPwdCallback ()">xmlSecMSCngAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-app.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngAppInit"></a><h3>xmlSecMSCngAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
+<p>General crypto engine initialization. This function is used
+by XMLSec command line utility and called before
+<em class="parameter"><code>xmlSecInit</code></em>
+ function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to MSCng configuration (unused).</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppInit.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppShutdown"></a><h3>xmlSecMSCngAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>General crypto engine shutdown. This function is used
+by XMLSec command line utility and called after
+<em class="parameter"><code>xmlSecShutdown</code></em>
+ function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppShutdown.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppGetCertStoreName"></a><h3>xmlSecMSCngAppGetCertStoreName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">LPCTSTR</span></font>
+xmlSecMSCngAppGetCertStoreName (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets the MS Cng certs store name set by <em class="parameter"><code>xmlSecMSCngAppInit</code></em>
+ function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppGetCertStoreName.returns"></a><h4>Returns</h4>
+<p> the MS Cng certs name used by xmlsec-mscng.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppDefaultKeysMngrInit"></a><h3>xmlSecMSCngAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
+and a default MSCng crypto key data stores.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecMSCngAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppDefaultKeysMngrAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrInit" title="xmlSecMSCngAppDefaultKeysMngrInit ()"><span class="type">xmlSecMSCngAppDefaultKeysMngrInit</span></a>
+function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppDefaultKeysMngrLoad"></a><h3>xmlSecMSCngAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created
+with <a class="link" href="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrInit" title="xmlSecMSCngAppDefaultKeysMngrInit ()"><span class="type">xmlSecMSCngAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppDefaultKeysMngrSave"></a><h3>xmlSecMSCngAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
+ to XML keys file.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeysMngrCertLoad"></a><h3>xmlSecMSCngAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
+ and adds to the list of trusted or known
+untrusted certs in <em class="parameter"><code>store</code></em>
+ (not implemented yet).</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
+trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeysMngrCertLoadMemory"></a><h3>xmlSecMSCngAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppKeysMngrCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>data</code></em>
+ and adds to the list of trusted or known
+untrusted certs in <em class="parameter"><code>store</code></em>
+</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate format (PEM or DER).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeyLoad"></a><h3>xmlSecMSCngAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCngAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
+<p>Reads key from the a file (not implemented yet).</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyLoad.returns"></a><h4>Returns</h4>
+<p> pointer to the key or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeyLoadMemory"></a><h3>xmlSecMSCngAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCngAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
+<p>Reads key from a binary <em class="parameter"><code>data</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key data format.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key data2 password.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyLoadMemory.returns"></a><h4>Returns</h4>
+<p> pointer to the key or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppPkcs12Load"></a><h3>xmlSecMSCngAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCngAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
+<p>Reads key and all associated certificates from the PKCS12 file
+(not implemented yet).
+For uniformity, call xmlSecMSCngAppKeyLoad instead of this function. Pass
+in format=xmlSecKeyDataFormatPkcs12.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppPkcs12Load.returns"></a><h4>Returns</h4>
+<p> pointer to the key or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppPkcs12LoadMemory"></a><h3>xmlSecMSCngAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCngAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
+<p>Reads key and all associated certificates from the PKCS12 binary data.
+For uniformity, call xmlSecMSCngAppKeyLoad instead of this function. Pass
+in format=xmlSecKeyDataFormatPkcs12.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 password.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
+<p> pointer to the key or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeyCertLoad"></a><h3>xmlSecMSCngAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
+ and adds it to key
+(not implemented yet).</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyCertLoad.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppKeyCertLoadMemory"></a><h3>xmlSecMSCngAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from memory buffer and adds it to key.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngAppGetDefaultPwdCallback"></a><h3>xmlSecMSCngAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecMSCngAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets default password callback.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
+<p> default password callback.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-app.other_details"></a><h2>Types and Values</h2>
+<p></p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscng-certkeys.html b/docs/api/xmlsec-mscng-certkeys.html
new file mode 100644
index 00000000..43c3bab0
--- /dev/null
+++ b/docs/api/xmlsec-mscng-certkeys.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>certkeys: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="prev" href="xmlsec-mscng-app.html" title="app">
+<link rel="next" href="xmlsec-mscng-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscng-certkeys.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-msccng-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscng-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-mscng-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-mscng-certkeys"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscng-certkeys.top_of_page"></a>certkeys</span></h2>
+<p>certkeys — Certificate keys support functions for Microsoft Cryptography API: Next Generation (CNG).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscng-certkeys.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-certkeys.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngCertAdopt" title="xmlSecMSCngCertAdopt ()">xmlSecMSCngCertAdopt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">BCRYPT_KEY_HANDLE</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPubKey" title="xmlSecMSCngKeyDataGetPubKey ()">xmlSecMSCngKeyDataGetPubKey</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">NCRYPT_KEY_HANDLE</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPrivKey" title="xmlSecMSCngKeyDataGetPrivKey ()">xmlSecMSCngKeyDataGetPrivKey</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-certkeys.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-certkeys.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngCertAdopt"></a><h3>xmlSecMSCngCertAdopt ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecMSCngCertAdopt (<em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> pCert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Creates key data value from the cert.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngCertAdopt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>pCert</p></td>
+<td class="parameter_description"><p>the pointer to cert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the expected key type.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngCertAdopt.returns"></a><h4>Returns</h4>
+<p> pointer to newly created xmlsec key or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataGetPubKey"></a><h3>xmlSecMSCngKeyDataGetPubKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">BCRYPT_KEY_HANDLE</span></font>
+xmlSecMSCngKeyDataGetPubKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Native MSCng public key retrieval from xmlsec keydata. The returned key must
+not be destroyed by the caller.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataGetPubKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data to retrieve certificate from.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataGetPubKey.returns"></a><h4>Returns</h4>
+<p> key on success or 0 otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataGetPrivKey"></a><h3>xmlSecMSCngKeyDataGetPrivKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">NCRYPT_KEY_HANDLE</span></font>
+xmlSecMSCngKeyDataGetPrivKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Native MSCng private key retrieval from xmlsec keydata. The returned key
+must not be destroyed by the caller.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataGetPrivKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data to retrieve certificate from.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataGetPrivKey.returns"></a><h4>Returns</h4>
+<p> key on success or 0 otherwise.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-certkeys.other_details"></a><h2>Types and Values</h2>
+<p></p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscng-crypto.html b/docs/api/xmlsec-mscng-crypto.html
new file mode 100644
index 00000000..c67e7da7
--- /dev/null
+++ b/docs/api/xmlsec-mscng-crypto.html
@@ -0,0 +1,1346 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="prev" href="xmlsec-mscng-certkeys.html" title="certkeys">
+<link rel="next" href="xmlsec-mscng-keysstore.html" title="keysstore">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscng-crypto.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-msccng-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscng-certkeys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-mscng-keysstore.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-mscng-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscng-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for Microsoft Cryptography API: Next Generation (CNG).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecCryptoGetFunctions-mscng" title="xmlSecCryptoGetFunctions_mscng ()">xmlSecCryptoGetFunctions_mscng</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngGenerateRandom" title="xmlSecMSCngGenerateRandom ()">xmlSecMSCngGenerateRandom</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngInit" title="xmlSecMSCngInit ()">xmlSecMSCngInit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngShutdown" title="xmlSecMSCngShutdown ()">xmlSecMSCngShutdown</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeysMngrInit" title="xmlSecMSCngKeysMngrInit ()">xmlSecMSCngKeysMngrInit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaGetKlass" title="xmlSecMSCngKeyDataDsaGetKlass ()">xmlSecMSCngKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1GetKlass" title="xmlSecMSCngTransformDsaSha1GetKlass ()">xmlSecMSCngTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaGetKlass" title="xmlSecMSCngKeyDataRsaGetKlass ()">xmlSecMSCngKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5GetKlass" title="xmlSecMSCngTransformRsaMd5GetKlass ()">xmlSecMSCngTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1GetKlass" title="xmlSecMSCngTransformRsaSha1GetKlass ()">xmlSecMSCngTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256GetKlass" title="xmlSecMSCngTransformRsaSha256GetKlass ()">xmlSecMSCngTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384GetKlass" title="xmlSecMSCngTransformRsaSha384GetKlass ()">xmlSecMSCngTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512GetKlass" title="xmlSecMSCngTransformRsaSha512GetKlass ()">xmlSecMSCngTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1GetKlass" title="xmlSecMSCngTransformRsaPkcs1GetKlass ()">xmlSecMSCngTransformRsaPkcs1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepGetKlass" title="xmlSecMSCngTransformRsaOaepGetKlass ()">xmlSecMSCngTransformRsaOaepGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaGetKlass" title="xmlSecMSCngKeyDataEcdsaGetKlass ()">xmlSecMSCngKeyDataEcdsaGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1GetKlass" title="xmlSecMSCngTransformEcdsaSha1GetKlass ()">xmlSecMSCngTransformEcdsaSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256GetKlass" title="xmlSecMSCngTransformEcdsaSha256GetKlass ()">xmlSecMSCngTransformEcdsaSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384GetKlass" title="xmlSecMSCngTransformEcdsaSha384GetKlass ()">xmlSecMSCngTransformEcdsaSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512GetKlass" title="xmlSecMSCngTransformEcdsaSha512GetKlass ()">xmlSecMSCngTransformEcdsaSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesGetKlass" title="xmlSecMSCngKeyDataDesGetKlass ()">xmlSecMSCngKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcGetKlass" title="xmlSecMSCngTransformDes3CbcGetKlass ()">xmlSecMSCngTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3GetKlass" title="xmlSecMSCngTransformKWDes3GetKlass ()">xmlSecMSCngTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacGetKlass" title="xmlSecMSCngKeyDataHmacGetKlass ()">xmlSecMSCngKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5GetKlass" title="xmlSecMSCngTransformHmacMd5GetKlass ()">xmlSecMSCngTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1GetKlass" title="xmlSecMSCngTransformHmacSha1GetKlass ()">xmlSecMSCngTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256GetKlass" title="xmlSecMSCngTransformHmacSha256GetKlass ()">xmlSecMSCngTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384GetKlass" title="xmlSecMSCngTransformHmacSha384GetKlass ()">xmlSecMSCngTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512GetKlass" title="xmlSecMSCngTransformHmacSha512GetKlass ()">xmlSecMSCngTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5GetKlass" title="xmlSecMSCngTransformMd5GetKlass ()">xmlSecMSCngTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1GetKlass" title="xmlSecMSCngTransformSha1GetKlass ()">xmlSecMSCngTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256GetKlass" title="xmlSecMSCngTransformSha256GetKlass ()">xmlSecMSCngTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384GetKlass" title="xmlSecMSCngTransformSha384GetKlass ()">xmlSecMSCngTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512GetKlass" title="xmlSecMSCngTransformSha512GetKlass ()">xmlSecMSCngTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesGetKlass" title="xmlSecMSCngKeyDataAesGetKlass ()">xmlSecMSCngKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcGetKlass" title="xmlSecMSCngTransformAes128CbcGetKlass ()">xmlSecMSCngTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcGetKlass" title="xmlSecMSCngTransformAes192CbcGetKlass ()">xmlSecMSCngTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcGetKlass" title="xmlSecMSCngTransformAes256CbcGetKlass ()">xmlSecMSCngTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmGetKlass" title="xmlSecMSCngTransformAes128GcmGetKlass ()">xmlSecMSCngTransformAes128GcmGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmGetKlass" title="xmlSecMSCngTransformAes192GcmGetKlass ()">xmlSecMSCngTransformAes192GcmGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmGetKlass" title="xmlSecMSCngTransformAes256GcmGetKlass ()">xmlSecMSCngTransformAes256GcmGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128GetKlass" title="xmlSecMSCngTransformKWAes128GetKlass ()">xmlSecMSCngTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192GetKlass" title="xmlSecMSCngTransformKWAes192GetKlass ()">xmlSecMSCngTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256GetKlass" title="xmlSecMSCngTransformKWAes256GetKlass ()">xmlSecMSCngTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaId" title="xmlSecMSCngKeyDataDsaId">xmlSecMSCngKeyDataDsaId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1Id" title="xmlSecMSCngTransformDsaSha1Id">xmlSecMSCngTransformDsaSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaId" title="xmlSecMSCngKeyDataRsaId">xmlSecMSCngKeyDataRsaId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5Id" title="xmlSecMSCngTransformRsaMd5Id">xmlSecMSCngTransformRsaMd5Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1Id" title="xmlSecMSCngTransformRsaSha1Id">xmlSecMSCngTransformRsaSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256Id" title="xmlSecMSCngTransformRsaSha256Id">xmlSecMSCngTransformRsaSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384Id" title="xmlSecMSCngTransformRsaSha384Id">xmlSecMSCngTransformRsaSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512Id" title="xmlSecMSCngTransformRsaSha512Id">xmlSecMSCngTransformRsaSha512Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1Id" title="xmlSecMSCngTransformRsaPkcs1Id">xmlSecMSCngTransformRsaPkcs1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepId" title="xmlSecMSCngTransformRsaOaepId">xmlSecMSCngTransformRsaOaepId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaId" title="xmlSecMSCngKeyDataEcdsaId">xmlSecMSCngKeyDataEcdsaId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1Id" title="xmlSecMSCngTransformEcdsaSha1Id">xmlSecMSCngTransformEcdsaSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256Id" title="xmlSecMSCngTransformEcdsaSha256Id">xmlSecMSCngTransformEcdsaSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384Id" title="xmlSecMSCngTransformEcdsaSha384Id">xmlSecMSCngTransformEcdsaSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512Id" title="xmlSecMSCngTransformEcdsaSha512Id">xmlSecMSCngTransformEcdsaSha512Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesId" title="xmlSecMSCngKeyDataDesId">xmlSecMSCngKeyDataDesId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcId" title="xmlSecMSCngTransformDes3CbcId">xmlSecMSCngTransformDes3CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3Id" title="xmlSecMSCngTransformKWDes3Id">xmlSecMSCngTransformKWDes3Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacId" title="xmlSecMSCngKeyDataHmacId">xmlSecMSCngKeyDataHmacId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5Id" title="xmlSecMSCngTransformHmacMd5Id">xmlSecMSCngTransformHmacMd5Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1Id" title="xmlSecMSCngTransformHmacSha1Id">xmlSecMSCngTransformHmacSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256Id" title="xmlSecMSCngTransformHmacSha256Id">xmlSecMSCngTransformHmacSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384Id" title="xmlSecMSCngTransformHmacSha384Id">xmlSecMSCngTransformHmacSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512Id" title="xmlSecMSCngTransformHmacSha512Id">xmlSecMSCngTransformHmacSha512Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5Id" title="xmlSecMSCngTransformMd5Id">xmlSecMSCngTransformMd5Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1Id" title="xmlSecMSCngTransformSha1Id">xmlSecMSCngTransformSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256Id" title="xmlSecMSCngTransformSha256Id">xmlSecMSCngTransformSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384Id" title="xmlSecMSCngTransformSha384Id">xmlSecMSCngTransformSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512Id" title="xmlSecMSCngTransformSha512Id">xmlSecMSCngTransformSha512Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesId" title="xmlSecMSCngKeyDataAesId">xmlSecMSCngKeyDataAesId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcId" title="xmlSecMSCngTransformAes128CbcId">xmlSecMSCngTransformAes128CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcId" title="xmlSecMSCngTransformAes192CbcId">xmlSecMSCngTransformAes192CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcId" title="xmlSecMSCngTransformAes256CbcId">xmlSecMSCngTransformAes256CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmId" title="xmlSecMSCngTransformAes128GcmId">xmlSecMSCngTransformAes128GcmId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmId" title="xmlSecMSCngTransformAes192GcmId">xmlSecMSCngTransformAes192GcmId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmId" title="xmlSecMSCngTransformAes256GcmId">xmlSecMSCngTransformAes256GcmId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128Id" title="xmlSecMSCngTransformKWAes128Id">xmlSecMSCngTransformKWAes128Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192Id" title="xmlSecMSCngTransformKWAes192Id">xmlSecMSCngTransformKWAes192Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256Id" title="xmlSecMSCngTransformKWAes256Id">xmlSecMSCngTransformKWAes256Id</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-mscng"></a><h3>xmlSecCryptoGetFunctions_mscng ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_mscng (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets the pointer to xmlsec-mscng functions table.</p>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-mscng.returns"></a><h4>Returns</h4>
+<p> the xmlsec-mscng functions table or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngGenerateRandom"></a><h3>xmlSecMSCngGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<div class="warning"><p><code class="literal">xmlSecMSCngGenerateRandom</code> is deprecated and should not be used in newly-written code.</p></div>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
+
+(not implemented yet).</p>
+<div class="refsect3">
+<a name="xmlSecMSCngGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngGenerateRandom.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngInit"></a><h3>xmlSecMSCngInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>XMLSec library specific crypto engine initialization.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngInit.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngShutdown"></a><h3>xmlSecMSCngShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>XMLSec library specific crypto engine shutdown.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngShutdown.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysMngrInit"></a><h3>xmlSecMSCngKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Adds MSCng specific key data stores in keys manager.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysMngrInit.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value otherwise.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataDsaGetKlass"></a><h3>xmlSecMSCngKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng DSA CertKey data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to MSCng DSA key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformDsaSha1GetKlass"></a><h3>xmlSecMSCngTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The DSA-SHA1 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> DSA-SHA1 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataRsaGetKlass"></a><h3>xmlSecMSCngKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng RSA CertKey data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to MSCng RSA key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaMd5GetKlass"></a><h3>xmlSecMSCngTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-MD5 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-MD5 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha1GetKlass"></a><h3>xmlSecMSCngTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-SHA1 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-SHA1 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha256GetKlass"></a><h3>xmlSecMSCngTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-SHA256 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-SHA256 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha384GetKlass"></a><h3>xmlSecMSCngTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-SHA384 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-SHA384 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha512GetKlass"></a><h3>xmlSecMSCngTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-SHA512 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-SHA512 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaPkcs1GetKlass"></a><h3>xmlSecMSCngTransformRsaPkcs1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaPkcs1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-PKCS1 key transport transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaPkcs1GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-PKCS1 key transport transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaOaepGetKlass"></a><h3>xmlSecMSCngTransformRsaOaepGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformRsaOaepGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-OAEP key transport transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformRsaOaepGetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-OAEP key transport transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataEcdsaGetKlass"></a><h3>xmlSecMSCngKeyDataEcdsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataEcdsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng ECDSA CertKey data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataEcdsaGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to MSCng ECDSA key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha1GetKlass"></a><h3>xmlSecMSCngTransformEcdsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformEcdsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA1 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformEcdsaSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA1 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha256GetKlass"></a><h3>xmlSecMSCngTransformEcdsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformEcdsaSha256GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA256 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformEcdsaSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA256 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha384GetKlass"></a><h3>xmlSecMSCngTransformEcdsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformEcdsaSha384GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA384 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformEcdsaSha384GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA384 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha512GetKlass"></a><h3>xmlSecMSCngTransformEcdsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformEcdsaSha512GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA512 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformEcdsaSha512GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA512 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataDesGetKlass"></a><h3>xmlSecMSCngKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The DES key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
+<p> DES key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformDes3CbcGetKlass"></a><h3>xmlSecMSCngTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Triple DES CBC encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to Triple DES encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWDes3GetKlass"></a><h3>xmlSecMSCngTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The Triple DES key wrapper transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
+<p> Triple DES key wrapper transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataHmacGetKlass"></a><h3>xmlSecMSCngKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
+<p> HMAC key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacMd5GetKlass"></a><h3>xmlSecMSCngTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-MD5 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-MD5 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha1GetKlass"></a><h3>xmlSecMSCngTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformHmacSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-SHA1 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-SHA1 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha256GetKlass"></a><h3>xmlSecMSCngTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformHmacSha256GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-SHA256 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-SHA256 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha384GetKlass"></a><h3>xmlSecMSCngTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformHmacSha384GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-SHA384 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-SHA384 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha512GetKlass"></a><h3>xmlSecMSCngTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformHmacSha512GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-SHA512 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-SHA512 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformMd5GetKlass"></a><h3>xmlSecMSCngTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>MD-5 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformMd5GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to MD-5 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha1GetKlass"></a><h3>xmlSecMSCngTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>SHA-1 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to SHA-1 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha256GetKlass"></a><h3>xmlSecMSCngTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>SHA-256 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to SHA-256 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha384GetKlass"></a><h3>xmlSecMSCngTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>SHA-256 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformSha384GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to SHA-256 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha512GetKlass"></a><h3>xmlSecMSCngTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>SHA-512 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformSha512GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to SHA-512 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataAesGetKlass"></a><h3>xmlSecMSCngKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The AES key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
+<p> AES key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes128CbcGetKlass"></a><h3>xmlSecMSCngTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes128CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 128 CBC encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 128 CBC encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes192CbcGetKlass"></a><h3>xmlSecMSCngTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes192CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 192 CBC encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 192 CBC encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes256CbcGetKlass"></a><h3>xmlSecMSCngTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes256CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 256 CBC encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 256 CBC encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes128GcmGetKlass"></a><h3>xmlSecMSCngTransformAes128GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes128GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 128 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes128GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 128 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes192GcmGetKlass"></a><h3>xmlSecMSCngTransformAes192GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes192GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 192 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes192GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 192 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes256GcmGetKlass"></a><h3>xmlSecMSCngTransformAes256GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformAes256GcmGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 256 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformAes256GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 256 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes128GetKlass"></a><h3>xmlSecMSCngTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformKWAes128GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The AES-128 key wrapper transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
+<p> AES-128 key wrapper transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes192GetKlass"></a><h3>xmlSecMSCngTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformKWAes192GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The AES-192 key wrapper transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
+<p> AES-192 key wrapper transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes256GetKlass"></a><h3>xmlSecMSCngTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCngTransformKWAes256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The AES-256 key wrapper transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
+<p> AES-256 key wrapper transform klass.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataDsaId"></a><h3>xmlSecMSCngKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataDsaId</pre>
+<p>The DSA key klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformDsaSha1Id"></a><h3>xmlSecMSCngTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformDsaSha1Id</pre>
+<p>The DSA-SHA1 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataRsaId"></a><h3>xmlSecMSCngKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataRsaId</pre>
+<p>The RSA key klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaMd5Id"></a><h3>xmlSecMSCngTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaMd5Id</pre>
+<p>The RSA-MD5 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha1Id"></a><h3>xmlSecMSCngTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaSha1Id</pre>
+<p>The RSA-SHA1 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha256Id"></a><h3>xmlSecMSCngTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaSha256Id</pre>
+<p>The RSA-SHA256 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha384Id"></a><h3>xmlSecMSCngTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaSha384Id</pre>
+<p>The RSA-SHA384 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaSha512Id"></a><h3>xmlSecMSCngTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaSha512Id</pre>
+<p>The RSA-SHA512 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaPkcs1Id"></a><h3>xmlSecMSCngTransformRsaPkcs1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaPkcs1Id</pre>
+<p>The RSA PKCS1 key transport transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformRsaOaepId"></a><h3>xmlSecMSCngTransformRsaOaepId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformRsaOaepId</pre>
+<p>The RSA OAEP key transport transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataEcdsaId"></a><h3>xmlSecMSCngKeyDataEcdsaId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataEcdsaId</pre>
+<p>The ECDSA key klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha1Id"></a><h3>xmlSecMSCngTransformEcdsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformEcdsaSha1Id</pre>
+<p>The ECDSA-SHA1 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha256Id"></a><h3>xmlSecMSCngTransformEcdsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformEcdsaSha256Id</pre>
+<p>The ECDSA-SHA256 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha384Id"></a><h3>xmlSecMSCngTransformEcdsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformEcdsaSha384Id</pre>
+<p>The ECDSA-SHA384 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformEcdsaSha512Id"></a><h3>xmlSecMSCngTransformEcdsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformEcdsaSha512Id</pre>
+<p>The ECDSA-SHA512 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataDesId"></a><h3>xmlSecMSCngKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataDesId</pre>
+<p>The DES key data klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformDes3CbcId"></a><h3>xmlSecMSCngTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformDes3CbcId</pre>
+<p>The DES3 CBC cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWDes3Id"></a><h3>xmlSecMSCngTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformKWDes3Id</pre>
+<p>The DES3 KW transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataHmacId"></a><h3>xmlSecMSCngKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataHmacId</pre>
+<p>The HMAC key klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacMd5Id"></a><h3>xmlSecMSCngTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformHmacMd5Id</pre>
+<p>The HMAC-MD5 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha1Id"></a><h3>xmlSecMSCngTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformHmacSha1Id</pre>
+<p>The HMAC-SHA1 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha256Id"></a><h3>xmlSecMSCngTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformHmacSha256Id</pre>
+<p>The HMAC-SHA256 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha384Id"></a><h3>xmlSecMSCngTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformHmacSha384Id</pre>
+<p>The HMAC-SHA384 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformHmacSha512Id"></a><h3>xmlSecMSCngTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformHmacSha512Id</pre>
+<p>The HMAC-SHA512 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformMd5Id"></a><h3>xmlSecMSCngTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformMd5Id</pre>
+<p>The MD5 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha1Id"></a><h3>xmlSecMSCngTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformSha1Id</pre>
+<p>The SHA1 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha256Id"></a><h3>xmlSecMSCngTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformSha256Id</pre>
+<p>The SHA256 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha384Id"></a><h3>xmlSecMSCngTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformSha384Id</pre>
+<p>The SHA384 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformSha512Id"></a><h3>xmlSecMSCngTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformSha512Id</pre>
+<p>The SHA512 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataAesId"></a><h3>xmlSecMSCngKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataAesId</pre>
+<p>The AES key data klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes128CbcId"></a><h3>xmlSecMSCngTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes128CbcId</pre>
+<p>The AES128 CBC cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes192CbcId"></a><h3>xmlSecMSCngTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes192CbcId</pre>
+<p>The AES192 CBC cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes256CbcId"></a><h3>xmlSecMSCngTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes256CbcId</pre>
+<p>The AES256 CBC cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes128GcmId"></a><h3>xmlSecMSCngTransformAes128GcmId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes128GcmId</pre>
+<p>The AES128 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes192GcmId"></a><h3>xmlSecMSCngTransformAes192GcmId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes192GcmId</pre>
+<p>The AES192 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformAes256GcmId"></a><h3>xmlSecMSCngTransformAes256GcmId</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformAes256GcmId</pre>
+<p>The AES256 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes128Id"></a><h3>xmlSecMSCngTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformKWAes128Id</pre>
+<p>The AES 128 key wrap transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes192Id"></a><h3>xmlSecMSCngTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformKWAes192Id</pre>
+<p>The AES 192 key wrap transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngTransformKWAes256Id"></a><h3>xmlSecMSCngTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecMSCngTransformKWAes256Id</pre>
+<p>The AES 256 key wrap transform klass.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscng-keysstore.html b/docs/api/xmlsec-mscng-keysstore.html
new file mode 100644
index 00000000..a698ccfb
--- /dev/null
+++ b/docs/api/xmlsec-mscng-keysstore.html
@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keysstore: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="prev" href="xmlsec-mscng-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-mscng-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscng-keysstore.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-msccng-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscng-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-mscng-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-mscng-keysstore"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscng-keysstore.top_of_page"></a>keysstore</span></h2>
+<p>keysstore — Keys store implementation for Microsoft Cryptography API: Next Generation (CNG).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreGetKlass" title="xmlSecMSCngKeysStoreGetKlass ()">xmlSecMSCngKeysStoreGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreAdoptKey" title="xmlSecMSCngKeysStoreAdoptKey ()">xmlSecMSCngKeysStoreAdoptKey</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreLoad" title="xmlSecMSCngKeysStoreLoad ()">xmlSecMSCngKeysStoreLoad</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreSave" title="xmlSecMSCngKeysStoreSave ()">xmlSecMSCngKeysStoreSave</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreId" title="xmlSecMSCngKeysStoreId">xmlSecMSCngKeysStoreId</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysStoreGetKlass"></a><h3>xmlSecMSCngKeysStoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+xmlSecMSCngKeysStoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng list based keys store klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreGetKlass.returns"></a><h4>Returns</h4>
+<p> MSCng list based keys store klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysStoreAdoptKey"></a><h3>xmlSecMSCngKeysStoreAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeysStoreAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>store</code></em>
+.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCng keys store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreAdoptKey.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysStoreLoad"></a><h3>xmlSecMSCngKeysStoreLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeysStoreLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Reads keys from an XML file.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCng keys store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to associated keys manager.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreLoad.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysStoreSave"></a><h3>xmlSecMSCngKeysStoreSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeysStoreSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Writes keys from <em class="parameter"><code>store</code></em>
+ to an XML file.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCng keys store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the saved keys type (public, private, ...).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngKeysStoreSave.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-keysstore.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngKeysStoreId"></a><h3>xmlSecMSCngKeysStoreId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeysStoreId xmlSecMSCngKeysStoreGetKlass()
+</pre>
+<p>A MSCng keys store klass id.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscng-x509.html b/docs/api/xmlsec-mscng-x509.html
new file mode 100644
index 00000000..2d6d8c73
--- /dev/null
+++ b/docs/api/xmlsec-mscng-x509.html
@@ -0,0 +1,535 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<link rel="prev" href="xmlsec-mscng-keysstore.html" title="keysstore">
+<link rel="next" href="xmlsec-index.html" title="XML Security Library Reference Index">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscng-x509.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="xmlsec-msccng-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscng-keysstore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="xmlsec-mscng-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscng-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — X509 certificates implementation for Microsoft Cryptography API: Next Generation (CNG).</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509GetKlass" title="xmlSecMSCngKeyDataX509GetKlass ()">xmlSecMSCngKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertGetKlass" title="xmlSecMSCngKeyDataRawX509CertGetKlass ()">xmlSecMSCngKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreGetKlass" title="xmlSecMSCngX509StoreGetKlass ()">xmlSecMSCngX509StoreGetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptKeyCert" title="xmlSecMSCngKeyDataX509AdoptKeyCert ()">xmlSecMSCngKeyDataX509AdoptKeyCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptCert" title="xmlSecMSCngKeyDataX509AdoptCert ()">xmlSecMSCngKeyDataX509AdoptCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptCert" title="xmlSecMSCngX509StoreAdoptCert ()">xmlSecMSCngX509StoreAdoptCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptKeyStore" title="xmlSecMSCngX509StoreAdoptKeyStore ()">xmlSecMSCngX509StoreAdoptKeyStore</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptTrustedStore" title="xmlSecMSCngX509StoreAdoptTrustedStore ()">xmlSecMSCngX509StoreAdoptTrustedStore</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptUntrustedStore" title="xmlSecMSCngX509StoreAdoptUntrustedStore ()">xmlSecMSCngX509StoreAdoptUntrustedStore</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreVerify" title="xmlSecMSCngX509StoreVerify ()">xmlSecMSCngX509StoreVerify</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreFindCert" title="xmlSecMSCngX509StoreFindCert ()">xmlSecMSCngX509StoreFindCert</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509FindCertBySubject" title="xmlSecMSCngX509FindCertBySubject ()">xmlSecMSCngX509FindCertBySubject</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509Id" title="xmlSecMSCngKeyDataX509Id">xmlSecMSCngKeyDataX509Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertId" title="xmlSecMSCngKeyDataRawX509CertId">xmlSecMSCngKeyDataRawX509CertId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreId" title="xmlSecMSCngX509StoreId">xmlSecMSCngX509StoreId</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataX509GetKlass"></a><h3>xmlSecMSCngKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng X509 key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
+<p> the X509 data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataRawX509CertGetKlass"></a><h3>xmlSecMSCngKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCngKeyDataRawX509CertGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The raw X509 certificates key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
+<p> raw X509 certificates key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreGetKlass"></a><h3>xmlSecMSCngX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecMSCngX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCng X509 certificates key data store klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to MSCng X509 certificates key data store klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataX509AdoptKeyCert"></a><h3>xmlSecMSCngKeyDataX509AdoptKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeyDataX509AdoptKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataX509AdoptCert"></a><h3>xmlSecMSCngKeyDataX509AdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngKeyDataX509AdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreAdoptCert"></a><h3>xmlSecMSCngX509StoreAdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngX509StoreAdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Adds trusted (root) or untrusted certificate to the store.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to PCCERT_CONTEXT X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptCert.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreAdoptKeyStore"></a><h3>xmlSecMSCngX509StoreAdoptKeyStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngX509StoreAdoptKeyStore (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> keyStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>keyStore</code></em>
+ to the list of key stores.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptKeyStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keyStore</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptKeyStore.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreAdoptTrustedStore"></a><h3>xmlSecMSCngX509StoreAdoptTrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngX509StoreAdoptTrustedStore (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> trustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
+ to the list of trusted certs stores.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptTrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>trustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptTrustedStore.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreAdoptUntrustedStore"></a><h3>xmlSecMSCngX509StoreAdoptUntrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCngX509StoreAdoptUntrustedStore
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> untrustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
+ to the list of untrusted certs stores.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptUntrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>untrustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreAdoptUntrustedStore.returns"></a><h4>Returns</h4>
+<p> 0 on success or a negative value if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreVerify"></a><h3>xmlSecMSCngX509StoreVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCngX509StoreVerify (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> certs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Verifies <em class="parameter"><code>certs</code></em>
+ list.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 certificate context store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>certs</p></td>
+<td class="parameter_description"><p>the untrusted certificates stack.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreVerify.returns"></a><h4>Returns</h4>
+<p> pointer to the first verified certificate from <em class="parameter"><code>certs</code></em>
+.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreFindCert"></a><h3>xmlSecMSCngX509StoreFindCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCngX509StoreFindCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *subjectName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerSerial</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *ski</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Searches <em class="parameter"><code>store</code></em>
+ for a certificate that matches given criteria.</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreFindCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>subjectName</p></td>
+<td class="parameter_description"><p>the desired certificate name.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>issuerName</p></td>
+<td class="parameter_description"><p>the desired certificate issuer name.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>issuerSerial</p></td>
+<td class="parameter_description"><p>the desired certificate issuer serial number.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ski</p></td>
+<td class="parameter_description"><p>the desired certificate SKI.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509StoreFindCert.returns"></a><h4>Returns</h4>
+<p> pointer to found certificate or NULL if certificate is not found
+or an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509FindCertBySubject"></a><h3>xmlSecMSCngX509FindCertBySubject ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCngX509FindCertBySubject (<em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> store</code></em>,
+ <em class="parameter"><code><font><span class="type">LPTSTR</span></font> wcSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">DWORD</span></font> dwCertEncodingType</code></em>);</pre>
+<p>Searches for a cert with given <em class="parameter"><code>subject</code></em>
+ in the <em class="parameter"><code>store</code></em>
+</p>
+<div class="refsect3">
+<a name="xmlSecMSCngX509FindCertBySubject.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to certs store</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>wcSubject</p></td>
+<td class="parameter_description"><p>the cert subject (Unicode)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dwCertEncodingType</p></td>
+<td class="parameter_description"><p>the cert encoding type</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCngX509FindCertBySubject.returns"></a><h4>Returns</h4>
+<p> cert handle on success or NULL otherwise</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscng-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataX509Id"></a><h3>xmlSecMSCngKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataX509Id</pre>
+<p>The MSCng X509 data klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngKeyDataRawX509CertId"></a><h3>xmlSecMSCngKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecMSCngKeyDataRawX509CertId</pre>
+<p>The MSCng raw X509 certificate klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCngX509StoreId"></a><h3>xmlSecMSCngX509StoreId</h3>
+<pre class="programlisting">#define xmlSecMSCngX509StoreId</pre>
+<p>The MSCng X509 store klass.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
+</html>
diff --git a/docs/api/xmlsec-mscrypto-app.html b/docs/api/xmlsec-mscrypto-app.html
index d0bfd33e..97ce1ae8 100644
--- a/docs/api/xmlsec-mscrypto-app.html
+++ b/docs/api/xmlsec-mscrypto-app.html
@@ -1,1150 +1,1075 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="PREVIOUS" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="NEXT" title="certkeys" href="xmlsec-mscrypto-certkeys.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="next" href="xmlsec-mscrypto-certkeys.html" title="certkeys">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscrypto-app.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-certkeys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MSCRYPTO-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN42070"></a><h2>Name</h2>app -- Application functions implementation for MS Crypto.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42075"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-mscrypto-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscrypto-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for Microsoft Crypto API.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPINIT">xmlSecMSCryptoAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppInit" title="xmlSecMSCryptoAppInit ()">xmlSecMSCryptoAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPSHUTDOWN">xmlSecMSCryptoAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppShutdown" title="xmlSecMSCryptoAppShutdown ()">xmlSecMSCryptoAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">LPCTSTR</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETCERTSTORENAME">xmlSecMSCryptoAppGetCertStoreName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">LPCTSTR</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetCertStoreName" title="xmlSecMSCryptoAppGetCertStoreName ()">xmlSecMSCryptoAppGetCertStoreName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT">xmlSecMSCryptoAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrInit" title="xmlSecMSCryptoAppDefaultKeysMngrInit ()">xmlSecMSCryptoAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKey" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRLOAD">xmlSecMSCryptoAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrLoad" title="xmlSecMSCryptoAppDefaultKeysMngrLoad ()">xmlSecMSCryptoAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSAVE">xmlSecMSCryptoAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSave" title="xmlSecMSCryptoAppDefaultKeysMngrSave ()">xmlSecMSCryptoAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPRIVATEKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPUBLICKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSYMKEYLOAD">xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad" title="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()">xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEYSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTTRUSTEDSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTUNTRUSTEDSTORE">xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore" title="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()">xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYSMNGRCERTLOAD">xmlSecMSCryptoAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoad" title="xmlSecMSCryptoAppKeysMngrCertLoad ()">xmlSecMSCryptoAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYSMNGRCERTLOADMEMORY">xmlSecMSCryptoAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoadMemory" title="xmlSecMSCryptoAppKeysMngrCertLoadMemory ()">xmlSecMSCryptoAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYLOAD">xmlSecMSCryptoAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoad" title="xmlSecMSCryptoAppKeyLoad ()">xmlSecMSCryptoAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYLOADMEMORY">xmlSecMSCryptoAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoadMemory" title="xmlSecMSCryptoAppKeyLoadMemory ()">xmlSecMSCryptoAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPPKCS12LOAD">xmlSecMSCryptoAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12Load" title="xmlSecMSCryptoAppPkcs12Load ()">xmlSecMSCryptoAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPPKCS12LOADMEMORY">xmlSecMSCryptoAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12LoadMemory" title="xmlSecMSCryptoAppPkcs12LoadMemory ()">xmlSecMSCryptoAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYCERTLOAD">xmlSecMSCryptoAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoad" title="xmlSecMSCryptoAppKeyCertLoad ()">xmlSecMSCryptoAppKeyCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPKEYCERTLOADMEMORY">xmlSecMSCryptoAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoadMemory" title="xmlSecMSCryptoAppKeyCertLoadMemory ()">xmlSecMSCryptoAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETDEFAULTPWDCALLBACK">xmlSecMSCryptoAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetDefaultPwdCallback" title="xmlSecMSCryptoAppGetDefaultPwdCallback ()">xmlSecMSCryptoAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Application functions implementation for MS Crypto.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPINIT"></a><h3>xmlSecMSCryptoAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppInit"></a><h3>xmlSecMSCryptoAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN42249"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42251"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the name of another then the default ms certificate store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the name of another then the default ms certificate store.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42260"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPSHUTDOWN"></a><h3>xmlSecMSCryptoAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppShutdown"></a><h3>xmlSecMSCryptoAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN42274"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPGETCERTSTORENAME"></a><h3>xmlSecMSCryptoAppGetCertStoreName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">LPCTSTR</span></font>
-xmlSecMSCryptoAppGetCertStoreName (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>Gets the MS Crypto certs store name set by <code class="PARAMETER">xmlSecMSCryptoAppInit</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppGetCertStoreName"></a><h3>xmlSecMSCryptoAppGetCertStoreName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">LPCTSTR</span></font>
+xmlSecMSCryptoAppGetCertStoreName (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets the MS Crypto certs store name set by <em class="parameter"><code>xmlSecMSCryptoAppInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN42288"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppGetCertStoreName.returns"></a><h4>Returns</h4>
<p> the MS Crypto certs name used by xmlsec-mscrypto.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with simple keys store <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID"><span class="TYPE">xmlSecSimpleKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrInit"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
and a default MSCrypto crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN42305"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42307"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42316"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrAdoptKey
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecMSCryptoAppDefaultKeysMngrInit</span></a>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrInit" title="xmlSecMSCryptoAppDefaultKeysMngrInit ()"><span class="type">xmlSecMSCryptoAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN42337"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42339"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42354"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrLoad"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecMSCryptoAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN42375"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42377"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrInit" title="xmlSecMSCryptoAppDefaultKeysMngrInit ()"><span class="type">xmlSecMSCryptoAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42392"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSave"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN42413"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42415"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42436"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPRIVATEKEYLOAD"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCRYPTKEY</span></font> hKey</code>);</pre>
-<p>Adds private key <code class="PARAMETER">hKey</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCRYPTKEY</span></font> hKey</code></em>);</pre>
+<p>Adds private key <em class="parameter"><code>hKey</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42455"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42457"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>hKey</p></td>
-<td><p>the key handle.</p></td>
-<td> </td>
+<td class="parameter_name"><p>hKey</p></td>
+<td class="parameter_description"><p>the key handle.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42472"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRPUBLICKEYLOAD"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCRYPTKEY</span></font> hKey</code>);</pre>
-<p>Adds public key <code class="PARAMETER">hKey</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCRYPTKEY</span></font> hKey</code></em>);</pre>
+<p>Adds public key <em class="parameter"><code>hKey</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42491"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42493"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>hKey</p></td>
-<td><p>the key handle.</p></td>
-<td> </td>
+<td class="parameter_name"><p>hKey</p></td>
+<td class="parameter_description"><p>the key handle.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42508"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSYMKEYLOAD"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCRYPTKEY</span></font> hKey</code>);</pre>
-<p>Adds symmetric key <code class="PARAMETER">hKey</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCRYPTKEY</span></font> hKey</code></em>);</pre>
+<p>Adds symmetric key <em class="parameter"><code>hKey</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42527"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42529"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>hKey</p></td>
-<td><p>the key handle.</p></td>
-<td> </td>
+<td class="parameter_name"><p>hKey</p></td>
+<td class="parameter_description"><p>the key handle.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42544"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEYSTORE"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> keyStore</code>);</pre>
-<p>Adds <code class="PARAMETER">keyStore</code>
- to the list of key stores in the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> keyStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>keyStore</code></em>
+ to the list of key stores in the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42563"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42565"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyStore</p></td>
-<td><p>the pointer to keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyStore</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42580"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTTRUSTEDSTORE"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> trustedStore</code>);</pre>
-<p>Adds <code class="PARAMETER">trustedStore</code>
- to the list of trusted cert stores in the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> trustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
+ to the list of trusted cert stores in the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42599"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42601"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>trustedStore</p></td>
-<td><p>the pointer to certs store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>trustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42616"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTUNTRUSTEDSTORE"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore"></a><h3>xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> untrustedStore</code>);</pre>
-<p>Adds <code class="PARAMETER">trustedStore</code>
- to the list of un-trusted cert stores in the keys manager <code class="PARAMETER">mngr</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> untrustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
+ to the list of un-trusted cert stores in the keys manager <em class="parameter"><code>mngr</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42635"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42637"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>untrustedStore</p></td>
-<td><p>the pointer to certs store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>untrustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42652"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecMSCryptoAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoad"></a><h3>xmlSecMSCryptoAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
(not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN42677"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42679"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN42707"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecMSCryptoAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoadMemory"></a><h3>xmlSecMSCryptoAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoAppKeysMngrCertLoadMemory
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">data</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN42735"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42737"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the binary certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>size of binary certificate (data)</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>size of binary certificate (data)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42771"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYLOAD"></a><h3>xmlSecMSCryptoAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecMSCryptoAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeyLoad"></a><h3>xmlSecMSCryptoAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCryptoAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN42797"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42799"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42832"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYLOADMEMORY"></a><h3>xmlSecMSCryptoAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecMSCryptoAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeyLoadMemory"></a><h3>xmlSecMSCryptoAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCryptoAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN42861"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42863"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the key binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the key data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42902"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPPKCS12LOAD"></a><h3>xmlSecMSCryptoAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecMSCryptoAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppPkcs12Load"></a><h3>xmlSecMSCryptoAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCryptoAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file</p>
-<div class="REFSECT3">
-<a name="AEN42925"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42927"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42954"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPPKCS12LOADMEMORY"></a><h3>xmlSecMSCryptoAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecMSCryptoAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppPkcs12LoadMemory"></a><h3>xmlSecMSCryptoAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecMSCryptoAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 binary</p>
-<div class="REFSECT3">
-<a name="AEN42980"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42982"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the binary PKCS12 key in data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary PKCS12 key in data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>size of binary pkcs12 data</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>size of binary pkcs12 data</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43015"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYCERTLOAD"></a><h3>xmlSecMSCryptoAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeyCertLoad"></a><h3>xmlSecMSCryptoAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN43036"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43038"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43059"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPKEYCERTLOADMEMORY"></a><h3>xmlSecMSCryptoAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppKeyCertLoadMemory"></a><h3>xmlSecMSCryptoAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>data</code></em>
and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN43083"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43085"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the binary certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>size of certificate binary (data)</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>size of certificate binary (data)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43112"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecMSCryptoAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
+<div class="refsect2">
+<a name="xmlSecMSCryptoAppGetDefaultPwdCallback"></a><h3>xmlSecMSCryptoAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
xmlSecMSCryptoAppGetDefaultPwdCallback
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN43125"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-app.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-ref.html"><b>&lt;&lt;&lt; XML Security Library for MSCrypto API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-certkeys.html"><b>certkeys &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-mscrypto-certkeys.html b/docs/api/xmlsec-mscrypto-certkeys.html
index 1e7c65af..9cc78116 100644
--- a/docs/api/xmlsec-mscrypto-certkeys.html
+++ b/docs/api/xmlsec-mscrypto-certkeys.html
@@ -1,404 +1,359 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>certkeys</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-mscrypto-app.html">
-<link rel="NEXT" title="crypto" href="xmlsec-mscrypto-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>certkeys: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-app.html" title="app">
+<link rel="next" href="xmlsec-mscrypto-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscrypto-certkeys.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MSCRYPTO-CERTKEYS"></a>certkeys</h1>
-<div class="REFNAMEDIV">
-<a name="AEN43136"></a><h2>Name</h2>certkeys -- MS Crypto certificates helper functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CERTKEYS.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43141"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-mscrypto-certkeys"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscrypto-certkeys.top_of_page"></a>certkeys</span></h2>
+<p>certkeys — Certificate keys support functions for Microsoft Crypto API.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-certkeys.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-certkeys.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETCERT">xmlSecMSCryptoKeyDataGetCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetCert" title="xmlSecMSCryptoKeyDataGetCert ()">xmlSecMSCryptoKeyDataGetCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">HCRYPTKEY</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETKEY">xmlSecMSCryptoKeyDataGetKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">HCRYPTKEY</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetKey" title="xmlSecMSCryptoKeyDataGetKey ()">xmlSecMSCryptoKeyDataGetKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">HCRYPTKEY</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETDECRYPTKEY">xmlSecMSCryptoKeyDataGetDecryptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">HCRYPTKEY</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetDecryptKey" title="xmlSecMSCryptoKeyDataGetDecryptKey ()">xmlSecMSCryptoKeyDataGetDecryptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOCERTDUP">xmlSecMSCryptoCertDup</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertDup" title="xmlSecMSCryptoCertDup ()">xmlSecMSCryptoCertDup</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOCERTADOPT">xmlSecMSCryptoCertAdopt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertAdopt" title="xmlSecMSCryptoCertAdopt ()">xmlSecMSCryptoCertAdopt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">HCRYPTPROV</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETMSCRYPTOPROVIDER">xmlSecMSCryptoKeyDataGetMSCryptoProvider</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">HCRYPTPROV</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProvider" title="xmlSecMSCryptoKeyDataGetMSCryptoProvider ()">xmlSecMSCryptoKeyDataGetMSCryptoProvider</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">DWORD</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoKeySpec" title="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ()">xmlSecMSCryptoKeyDataGetMSCryptoKeySpec</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">DWORD</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-certkeys.html#XMLSECMSCRYPTOKEYDATAGETMSCRYPTOKEYSPEC">xmlSecMSCryptoKeyDataGetMSCryptoKeySpec</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCRYPT_KEY_PROV_INFO</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo" title="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo ()">xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-certkeys.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CERTKEYS.DESCRIPTION"></a><h2>Description</h2>
-<p>MS Crypto certificates helper functions.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CERTKEYS.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGETCERT"></a><h3>xmlSecMSCryptoKeyDataGetCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font>
-xmlSecMSCryptoKeyDataGetCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-certkeys.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetCert"></a><h3>xmlSecMSCryptoKeyDataGetCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCryptoKeyDataGetCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Native MSCrypto certificate retrieval from xmlsec keydata. The
returned PCCERT_CONTEXT must not be released by the caller.</p>
-<div class="REFSECT3">
-<a name="AEN43209"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43211"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the key data to retrieve certificate from.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data to retrieve certificate from.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43220"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetCert.returns"></a><h4>Returns</h4>
<p> PCCERT_CONTEXT on success or NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGETKEY"></a><h3>xmlSecMSCryptoKeyDataGetKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">HCRYPTKEY</span></font>
-xmlSecMSCryptoKeyDataGetKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetKey"></a><h3>xmlSecMSCryptoKeyDataGetKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">HCRYPTKEY</span></font>
+xmlSecMSCryptoKeyDataGetKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Native MSCrypto key retrieval from xmlsec keydata. The
returned HKEY must not be destroyed by the caller.</p>
-<div class="REFSECT3">
-<a name="AEN43237"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43239"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the key data to retrieve certificate from.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data to retrieve certificate from.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>type of key requested (public/private)</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>type of key requested (public/private)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN43254"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetKey.returns"></a><h4>Returns</h4>
<p> HKEY on success or NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGETDECRYPTKEY"></a><h3>xmlSecMSCryptoKeyDataGetDecryptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">HCRYPTKEY</span></font>
-xmlSecMSCryptoKeyDataGetDecryptKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetDecryptKey"></a><h3>xmlSecMSCryptoKeyDataGetDecryptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">HCRYPTKEY</span></font>
+xmlSecMSCryptoKeyDataGetDecryptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Native MSCrypto decrypt key retrieval from xmlsec keydata. The
returned HKEY must not be destroyed by the caller.</p>
-<div class="REFSECT3">
-<a name="AEN43268"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43270"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetDecryptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the key data pointer</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data pointer</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43279"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetDecryptKey.returns"></a><h4>Returns</h4>
<p> HKEY on success or NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCERTDUP"></a><h3>xmlSecMSCryptoCertDup ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font>
-xmlSecMSCryptoCertDup (<code class="PARAMETER"><font><span class="TYPE">PCCERT_CONTEXT</span></font> pCert</code>);</pre>
-<p>Duplicates the <code class="PARAMETER">pCert</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoCertDup"></a><h3>xmlSecMSCryptoCertDup ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCryptoCertDup (<em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> pCert</code></em>);</pre>
+<p>Duplicates the <em class="parameter"><code>pCert</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN43294"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43296"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoCertDup.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>pCert</p></td>
-<td><p>the pointer to cert.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pCert</p></td>
+<td class="parameter_description"><p>the pointer to cert.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN43305"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoCertDup.returns"></a><h4>Returns</h4>
<p> pointer to newly created PCCERT_CONTEXT object or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCERTADOPT"></a><h3>xmlSecMSCryptoCertAdopt ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecMSCryptoCertAdopt (<code class="PARAMETER"><font><span class="TYPE">PCCERT_CONTEXT</span></font> pCert</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoCertAdopt"></a><h3>xmlSecMSCryptoCertAdopt ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecMSCryptoCertAdopt (<em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> pCert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Creates key data value from the cert.</p>
-<div class="REFSECT3">
-<a name="AEN43322"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43324"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoCertAdopt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>pCert</p></td>
-<td><p>the pointer to cert.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pCert</p></td>
+<td class="parameter_description"><p>the pointer to cert.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the expected key type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the expected key type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43339"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoCertAdopt.returns"></a><h4>Returns</h4>
<p> pointer to newly created xmlsec key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGETMSCRYPTOPROVIDER"></a><h3>xmlSecMSCryptoKeyDataGetMSCryptoProvider ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">HCRYPTPROV</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProvider"></a><h3>xmlSecMSCryptoKeyDataGetMSCryptoProvider ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">HCRYPTPROV</span></font>
xmlSecMSCryptoKeyDataGetMSCryptoProvider
- (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets crypto provider handle</p>
-<div class="REFSECT3">
-<a name="AEN43353"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43355"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProvider.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the key data</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN43364"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProvider.returns"></a><h4>Returns</h4>
<p> the crypto provider handler or 0 if there is an error.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGETMSCRYPTOKEYSPEC"></a><h3>xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">DWORD</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec"></a><h3>xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">DWORD</span></font>
xmlSecMSCryptoKeyDataGetMSCryptoKeySpec
- (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets key spec info.</p>
-<div class="REFSECT3">
-<a name="AEN43378"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43380"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the key data</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN43389"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec.returns"></a><h4>Returns</h4>
<p> the key spec info from key data</p>
</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo"></a><h3>xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCRYPT_KEY_PROV_INFO</span></font>
+xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets key provider info.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key data</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo.returns"></a><h4>Returns</h4>
+<p> the key provider info.</p>
+</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CERTKEYS.OTHER_DETAILS"></a><h2>Types and Values</h2>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-certkeys.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-crypto.html"><b>crypto &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-mscrypto-crypto.html b/docs/api/xmlsec-mscrypto-crypto.html
index 96a011f2..b10b90cd 100644
--- a/docs/api/xmlsec-mscrypto-crypto.html
+++ b/docs/api/xmlsec-mscrypto-crypto.html
@@ -1,1676 +1,1589 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>crypto</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="PREVIOUS" title="certkeys" href="xmlsec-mscrypto-certkeys.html">
-<link rel="NEXT" title="keysstore" href="xmlsec-mscrypto-keysstore.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-certkeys.html" title="certkeys">
+<link rel="next" href="xmlsec-mscrypto-keysstore.html" title="keysstore">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-certkeys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscrypto-crypto.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-certkeys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-keysstore.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MSCRYPTO-CRYPTO"></a>crypto</h1>
-<div class="REFNAMEDIV">
-<a name="AEN43400"></a><h2>Name</h2>crypto -- Crypto transforms implementation for MS Crypto.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CRYPTO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43405"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-mscrypto-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscrypto-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for Microsoft Crypto API.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECCRYPTOGETFUNCTIONS-MSCRYPTO">xmlSecCryptoGetFunctions_mscrypto</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
</td>
-</tr>
-<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOINIT">xmlSecMSCryptoInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecCryptoGetFunctions-mscrypto" title="xmlSecCryptoGetFunctions_mscrypto ()">xmlSecCryptoGetFunctions_mscrypto</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOSHUTDOWN">xmlSecMSCryptoShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoInit" title="xmlSecMSCryptoInit ()">xmlSecMSCryptoInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYSMNGRINIT">xmlSecMSCryptoKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoShutdown" title="xmlSecMSCryptoShutdown ()">xmlSecMSCryptoShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOGENERATERANDOM">xmlSecMSCryptoGenerateRandom</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeysMngrInit" title="xmlSecMSCryptoKeysMngrInit ()">xmlSecMSCryptoKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOERRORSDEFAULTCALLBACK">xmlSecMSCryptoErrorsDefaultCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoGenerateRandom" title="xmlSecMSCryptoGenerateRandom ()">xmlSecMSCryptoGenerateRandom</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">LPWSTR</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTLOCALETOUNICODE">xmlSecMSCryptoConvertLocaleToUnicode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoErrorsDefaultCallback" title="xmlSecMSCryptoErrorsDefaultCallback ()">xmlSecMSCryptoErrorsDefaultCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">LPWSTR</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOUNICODE">xmlSecMSCryptoConvertUtf8ToUnicode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaGetKlass" title="xmlSecMSCryptoKeyDataDsaGetKlass ()">xmlSecMSCryptoKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUNICODETOUTF8">xmlSecMSCryptoConvertUnicodeToUtf8</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1GetKlass" title="xmlSecMSCryptoTransformDsaSha1GetKlass ()">xmlSecMSCryptoTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTLOCALETOUTF8">xmlSecMSCryptoConvertLocaleToUtf8</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001GetKlass" title="xmlSecMSCryptoKeyDataGost2001GetKlass ()">xmlSecMSCryptoKeyDataGost2001GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">char</span></font> *</td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOLOCALE">xmlSecMSCryptoConvertUtf8ToLocale</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass" title="xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass ()">xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTTSTRTOUTF8">xmlSecMSCryptoConvertTstrToUtf8</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-256GetKlass" title="xmlSecMSCryptoKeyDataGost2012_256GetKlass ()">xmlSecMSCryptoKeyDataGost2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">LPTSTR</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOCONVERTUTF8TOTSTR">xmlSecMSCryptoConvertUtf8ToTstr</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-512GetKlass" title="xmlSecMSCryptoKeyDataGost2012_512GetKlass ()">xmlSecMSCryptoKeyDataGost2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADSAGETKLASS">xmlSecMSCryptoKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-256GetKlass" title="xmlSecMSCryptoTransformGost2012_256GetKlass ()">xmlSecMSCryptoTransformGost2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDSASHA1GETKLASS">xmlSecMSCryptoTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-512GetKlass" title="xmlSecMSCryptoTransformGost2012_512GetKlass ()">xmlSecMSCryptoTransformGost2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAGOST2001GETKLASS">xmlSecMSCryptoKeyDataGost2001GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaGetKlass" title="xmlSecMSCryptoKeyDataRsaGetKlass ()">xmlSecMSCryptoKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMGOST2001GOSTR3411-94GETKLASS">xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5GetKlass" title="xmlSecMSCryptoTransformRsaMd5GetKlass ()">xmlSecMSCryptoTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATARSAGETKLASS">xmlSecMSCryptoKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1GetKlass" title="xmlSecMSCryptoTransformRsaSha1GetKlass ()">xmlSecMSCryptoTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAMD5GETKLASS">xmlSecMSCryptoTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256GetKlass" title="xmlSecMSCryptoTransformRsaSha256GetKlass ()">xmlSecMSCryptoTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA1GETKLASS">xmlSecMSCryptoTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384GetKlass" title="xmlSecMSCryptoTransformRsaSha384GetKlass ()">xmlSecMSCryptoTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA256GETKLASS">xmlSecMSCryptoTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512GetKlass" title="xmlSecMSCryptoTransformRsaSha512GetKlass ()">xmlSecMSCryptoTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA384GETKLASS">xmlSecMSCryptoTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1GetKlass" title="xmlSecMSCryptoTransformRsaPkcs1GetKlass ()">xmlSecMSCryptoTransformRsaPkcs1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA512GETKLASS">xmlSecMSCryptoTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepGetKlass" title="xmlSecMSCryptoTransformRsaOaepGetKlass ()">xmlSecMSCryptoTransformRsaOaepGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAPKCS1GETKLASS">xmlSecMSCryptoTransformRsaPkcs1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5GetKlass" title="xmlSecMSCryptoTransformMd5GetKlass ()">xmlSecMSCryptoTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAOAEPGETKLASS">xmlSecMSCryptoTransformRsaOaepGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1GetKlass" title="xmlSecMSCryptoTransformSha1GetKlass ()">xmlSecMSCryptoTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMMD5GETKLASS">xmlSecMSCryptoTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256GetKlass" title="xmlSecMSCryptoTransformSha256GetKlass ()">xmlSecMSCryptoTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1GETKLASS">xmlSecMSCryptoTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384GetKlass" title="xmlSecMSCryptoTransformSha384GetKlass ()">xmlSecMSCryptoTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA256GETKLASS">xmlSecMSCryptoTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512GetKlass" title="xmlSecMSCryptoTransformSha512GetKlass ()">xmlSecMSCryptoTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA384GETKLASS">xmlSecMSCryptoTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-94GetKlass" title="xmlSecMSCryptoTransformGostR3411_94GetKlass ()">xmlSecMSCryptoTransformGostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA512GETKLASS">xmlSecMSCryptoTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-256GetKlass" title="xmlSecMSCryptoTransformGostR3411_2012_256GetKlass ()">xmlSecMSCryptoTransformGostR3411_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMGOSTR3411-94GETKLASS">xmlSecMSCryptoTransformGostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-512GetKlass" title="xmlSecMSCryptoTransformGostR3411_2012_512GetKlass ()">xmlSecMSCryptoTransformGostR3411_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESGETKLASS">xmlSecMSCryptoKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesGetKlass" title="xmlSecMSCryptoKeyDataAesGetKlass ()">xmlSecMSCryptoKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESSET">xmlSecMSCryptoKeyDataAesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesSet" title="xmlSecMSCryptoKeyDataAesSet ()">xmlSecMSCryptoKeyDataAesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES128CBCGETKLASS">xmlSecMSCryptoTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcGetKlass" title="xmlSecMSCryptoTransformAes128CbcGetKlass ()">xmlSecMSCryptoTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES192CBCGETKLASS">xmlSecMSCryptoTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcGetKlass" title="xmlSecMSCryptoTransformAes192CbcGetKlass ()">xmlSecMSCryptoTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES256CBCGETKLASS">xmlSecMSCryptoTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcGetKlass" title="xmlSecMSCryptoTransformAes256CbcGetKlass ()">xmlSecMSCryptoTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES128GETKLASS">xmlSecMSCryptoTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128GetKlass" title="xmlSecMSCryptoTransformKWAes128GetKlass ()">xmlSecMSCryptoTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES192GETKLASS">xmlSecMSCryptoTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192GetKlass" title="xmlSecMSCryptoTransformKWAes192GetKlass ()">xmlSecMSCryptoTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES256GETKLASS">xmlSecMSCryptoTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256GetKlass" title="xmlSecMSCryptoTransformKWAes256GetKlass ()">xmlSecMSCryptoTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADESGETKLASS">xmlSecMSCryptoKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesGetKlass" title="xmlSecMSCryptoKeyDataDesGetKlass ()">xmlSecMSCryptoKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDES3CBCGETKLASS">xmlSecMSCryptoTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcGetKlass" title="xmlSecMSCryptoTransformDes3CbcGetKlass ()">xmlSecMSCryptoTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWDES3GETKLASS">xmlSecMSCryptoTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3GetKlass" title="xmlSecMSCryptoTransformKWDes3GetKlass ()">xmlSecMSCryptoTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOHMACGETMINOUTPUTLENGTH">xmlSecMSCryptoHmacGetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacGetMinOutputLength" title="xmlSecMSCryptoHmacGetMinOutputLength ()">xmlSecMSCryptoHmacGetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOHMACSETMINOUTPUTLENGTH">xmlSecMSCryptoHmacSetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacSetMinOutputLength" title="xmlSecMSCryptoHmacSetMinOutputLength ()">xmlSecMSCryptoHmacSetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACGETKLASS">xmlSecMSCryptoKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacGetKlass" title="xmlSecMSCryptoKeyDataHmacGetKlass ()">xmlSecMSCryptoKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACSET">xmlSecMSCryptoKeyDataHmacSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacSet" title="xmlSecMSCryptoKeyDataHmacSet ()">xmlSecMSCryptoKeyDataHmacSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACMD5GETKLASS">xmlSecMSCryptoTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5GetKlass" title="xmlSecMSCryptoTransformHmacMd5GetKlass ()">xmlSecMSCryptoTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA1GETKLASS">xmlSecMSCryptoTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1GetKlass" title="xmlSecMSCryptoTransformHmacSha1GetKlass ()">xmlSecMSCryptoTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA256GETKLASS">xmlSecMSCryptoTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256GetKlass" title="xmlSecMSCryptoTransformHmacSha256GetKlass ()">xmlSecMSCryptoTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA384GETKLASS">xmlSecMSCryptoTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384GetKlass" title="xmlSecMSCryptoTransformHmacSha384GetKlass ()">xmlSecMSCryptoTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA512GETKLASS">xmlSecMSCryptoTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512GetKlass" title="xmlSecMSCryptoTransformHmacSha512GetKlass ()">xmlSecMSCryptoTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CRYPTO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43767"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADSAID">xmlSecMSCryptoKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaId" title="xmlSecMSCryptoKeyDataDsaId">xmlSecMSCryptoKeyDataDsaId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1Id" title="xmlSecMSCryptoTransformDsaSha1Id">xmlSecMSCryptoTransformDsaSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001Id" title="xmlSecMSCryptoKeyDataGost2001Id">xmlSecMSCryptoKeyDataGost2001Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDSASHA1ID">xmlSecMSCryptoTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2001GostR3411-94Id" title="xmlSecMSCryptoTransformGost2001GostR3411_94Id">xmlSecMSCryptoTransformGost2001GostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAGOST2001ID">xmlSecMSCryptoKeyDataGost2001Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-256Id" title="xmlSecMSCryptoKeyDataGost2012_256Id">xmlSecMSCryptoKeyDataGost2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMGOST2001GOSTR3411-94ID">xmlSecMSCryptoTransformGost2001GostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-512Id" title="xmlSecMSCryptoKeyDataGost2012_512Id">xmlSecMSCryptoKeyDataGost2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATARSAID">xmlSecMSCryptoKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-256Id" title="xmlSecMSCryptoTransformGost2012_256Id">xmlSecMSCryptoTransformGost2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAMD5ID">xmlSecMSCryptoTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-512Id" title="xmlSecMSCryptoTransformGost2012_512Id">xmlSecMSCryptoTransformGost2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA1ID">xmlSecMSCryptoTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaId" title="xmlSecMSCryptoKeyDataRsaId">xmlSecMSCryptoKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA256ID">xmlSecMSCryptoTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5Id" title="xmlSecMSCryptoTransformRsaMd5Id">xmlSecMSCryptoTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA384ID">xmlSecMSCryptoTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1Id" title="xmlSecMSCryptoTransformRsaSha1Id">xmlSecMSCryptoTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSASHA512ID">xmlSecMSCryptoTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256Id" title="xmlSecMSCryptoTransformRsaSha256Id">xmlSecMSCryptoTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAPKCS1ID">xmlSecMSCryptoTransformRsaPkcs1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384Id" title="xmlSecMSCryptoTransformRsaSha384Id">xmlSecMSCryptoTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMRSAOAEPID">xmlSecMSCryptoTransformRsaOaepId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512Id" title="xmlSecMSCryptoTransformRsaSha512Id">xmlSecMSCryptoTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMMD5ID">xmlSecMSCryptoTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1Id" title="xmlSecMSCryptoTransformRsaPkcs1Id">xmlSecMSCryptoTransformRsaPkcs1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1ID">xmlSecMSCryptoTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepId" title="xmlSecMSCryptoTransformRsaOaepId">xmlSecMSCryptoTransformRsaOaepId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA256ID">xmlSecMSCryptoTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5Id" title="xmlSecMSCryptoTransformMd5Id">xmlSecMSCryptoTransformMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA384ID">xmlSecMSCryptoTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1Id" title="xmlSecMSCryptoTransformSha1Id">xmlSecMSCryptoTransformSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA512ID">xmlSecMSCryptoTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256Id" title="xmlSecMSCryptoTransformSha256Id">xmlSecMSCryptoTransformSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMGOSTR3411-94ID">xmlSecMSCryptoTransformGostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384Id" title="xmlSecMSCryptoTransformSha384Id">xmlSecMSCryptoTransformSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAAESID">xmlSecMSCryptoKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512Id" title="xmlSecMSCryptoTransformSha512Id">xmlSecMSCryptoTransformSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES128CBCID">xmlSecMSCryptoTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-94Id" title="xmlSecMSCryptoTransformGostR3411_94Id">xmlSecMSCryptoTransformGostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES192CBCID">xmlSecMSCryptoTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-256Id" title="xmlSecMSCryptoTransformGostR3411_2012_256Id">xmlSecMSCryptoTransformGostR3411_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMAES256CBCID">xmlSecMSCryptoTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-512Id" title="xmlSecMSCryptoTransformGostR3411_2012_512Id">xmlSecMSCryptoTransformGostR3411_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES128ID">xmlSecMSCryptoTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesId" title="xmlSecMSCryptoKeyDataAesId">xmlSecMSCryptoKeyDataAesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES192ID">xmlSecMSCryptoTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcId" title="xmlSecMSCryptoTransformAes128CbcId">xmlSecMSCryptoTransformAes128CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWAES256ID">xmlSecMSCryptoTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcId" title="xmlSecMSCryptoTransformAes192CbcId">xmlSecMSCryptoTransformAes192CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATADESID">xmlSecMSCryptoKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcId" title="xmlSecMSCryptoTransformAes256CbcId">xmlSecMSCryptoTransformAes256CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMDES3CBCID">xmlSecMSCryptoTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128Id" title="xmlSecMSCryptoTransformKWAes128Id">xmlSecMSCryptoTransformKWAes128Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMKWDES3ID">xmlSecMSCryptoTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192Id" title="xmlSecMSCryptoTransformKWAes192Id">xmlSecMSCryptoTransformKWAes192Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOKEYDATAHMACID">xmlSecMSCryptoKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256Id" title="xmlSecMSCryptoTransformKWAes256Id">xmlSecMSCryptoTransformKWAes256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACMD5ID">xmlSecMSCryptoTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesId" title="xmlSecMSCryptoKeyDataDesId">xmlSecMSCryptoKeyDataDesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA1ID">xmlSecMSCryptoTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcId" title="xmlSecMSCryptoTransformDes3CbcId">xmlSecMSCryptoTransformDes3CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA256ID">xmlSecMSCryptoTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3Id" title="xmlSecMSCryptoTransformKWDes3Id">xmlSecMSCryptoTransformKWDes3Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA384ID">xmlSecMSCryptoTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacId" title="xmlSecMSCryptoKeyDataHmacId">xmlSecMSCryptoKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMHMACSHA512ID">xmlSecMSCryptoTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5Id" title="xmlSecMSCryptoTransformHmacMd5Id">xmlSecMSCryptoTransformHmacMd5Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1Id" title="xmlSecMSCryptoTransformHmacSha1Id">xmlSecMSCryptoTransformHmacSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256Id" title="xmlSecMSCryptoTransformHmacSha256Id">xmlSecMSCryptoTransformHmacSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384Id" title="xmlSecMSCryptoTransformHmacSha384Id">xmlSecMSCryptoTransformHmacSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512Id" title="xmlSecMSCryptoTransformHmacSha512Id">xmlSecMSCryptoTransformHmacSha512Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CRYPTO.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto transforms implementation for MS Crypto.</p>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CRYPTO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOGETFUNCTIONS-MSCRYPTO"></a><h3>xmlSecCryptoGetFunctions_mscrypto ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoGetFunctions_mscrypto (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-mscrypto"></a><h3>xmlSecCryptoGetFunctions_mscrypto ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_mscrypto (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets MSCrypto specific functions table.</p>
-<div class="REFSECT3">
-<a name="AEN43921"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-mscrypto.returns"></a><h4>Returns</h4>
<p> xmlsec-mscrypto functions table.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOINIT"></a><h3>xmlSecMSCryptoInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoInit"></a><h3>xmlSecMSCryptoInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN43934"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOSHUTDOWN"></a><h3>xmlSecMSCryptoShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoShutdown"></a><h3>xmlSecMSCryptoShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN43947"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSMNGRINIT"></a><h3>xmlSecMSCryptoKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysMngrInit"></a><h3>xmlSecMSCryptoKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds MSCrypto specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN43961"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43963"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN43972"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOGENERATERANDOM"></a><h3>xmlSecMSCryptoGenerateRandom ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoGenerateRandom (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buffer</code>,
- <code class="PARAMETER"><font><span class="TYPE">size_t</span></font> size</code>);</pre>
-<p>Generates <code class="PARAMETER">size</code>
- random bytes and puts result in <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoGenerateRandom"></a><h3>xmlSecMSCryptoGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
(not implemented yet).</p>
-<div class="REFSECT3">
-<a name="AEN43991"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN43993"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the destination buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the numer of bytes to generate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN44008"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoGenerateRandom.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOERRORSDEFAULTCALLBACK"></a><h3>xmlSecMSCryptoErrorsDefaultCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecMSCryptoErrorsDefaultCallback (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>);</pre>
-<p>The default errors reporting callback function.</p>
-<div class="REFSECT3">
-<a name="AEN44040"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44042"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecMSCryptoErrorsDefaultCallback"></a><h3>xmlSecMSCryptoErrorsDefaultCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecMSCryptoErrorsDefaultCallback (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>);</pre>
+<p>The default errors reporting callback function. Just a pass through to the default callback.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoErrorsDefaultCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location file name (__FILE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location file name (__FILE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function name (__FUNCTION__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function name (__FUNCTION__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the additional error message.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the additional error message.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTLOCALETOUNICODE"></a><h3>xmlSecMSCryptoConvertLocaleToUnicode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">LPWSTR</span></font>
-xmlSecMSCryptoConvertLocaleToUnicode (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *str</code>);</pre>
-<p>Converts input string from current system locale to Unicode.</p>
-<div class="REFSECT3">
-<a name="AEN44098"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44100"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44109"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTUTF8TOUNICODE"></a><h3>xmlSecMSCryptoConvertUtf8ToUnicode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">LPWSTR</span></font>
-xmlSecMSCryptoConvertUtf8ToUnicode (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Converts input string from UTF8 to Unicode.</p>
-<div class="REFSECT3">
-<a name="AEN44123"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44125"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44134"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTUNICODETOUTF8"></a><h3>xmlSecMSCryptoConvertUnicodeToUtf8 ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecMSCryptoConvertUnicodeToUtf8 (<code class="PARAMETER"><font><span class="TYPE">LPCWSTR</span></font> str</code>);</pre>
-<p>Converts input string from Unicode to UTF8.</p>
-<div class="REFSECT3">
-<a name="AEN44148"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44150"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44159"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTLOCALETOUTF8"></a><h3>xmlSecMSCryptoConvertLocaleToUtf8 ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecMSCryptoConvertLocaleToUtf8 (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *str</code>);</pre>
-<p>Converts input string from locale to UTF8.</p>
-<div class="REFSECT3">
-<a name="AEN44173"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44175"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44184"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTUTF8TOLOCALE"></a><h3>xmlSecMSCryptoConvertUtf8ToLocale ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">char</span></font> *
-xmlSecMSCryptoConvertUtf8ToLocale (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Converts input string from UTF8 to locale.</p>
-<div class="REFSECT3">
-<a name="AEN44198"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44200"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44209"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTTSTRTOUTF8"></a><h3>xmlSecMSCryptoConvertTstrToUtf8 ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecMSCryptoConvertTstrToUtf8 (<code class="PARAMETER"><font><span class="TYPE">LPCTSTR</span></font> str</code>);</pre>
-<p>Converts input string from TSTR (locale or Unicode) to UTF8.</p>
-<div class="REFSECT3">
-<a name="AEN44223"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44225"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44234"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOCONVERTUTF8TOTSTR"></a><h3>xmlSecMSCryptoConvertUtf8ToTstr ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">LPTSTR</span></font>
-xmlSecMSCryptoConvertUtf8ToTstr (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Converts input string from UTF8 to TSTR (locale or Unicode).</p>
-<div class="REFSECT3">
-<a name="AEN44248"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44250"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to convert.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44259"></a><h4>Returns</h4>
-<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATADSAGETKLASS"></a><h3>xmlSecMSCryptoKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataDsaGetKlass"></a><h3>xmlSecMSCryptoKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44272"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to DSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecMSCryptoTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformDsaSha1GetKlass"></a><h3>xmlSecMSCryptoTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformDsaSha1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44285"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGOST2001GETKLASS"></a><h3>xmlSecMSCryptoKeyDataGost2001GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataGost2001GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The GOST2001 key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44298"></a><h4>Returns</h4>
-<p> pointer to GOST2001 key data klass.</p>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2001GetKlass"></a><h3>xmlSecMSCryptoKeyDataGost2001GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataGost2001GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The GOST2012_512 key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataGost2001GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to GOST2012_512 key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMGOST2001GOSTR3411-94GETKLASS"></a><h3>xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass"></a><h3>xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST2001-GOSTR3411_94 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44311"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> GOST2001-GOSTR3411_94 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATARSAGETKLASS"></a><h3>xmlSecMSCryptoKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2012-256GetKlass"></a><h3>xmlSecMSCryptoKeyDataGost2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataGost2012_256GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2012-512GetKlass"></a><h3>xmlSecMSCryptoKeyDataGost2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataGost2012_512GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2012-256GetKlass"></a><h3>xmlSecMSCryptoTransformGost2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformGost2012_256GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2012-512GetKlass"></a><h3>xmlSecMSCryptoTransformGost2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformGost2012_512GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataRsaGetKlass"></a><h3>xmlSecMSCryptoKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The MSCrypto RSA CertKey data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44324"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MSCrypto RSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaMd5GetKlass"></a><h3>xmlSecMSCryptoTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44337"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha1GetKlass"></a><h3>xmlSecMSCryptoTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaSha1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44350"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha256GetKlass"></a><h3>xmlSecMSCryptoTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44363"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha384GetKlass"></a><h3>xmlSecMSCryptoTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44376"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha512GetKlass"></a><h3>xmlSecMSCryptoTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44389"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAPKCS1GETKLASS"></a><h3>xmlSecMSCryptoTransformRsaPkcs1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaPkcs1GetKlass"></a><h3>xmlSecMSCryptoTransformRsaPkcs1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaPkcs1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-PKCS1 key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44402"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaPkcs1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-PKCS1 key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAOAEPGETKLASS"></a><h3>xmlSecMSCryptoTransformRsaOaepGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaOaepGetKlass"></a><h3>xmlSecMSCryptoTransformRsaOaepGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformRsaOaepGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-OAEP key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44415"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformRsaOaepGetKlass.returns"></a><h4>Returns</h4>
<p> RSA-OAEP key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMMD5GETKLASS"></a><h3>xmlSecMSCryptoTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformMd5GetKlass"></a><h3>xmlSecMSCryptoTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44428"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA1GETKLASS"></a><h3>xmlSecMSCryptoTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha1GetKlass"></a><h3>xmlSecMSCryptoTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44441"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA256GETKLASS"></a><h3>xmlSecMSCryptoTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha256GetKlass"></a><h3>xmlSecMSCryptoTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44454"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-256 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA384GETKLASS"></a><h3>xmlSecMSCryptoTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha384GetKlass"></a><h3>xmlSecMSCryptoTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44467"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-384 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA512GETKLASS"></a><h3>xmlSecMSCryptoTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha512GetKlass"></a><h3>xmlSecMSCryptoTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44480"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-512 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMGOSTR3411-94GETKLASS"></a><h3>xmlSecMSCryptoTransformGostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-94GetKlass"></a><h3>xmlSecMSCryptoTransformGostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformGostR3411_94GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOSTR3411_94 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44493"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformGostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOSTR3411_94 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAAESGETKLASS"></a><h3>xmlSecMSCryptoKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-256GetKlass"></a><h3>xmlSecMSCryptoTransformGostR3411_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformGostR3411_2012_256GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>GOSTR3411_2012_256 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-256GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to GOSTR3411_2012_256 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-512GetKlass"></a><h3>xmlSecMSCryptoTransformGostR3411_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformGostR3411_2012_512GetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>GOSTR3411_2012_512 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-512GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to GOSTR3411_2012_512 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataAesGetKlass"></a><h3>xmlSecMSCryptoKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44506"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAAESSET"></a><h3>xmlSecMSCryptoKeyDataAesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeyDataAesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataAesSet"></a><h3>xmlSecMSCryptoKeyDataAesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeyDataAesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of AES key data.</p>
-<div class="REFSECT3">
-<a name="AEN44526"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44528"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataAesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to AES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to AES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44549"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataAesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecMSCryptoTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes128CbcGetKlass"></a><h3>xmlSecMSCryptoTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformAes128CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44562"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecMSCryptoTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes192CbcGetKlass"></a><h3>xmlSecMSCryptoTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformAes192CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44575"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecMSCryptoTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes256CbcGetKlass"></a><h3>xmlSecMSCryptoTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformAes256CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44588"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecMSCryptoTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes128GetKlass"></a><h3>xmlSecMSCryptoTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformKWAes128GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44601"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecMSCryptoTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes192GetKlass"></a><h3>xmlSecMSCryptoTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformKWAes192GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44614"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecMSCryptoTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes256GetKlass"></a><h3>xmlSecMSCryptoTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformKWAes256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44627"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATADESGETKLASS"></a><h3>xmlSecMSCryptoKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataDesGetKlass"></a><h3>xmlSecMSCryptoKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44640"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecMSCryptoTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformDes3CbcGetKlass"></a><h3>xmlSecMSCryptoTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformDes3CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44653"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecMSCryptoTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecMSCryptoTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWDes3GetKlass"></a><h3>xmlSecMSCryptoTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecMSCryptoTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44666"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOHMACGETMINOUTPUTLENGTH"></a><h3>xmlSecMSCryptoHmacGetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoHmacGetMinOutputLength (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoHmacGetMinOutputLength"></a><h3>xmlSecMSCryptoHmacGetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoHmacGetMinOutputLength (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the value of min HMAC length.</p>
-<div class="REFSECT3">
-<a name="AEN44679"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoHmacGetMinOutputLength.returns"></a><h4>Returns</h4>
<p> the min HMAC output length</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOHMACSETMINOUTPUTLENGTH"></a><h3>xmlSecMSCryptoHmacSetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecMSCryptoHmacSetMinOutputLength (<code class="PARAMETER"><font><span class="TYPE">int</span></font> min_length</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoHmacSetMinOutputLength"></a><h3>xmlSecMSCryptoHmacSetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecMSCryptoHmacSetMinOutputLength (<em class="parameter"><code><font><span class="type">int</span></font> min_length</code></em>);</pre>
<p>Sets the min HMAC output length</p>
-<div class="REFSECT3">
-<a name="AEN44693"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44695"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoHmacSetMinOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>min_length</p></td>
-<td><p>the new min length</p></td>
-<td> </td>
+<td class="parameter_name"><p>min_length</p></td>
+<td class="parameter_description"><p>the new min length</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAHMACGETKLASS"></a><h3>xmlSecMSCryptoKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataHmacGetKlass"></a><h3>xmlSecMSCryptoKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN44714"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAHMACSET"></a><h3>xmlSecMSCryptoKeyDataHmacSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeyDataHmacSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataHmacSet"></a><h3>xmlSecMSCryptoKeyDataHmacSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeyDataHmacSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of HMAC key data.</p>
-<div class="REFSECT3">
-<a name="AEN44734"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN44736"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataHmacSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to HMAC key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to HMAC key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN44757"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataHmacSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecMSCryptoTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacMd5GetKlass"></a><h3>xmlSecMSCryptoTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformHmacMd5GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44770"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecMSCryptoTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha1GetKlass"></a><h3>xmlSecMSCryptoTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformHmacSha1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44783"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecMSCryptoTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha256GetKlass"></a><h3>xmlSecMSCryptoTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformHmacSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44796"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecMSCryptoTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha384GetKlass"></a><h3>xmlSecMSCryptoTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformHmacSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44809"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecMSCryptoTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha512GetKlass"></a><h3>xmlSecMSCryptoTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecMSCryptoTransformHmacSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN44822"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-CRYPTO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATADSAID"></a><h3>xmlSecMSCryptoKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataDsaId</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataDsaId"></a><h3>xmlSecMSCryptoKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataDsaId</pre>
+<div class="warning"><p><code class="literal">xmlSecMSCryptoKeyDataDsaId</code> is deprecated and should not be used in newly-written code.</p></div>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMDSASHA1ID"></a><h3>xmlSecMSCryptoTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformDsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformDsaSha1Id"></a><h3>xmlSecMSCryptoTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformDsaSha1Id</pre>
<p>The DSA SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAGOST2001ID"></a><h3>xmlSecMSCryptoKeyDataGost2001Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataGost2001Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2001Id"></a><h3>xmlSecMSCryptoKeyDataGost2001Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataGost2001Id</pre>
<p>The GOST2001 key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMGOST2001GOSTR3411-94ID"></a><h3>xmlSecMSCryptoTransformGost2001GostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformGost2001GostR3411_94Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2001GostR3411-94Id"></a><h3>xmlSecMSCryptoTransformGost2001GostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGost2001GostR3411_94Id</pre>
<p>The GOST2001 GOSTR3411_94 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATARSAID"></a><h3>xmlSecMSCryptoKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataRsaId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2012-256Id"></a><h3>xmlSecMSCryptoKeyDataGost2012_256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataGost2012_256Id</pre>
+<p>The GOST R 34.10-2012 256 key klass</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataGost2012-512Id"></a><h3>xmlSecMSCryptoKeyDataGost2012_512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataGost2012_512Id</pre>
+<p>The GOST R 34.10-2012 512 key klass</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2012-256Id"></a><h3>xmlSecMSCryptoTransformGost2012_256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGost2012_256Id</pre>
+<p>The GOST R 34.10-2012 - GOST R 3411-2012 256 bit signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGost2012-512Id"></a><h3>xmlSecMSCryptoTransformGost2012_512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGost2012_512Id</pre>
+<p>The GOST R 34.10-2012 - GOST R 3411-2012 512 bit signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataRsaId"></a><h3>xmlSecMSCryptoKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataRsaId</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAMD5ID"></a><h3>xmlSecMSCryptoTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaMd5Id"></a><h3>xmlSecMSCryptoTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaMd5Id</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA1ID"></a><h3>xmlSecMSCryptoTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha1Id"></a><h3>xmlSecMSCryptoTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaSha1Id</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA256ID"></a><h3>xmlSecMSCryptoTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha256Id"></a><h3>xmlSecMSCryptoTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaSha256Id</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA384ID"></a><h3>xmlSecMSCryptoTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha384Id"></a><h3>xmlSecMSCryptoTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaSha384Id</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSASHA512ID"></a><h3>xmlSecMSCryptoTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaSha512Id"></a><h3>xmlSecMSCryptoTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaSha512Id</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAPKCS1ID"></a><h3>xmlSecMSCryptoTransformRsaPkcs1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaPkcs1Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaPkcs1Id"></a><h3>xmlSecMSCryptoTransformRsaPkcs1Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaPkcs1Id</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMRSAOAEPID"></a><h3>xmlSecMSCryptoTransformRsaOaepId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformRsaOaepId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformRsaOaepId"></a><h3>xmlSecMSCryptoTransformRsaOaepId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformRsaOaepId</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMMD5ID"></a><h3>xmlSecMSCryptoTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformMd5Id"></a><h3>xmlSecMSCryptoTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformMd5Id</pre>
<p>The MD5 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA1ID"></a><h3>xmlSecMSCryptoTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha1Id"></a><h3>xmlSecMSCryptoTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformSha1Id</pre>
<p>The SHA1 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA256ID"></a><h3>xmlSecMSCryptoTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha256Id"></a><h3>xmlSecMSCryptoTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformSha256Id</pre>
<p>The SHA256 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA384ID"></a><h3>xmlSecMSCryptoTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha384Id"></a><h3>xmlSecMSCryptoTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformSha384Id</pre>
<p>The SHA384 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMSHA512ID"></a><h3>xmlSecMSCryptoTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformSha512Id"></a><h3>xmlSecMSCryptoTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformSha512Id</pre>
<p>The SHA512 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMGOSTR3411-94ID"></a><h3>xmlSecMSCryptoTransformGostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformGostR3411_94Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-94Id"></a><h3>xmlSecMSCryptoTransformGostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGostR3411_94Id</pre>
<p>The GOSTR3411_94 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAAESID"></a><h3>xmlSecMSCryptoKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataAesId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-256Id"></a><h3>xmlSecMSCryptoTransformGostR3411_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGostR3411_2012_256Id</pre>
+<p>The GOST R 34.11-2012 256 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformGostR3411-2012-512Id"></a><h3>xmlSecMSCryptoTransformGostR3411_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformGostR3411_2012_512Id</pre>
+<p>The GOST R 34.11-2012 512 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataAesId"></a><h3>xmlSecMSCryptoKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataAesId</pre>
<p>The AES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES128CBCID"></a><h3>xmlSecMSCryptoTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformAes128CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes128CbcId"></a><h3>xmlSecMSCryptoTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformAes128CbcId</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES192CBCID"></a><h3>xmlSecMSCryptoTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformAes192CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes192CbcId"></a><h3>xmlSecMSCryptoTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformAes192CbcId</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMAES256CBCID"></a><h3>xmlSecMSCryptoTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformAes256CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformAes256CbcId"></a><h3>xmlSecMSCryptoTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformAes256CbcId</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES128ID"></a><h3>xmlSecMSCryptoTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformKWAes128Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes128Id"></a><h3>xmlSecMSCryptoTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformKWAes128Id</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES192ID"></a><h3>xmlSecMSCryptoTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformKWAes192Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes192Id"></a><h3>xmlSecMSCryptoTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformKWAes192Id</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWAES256ID"></a><h3>xmlSecMSCryptoTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformKWAes256Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWAes256Id"></a><h3>xmlSecMSCryptoTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformKWAes256Id</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATADESID"></a><h3>xmlSecMSCryptoKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataDesId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataDesId"></a><h3>xmlSecMSCryptoKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataDesId</pre>
<p>The DES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMDES3CBCID"></a><h3>xmlSecMSCryptoTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformDes3CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformDes3CbcId"></a><h3>xmlSecMSCryptoTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformDes3CbcId</pre>
<p>The DES3 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMKWDES3ID"></a><h3>xmlSecMSCryptoTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformKWDes3Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformKWDes3Id"></a><h3>xmlSecMSCryptoTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformKWDes3Id</pre>
<p>The DES3 KW transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAHMACID"></a><h3>xmlSecMSCryptoKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataHmacId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataHmacId"></a><h3>xmlSecMSCryptoKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataHmacId</pre>
<p>The DHMAC key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACMD5ID"></a><h3>xmlSecMSCryptoTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformHmacMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacMd5Id"></a><h3>xmlSecMSCryptoTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformHmacMd5Id</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA1ID"></a><h3>xmlSecMSCryptoTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformHmacSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha1Id"></a><h3>xmlSecMSCryptoTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformHmacSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA256ID"></a><h3>xmlSecMSCryptoTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformHmacSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha256Id"></a><h3>xmlSecMSCryptoTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformHmacSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA384ID"></a><h3>xmlSecMSCryptoTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformHmacSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha384Id"></a><h3>xmlSecMSCryptoTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformHmacSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOTRANSFORMHMACSHA512ID"></a><h3>xmlSecMSCryptoTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoTransformHmacSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoTransformHmacSha512Id"></a><h3>xmlSecMSCryptoTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoTransformHmacSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-certkeys.html"><b>&lt;&lt;&lt; certkeys</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-keysstore.html"><b>keysstore &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-mscrypto-keysstore.html b/docs/api/xmlsec-mscrypto-keysstore.html
index 8e0c5855..6db16430 100644
--- a/docs/api/xmlsec-mscrypto-keysstore.html
+++ b/docs/api/xmlsec-mscrypto-keysstore.html
@@ -1,320 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keysstore</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="PREVIOUS" title="crypto" href="xmlsec-mscrypto-crypto.html">
-<link rel="NEXT" title="x509" href="xmlsec-mscrypto-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keysstore: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-mscrypto-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscrypto-keysstore.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE"></a>keysstore</h1>
-<div class="REFNAMEDIV">
-<a name="AEN45036"></a><h2>Name</h2>keysstore -- Keys store implementation for MS Crypto.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45041"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-mscrypto-keysstore"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscrypto-keysstore.top_of_page"></a>keysstore</span></h2>
+<p>keysstore — Keys store implementation for Microsoft Crypto API.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Private"><span class="acronym">Private</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREGETKLASS">xmlSecMSCryptoKeysStoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreGetKlass" title="xmlSecMSCryptoKeysStoreGetKlass ()">xmlSecMSCryptoKeysStoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREADOPTKEY">xmlSecMSCryptoKeysStoreAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreAdoptKey" title="xmlSecMSCryptoKeysStoreAdoptKey ()">xmlSecMSCryptoKeysStoreAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTORELOAD">xmlSecMSCryptoKeysStoreLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreLoad" title="xmlSecMSCryptoKeysStoreLoad ()">xmlSecMSCryptoKeysStoreLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTORESAVE">xmlSecMSCryptoKeysStoreSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreSave" title="xmlSecMSCryptoKeysStoreSave ()">xmlSecMSCryptoKeysStoreSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45074"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-keysstore.html#XMLSECMSCRYPTOKEYSSTOREID">xmlSecMSCryptoKeysStoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreId" title="xmlSecMSCryptoKeysStoreId">xmlSecMSCryptoKeysStoreId</a></td>
</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE.DESCRIPTION"></a><h2>Description</h2>
-<p>Keys store implementation for MS Crypto.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSSTOREGETKLASS"></a><h3>xmlSecMSCryptoKeysStoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font>
-xmlSecMSCryptoKeysStoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.description"></a><h2>Description</h2>
+<p>MSCrypto keys store that uses Simple Keys Store under the hood. Uses the
+MS Certificate store as a backing store for the finding keys, but the
+MS Certificate store not written to by the keys store.
+So, if store-&gt;findkey is done and the key is not found in the simple
+keys store, the MS Certificate store is looked up.
+Thus, the MS Certificate store can be used to pre-load keys and becomes
+an alternate source of keys for xmlsec.</p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysStoreGetKlass"></a><h3>xmlSecMSCryptoKeysStoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+xmlSecMSCryptoKeysStoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The MSCrypto list based keys store klass.</p>
-<div class="REFSECT3">
-<a name="AEN45096"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreGetKlass.returns"></a><h4>Returns</h4>
<p> MSCrypto list based keys store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSSTOREADOPTKEY"></a><h3>xmlSecMSCryptoKeysStoreAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeysStoreAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysStoreAdoptKey"></a><h3>xmlSecMSCryptoKeysStoreAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeysStoreAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN45115"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45117"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to MSCrypto keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCrypto keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45132"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSSTORELOAD"></a><h3>xmlSecMSCryptoKeysStoreLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeysStoreLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysStoreLoad"></a><h3>xmlSecMSCryptoKeysStoreLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeysStoreLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
<p>Reads keys from an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN45152"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45154"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to MSCrypto keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCrypto keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to associated keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to associated keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45175"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSSTORESAVE"></a><h3>xmlSecMSCryptoKeysStoreSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeysStoreSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Writes keys from <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysStoreSave"></a><h3>xmlSecMSCryptoKeysStoreSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeysStoreSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Writes keys from <em class="parameter"><code>store</code></em>
to an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN45196"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45198"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to MSCrypto keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to MSCrypto keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the saved keys type (public, private, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the saved keys type (public, private, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45219"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeysStoreSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-KEYSSTORE.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYSSTOREID"></a><h3>xmlSecMSCryptoKeysStoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeysStoreId xmlSecMSCryptoKeysStoreGetKlass()</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-keysstore.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeysStoreId"></a><h3>xmlSecMSCryptoKeysStoreId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeysStoreId xmlSecMSCryptoKeysStoreGetKlass()
+</pre>
<p>A MSCrypto keys store klass id.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-crypto.html"><b>&lt;&lt;&lt; crypto</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-x509.html"><b>x509 &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-mscrypto-ref.html b/docs/api/xmlsec-mscrypto-ref.html
index 1d71e0e3..0c8c6f4f 100644
--- a/docs/api/xmlsec-mscrypto-ref.html
+++ b/docs/api/xmlsec-mscrypto-ref.html
@@ -1,136 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library for MSCrypto API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="x509" href="xmlsec-nss-x509.html">
-<link rel="NEXT" title="app" href="xmlsec-mscrypto-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for Microsoft Crypto API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-nss-x509.html" title="x509">
+<link rel="next" href="xmlsec-mscrypto-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-MSCRYPTO-REF"></a>XML Security Library for MSCrypto API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-mscrypto-ref"></a>XML Security Library for Microsoft Crypto API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
<dt>
-<a href="xmlsec-mscrypto-app.html">app</a> -- Application functions implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-certkeys.html">certkeys</a> -- MS Crypto certificates helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-crypto.html">crypto</a> -- Crypto transforms implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-keysstore.html">keysstore</a> -- Keys store implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Crypto API.</span>
+</dt>
<dt>
-<a href="xmlsec-mscrypto-x509.html">x509</a> -- X509 certificates support implementation for MS Crypto.</dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Crypto API.</span>
+</dt>
</dl></div>
-<p>This section contains the API reference for xmlsec-mscrypto. All
- the public interfaces are documented here. This reference guide is
- build by extracting comments from the code sources. </p>
+<p>This section contains the API reference for xmlsec-mscrypto (based on
+ Microsoft Crypto API). All the public interfaces are documented here.
+ This reference guide is build by extracting comments from the code sources.
+ </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-x509.html"><b>&lt;&lt;&lt; x509</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-mscrypto-x509.html b/docs/api/xmlsec-mscrypto-x509.html
index 5a71893c..ae3a7e74 100644
--- a/docs/api/xmlsec-mscrypto-x509.html
+++ b/docs/api/xmlsec-mscrypto-x509.html
@@ -1,778 +1,702 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>x509</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<link rel="PREVIOUS" title="keysstore" href="xmlsec-mscrypto-keysstore.html">
-<link rel="NEXT" title="XML Security Library Reference Index" href="xmlsec-index.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<link rel="prev" href="xmlsec-mscrypto-keysstore.html" title="keysstore">
+<link rel="next" href="xmlsec-msccng-ref.html" title="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-mscrypto-keysstore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-mscrypto-x509.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
-<td><a accesskey="n" href="xmlsec-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-mscrypto-keysstore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="xmlsec-msccng-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-MSCRYPTO-X509"></a>x509</h1>
-<div class="REFNAMEDIV">
-<a name="AEN45235"></a><h2>Name</h2>x509 -- X509 certificates support implementation for MS Crypto.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-X509.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45240"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-mscrypto-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-mscrypto-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — X509 certificates implementation for Microsoft Crypto API.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETKLASS">xmlSecMSCryptoKeyDataX509GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKlass" title="xmlSecMSCryptoKeyDataX509GetKlass ()">xmlSecMSCryptoKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETKEYCERT">xmlSecMSCryptoKeyDataX509GetKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKeyCert" title="xmlSecMSCryptoKeyDataX509GetKeyCert ()">xmlSecMSCryptoKeyDataX509GetKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTKEYCERT">xmlSecMSCryptoKeyDataX509AdoptKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptKeyCert" title="xmlSecMSCryptoKeyDataX509AdoptKeyCert ()">xmlSecMSCryptoKeyDataX509AdoptKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTCERT">xmlSecMSCryptoKeyDataX509AdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCert" title="xmlSecMSCryptoKeyDataX509AdoptCert ()">xmlSecMSCryptoKeyDataX509AdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCERT">xmlSecMSCryptoKeyDataX509GetCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCert" title="xmlSecMSCryptoKeyDataX509GetCert ()">xmlSecMSCryptoKeyDataX509GetCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCERTSSIZE">xmlSecMSCryptoKeyDataX509GetCertsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCertsSize" title="xmlSecMSCryptoKeyDataX509GetCertsSize ()">xmlSecMSCryptoKeyDataX509GetCertsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ADOPTCRL">xmlSecMSCryptoKeyDataX509AdoptCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCrl" title="xmlSecMSCryptoKeyDataX509AdoptCrl ()">xmlSecMSCryptoKeyDataX509AdoptCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">PCCRL_CONTEXT</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCRL">xmlSecMSCryptoKeyDataX509GetCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PCCRL_CONTEXT</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrl" title="xmlSecMSCryptoKeyDataX509GetCrl ()">xmlSecMSCryptoKeyDataX509GetCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509GETCRLSSIZE">xmlSecMSCryptoKeyDataX509GetCrlsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrlsSize" title="xmlSecMSCryptoKeyDataX509GetCrlsSize ()">xmlSecMSCryptoKeyDataX509GetCrlsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATARAWX509CERTGETKLASS">xmlSecMSCryptoKeyDataRawX509CertGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertGetKlass" title="xmlSecMSCryptoKeyDataRawX509CertGetKlass ()">xmlSecMSCryptoKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREGETKLASS">xmlSecMSCryptoX509StoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreGetKlass" title="xmlSecMSCryptoX509StoreGetKlass ()">xmlSecMSCryptoX509StoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTCERT">xmlSecMSCryptoX509StoreAdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptCert" title="xmlSecMSCryptoX509StoreAdoptCert ()">xmlSecMSCryptoX509StoreAdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTKEYSTORE">xmlSecMSCryptoX509StoreAdoptKeyStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptKeyStore" title="xmlSecMSCryptoX509StoreAdoptKeyStore ()">xmlSecMSCryptoX509StoreAdoptKeyStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTTRUSTEDSTORE">xmlSecMSCryptoX509StoreAdoptTrustedStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptTrustedStore" title="xmlSecMSCryptoX509StoreAdoptTrustedStore ()">xmlSecMSCryptoX509StoreAdoptTrustedStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTUNTRUSTEDSTORE">xmlSecMSCryptoX509StoreAdoptUntrustedStore</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptUntrustedStore" title="xmlSecMSCryptoX509StoreAdoptUntrustedStore ()">xmlSecMSCryptoX509StoreAdoptUntrustedStore</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREENABLESYSTEMTRUSTEDCERTS">xmlSecMSCryptoX509StoreEnableSystemTrustedCerts</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreEnableSystemTrustedCerts" title="xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()">xmlSecMSCryptoX509StoreEnableSystemTrustedCerts</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-X509.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45357"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATAX509ID">xmlSecMSCryptoKeyDataX509Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509Id" title="xmlSecMSCryptoKeyDataX509Id">xmlSecMSCryptoKeyDataX509Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOKEYDATARAWX509CERTID">xmlSecMSCryptoKeyDataRawX509CertId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertId" title="xmlSecMSCryptoKeyDataRawX509CertId">xmlSecMSCryptoKeyDataRawX509CertId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREID">xmlSecMSCryptoX509StoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreId" title="xmlSecMSCryptoX509StoreId">xmlSecMSCryptoX509StoreId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-X509.DESCRIPTION"></a><h2>Description</h2>
-<p>X509 certificates support implementation for MS Crypto.</p>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-X509.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETKLASS"></a><h3>xmlSecMSCryptoKeyDataX509GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecMSCryptoKeyDataX509GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The MSCrypto X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-X509Data</span></font>).</p>
-<div class="REFSECT3">
-<a name="AEN45389"></a><h4>Returns</h4>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetKlass"></a><h3>xmlSecMSCryptoKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecMSCryptoKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The MSCrypto X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-X509Data</span></font>).</p>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
<p> the X509 data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETKEYCERT"></a><h3>xmlSecMSCryptoKeyDataX509GetKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font>
-xmlSecMSCryptoKeyDataX509GetKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetKeyCert"></a><h3>xmlSecMSCryptoKeyDataX509GetKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCryptoKeyDataX509GetKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the certificate from which the key was extracted.</p>
-<div class="REFSECT3">
-<a name="AEN45403"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45405"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45414"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetKeyCert.returns"></a><h4>Returns</h4>
<p> the key's certificate or NULL if key data was not used for key
extraction or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509ADOPTKEYCERT"></a><h3>xmlSecMSCryptoKeyDataX509AdoptKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeyDataX509AdoptKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">PCCERT_CONTEXT</span></font> cert</code>);</pre>
-<p>Sets the key's certificate in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509AdoptKeyCert"></a><h3>xmlSecMSCryptoKeyDataX509AdoptKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeyDataX509AdoptKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>);</pre>
+<p>Sets the key's certificate in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN45432"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45434"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to MSCRYPTO X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to MSCRYPTO X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45449"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptKeyCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509ADOPTCERT"></a><h3>xmlSecMSCryptoKeyDataX509AdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeyDataX509AdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">PCCERT_CONTEXT</span></font> cert</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCert"></a><h3>xmlSecMSCryptoKeyDataX509AdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeyDataX509AdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>);</pre>
<p>Adds certificate to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN45466"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45468"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to MSCRYPTO X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to MSCRYPTO X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45483"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETCERT"></a><h3>xmlSecMSCryptoKeyDataX509GetCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PCCERT_CONTEXT</span></font>
-xmlSecMSCryptoKeyDataX509GetCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetCert"></a><h3>xmlSecMSCryptoKeyDataX509GetCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCERT_CONTEXT</span></font>
+xmlSecMSCryptoKeyDataX509GetCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a certificate from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN45500"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45502"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired certificate position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired certificate position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45517"></a><h4>Returns</h4>
-<p> the pointer to certificate or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCert.returns"></a><h4>Returns</h4>
+<p> the pointer to certificate or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of certificates in <code class="PARAMETER">data</code>
+number of certificates in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETCERTSSIZE"></a><h3>xmlSecMSCryptoKeyDataX509GetCertsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecMSCryptoKeyDataX509GetCertsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetCertsSize"></a><h3>xmlSecMSCryptoKeyDataX509GetCertsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecMSCryptoKeyDataX509GetCertsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of certificates in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN45534"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45536"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCertsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45545"></a><h4>Returns</h4>
-<p> te number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCertsSize.returns"></a><h4>Returns</h4>
+<p> te number of certificates in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509ADOPTCRL"></a><h3>xmlSecMSCryptoKeyDataX509AdoptCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoKeyDataX509AdoptCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">PCCRL_CONTEXT</span></font> crl</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCrl"></a><h3>xmlSecMSCryptoKeyDataX509AdoptCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoKeyDataX509AdoptCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCRL_CONTEXT</span></font> crl</code></em>);</pre>
<p>Adds CRL to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN45563"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45565"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>crl</p></td>
-<td><p>the pointer to MSCrypto X509 CRL.</p></td>
-<td> </td>
+<td class="parameter_name"><p>crl</p></td>
+<td class="parameter_description"><p>the pointer to MSCrypto X509 CRL.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45580"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509AdoptCrl.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETCRL"></a><h3>xmlSecMSCryptoKeyDataX509GetCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PCCRL_CONTEXT</span></font>
-xmlSecMSCryptoKeyDataX509GetCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetCrl"></a><h3>xmlSecMSCryptoKeyDataX509GetCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PCCRL_CONTEXT</span></font>
+xmlSecMSCryptoKeyDataX509GetCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a CRL from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN45597"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45599"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired CRL position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired CRL position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45614"></a><h4>Returns</h4>
-<p> the pointer to CRL or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCrl.returns"></a><h4>Returns</h4>
+<p> the pointer to CRL or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of CRLs in <code class="PARAMETER">data</code>
+number of CRLs in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509GETCRLSSIZE"></a><h3>xmlSecMSCryptoKeyDataX509GetCrlsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecMSCryptoKeyDataX509GetCrlsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509GetCrlsSize"></a><h3>xmlSecMSCryptoKeyDataX509GetCrlsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecMSCryptoKeyDataX509GetCrlsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN45631"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45633"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCrlsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45642"></a><h4>Returns</h4>
-<p> te number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataX509GetCrlsSize.returns"></a><h4>Returns</h4>
+<p> te number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATARAWX509CERTGETKLASS"></a><h3>xmlSecMSCryptoKeyDataRawX509CertGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataRawX509CertGetKlass"></a><h3>xmlSecMSCryptoKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecMSCryptoKeyDataRawX509CertGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The raw X509 certificates key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN45656"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
<p> raw X509 certificates key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREGETKLASS"></a><h3>xmlSecMSCryptoX509StoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font>
-xmlSecMSCryptoX509StoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreGetKlass"></a><h3>xmlSecMSCryptoX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecMSCryptoX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The MSCrypto X509 certificates key data store klass.</p>
-<div class="REFSECT3">
-<a name="AEN45669"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MSCrypto X509 certificates key data store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREADOPTCERT"></a><h3>xmlSecMSCryptoX509StoreAdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoX509StoreAdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">PCCERT_CONTEXT</span></font> cert</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreAdoptCert"></a><h3>xmlSecMSCryptoX509StoreAdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoX509StoreAdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">PCCERT_CONTEXT</span></font> cert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Adds trusted (root) or untrusted certificate to the store.</p>
-<div class="REFSECT3">
-<a name="AEN45689"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45691"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to PCCERT_CONTEXT X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to PCCERT_CONTEXT X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45712"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREADOPTKEYSTORE"></a><h3>xmlSecMSCryptoX509StoreAdoptKeyStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecMSCryptoX509StoreAdoptKeyStore (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> keyStore</code>);</pre>
-<p>Adds <code class="PARAMETER">keyStore</code>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreAdoptKeyStore"></a><h3>xmlSecMSCryptoX509StoreAdoptKeyStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecMSCryptoX509StoreAdoptKeyStore (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> keyStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>keyStore</code></em>
to the list of key stores.</p>
-<div class="REFSECT3">
-<a name="AEN45730"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45732"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptKeyStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyStore</p></td>
-<td><p>the pointer to keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyStore</p></td>
+<td class="parameter_description"><p>the pointer to keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45747"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptKeyStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREADOPTTRUSTEDSTORE"></a><h3>xmlSecMSCryptoX509StoreAdoptTrustedStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreAdoptTrustedStore"></a><h3>xmlSecMSCryptoX509StoreAdoptTrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoX509StoreAdoptTrustedStore
- (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> trustedStore</code>);</pre>
-<p>Adds <code class="PARAMETER">trustedStore</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> trustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
to the list of trusted certs stores.</p>
-<div class="REFSECT3">
-<a name="AEN45765"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45767"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptTrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>trustedStore</p></td>
-<td><p>the pointer to certs store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>trustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN45782"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptTrustedStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREADOPTUNTRUSTEDSTORE"></a><h3>xmlSecMSCryptoX509StoreAdoptUntrustedStore ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreAdoptUntrustedStore"></a><h3>xmlSecMSCryptoX509StoreAdoptUntrustedStore ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecMSCryptoX509StoreAdoptUntrustedStore
- (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">HCERTSTORE</span></font> untrustedStore</code>);</pre>
-<p>Adds <code class="PARAMETER">trustedStore</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">HCERTSTORE</span></font> untrustedStore</code></em>);</pre>
+<p>Adds <em class="parameter"><code>trustedStore</code></em>
to the list of un-trusted certs stores.</p>
-<div class="REFSECT3">
-<a name="AEN45800"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45802"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptUntrustedStore.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>untrustedStore</p></td>
-<td><p>the pointer to certs store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>untrustedStore</p></td>
+<td class="parameter_description"><p>the pointer to certs store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN45817"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreAdoptUntrustedStore.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREENABLESYSTEMTRUSTEDCERTS"></a><h3>xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreEnableSystemTrustedCerts"></a><h3>xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecMSCryptoX509StoreEnableSystemTrustedCerts
- (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> val</code>);</pre>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> val</code></em>);</pre>
<p>Enables/disables the system trusted certs.</p>
-<div class="REFSECT3">
-<a name="AEN45834"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN45836"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecMSCryptoX509StoreEnableSystemTrustedCerts.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>val</p></td>
-<td><p>the enable/disable flag</p></td>
-<td> </td>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p>the enable/disable flag</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-MSCRYPTO-X509.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATAX509ID"></a><h3>xmlSecMSCryptoKeyDataX509Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataX509Id</pre>
+<div class="refsect1">
+<a name="xmlsec-mscrypto-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataX509Id"></a><h3>xmlSecMSCryptoKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataX509Id</pre>
<p>The MSCrypto X509 data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOKEYDATARAWX509CERTID"></a><h3>xmlSecMSCryptoKeyDataRawX509CertId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoKeyDataRawX509CertId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoKeyDataRawX509CertId"></a><h3>xmlSecMSCryptoKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoKeyDataRawX509CertId</pre>
<p>The MSCrypto raw X509 certificate klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECMSCRYPTOX509STOREID"></a><h3>xmlSecMSCryptoX509StoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecMSCryptoX509StoreId</pre>
+<div class="refsect2">
+<a name="xmlSecMSCryptoX509StoreId"></a><h3>xmlSecMSCryptoX509StoreId</h3>
+<pre class="programlisting">#define xmlSecMSCryptoX509StoreId</pre>
<p>The MSCrypto X509 store klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-mscrypto-keysstore.html"><b>&lt;&lt;&lt; keysstore</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-index.html"><b>XML Security Library Reference Index &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nodeset.html b/docs/api/xmlsec-nodeset.html
index 62358985..1029ae1f 100644
--- a/docs/api/xmlsec-nodeset.html
+++ b/docs/api/xmlsec-nodeset.html
@@ -1,798 +1,713 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>nodeset</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="membuf" href="xmlsec-membuf.html">
-<link rel="NEXT" title="parser" href="xmlsec-parser.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>nodeset: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-membuf.html" title="membuf">
+<link rel="next" href="xmlsec-parser.html" title="parser">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nodeset.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-membuf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-membuf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-parser.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NODESET"></a>nodeset</h1>
-<div class="REFNAMEDIV">
-<a name="AEN16075"></a><h2>Name</h2>nodeset -- Nodeset object implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NODESET.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16080"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nodeset"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nodeset.top_of_page"></a>nodeset</span></h2>
+<p>nodeset — XML nodes set functions</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nodeset.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nodeset.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-nodeset.html#XMLSECNODESETWALKCALLBACK">*xmlSecNodeSetWalkCallback</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetWalkCallback" title="xmlSecNodeSetWalkCallback ()">*xmlSecNodeSetWalkCallback</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETCREATE">xmlSecNodeSetCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetCreate" title="xmlSecNodeSetCreate ()">xmlSecNodeSetCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETDESTROY">xmlSecNodeSetDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDestroy" title="xmlSecNodeSetDestroy ()">xmlSecNodeSetDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETDOCDESTROY">xmlSecNodeSetDocDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDocDestroy" title="xmlSecNodeSetDocDestroy ()">xmlSecNodeSetDocDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETCONTAINS">xmlSecNodeSetContains</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetContains" title="xmlSecNodeSetContains ()">xmlSecNodeSetContains</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETADD">xmlSecNodeSetAdd</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetAdd" title="xmlSecNodeSetAdd ()">xmlSecNodeSetAdd</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETADDLIST">xmlSecNodeSetAddList</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetAddList" title="xmlSecNodeSetAddList ()">xmlSecNodeSetAddList</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETGETCHILDREN">xmlSecNodeSetGetChildren</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetGetChildren" title="xmlSecNodeSetGetChildren ()">xmlSecNodeSetGetChildren</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETWALK">xmlSecNodeSetWalk</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetWalk" title="xmlSecNodeSetWalk ()">xmlSecNodeSetWalk</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETDUMPTEXTNODES">xmlSecNodeSetDumpTextNodes</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDumpTextNodes" title="xmlSecNodeSetDumpTextNodes ()">xmlSecNodeSetDumpTextNodes</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-nodeset.html#XMLSECNODESETDEBUGDUMP">xmlSecNodeSetDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDebugDump" title="xmlSecNodeSetDebugDump ()">xmlSecNodeSetDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NODESET.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16164"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-nodeset.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE">xmlSecNodeSetType</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetType" title="enum xmlSecNodeSetType">xmlSecNodeSetType</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESETOP">xmlSecNodeSetOp</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetOp" title="enum xmlSecNodeSetOp">xmlSecNodeSetOp</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-nodeset.html#XMLSECNODESET">xmlSecNodeSet</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet">xmlSecNodeSet</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-nodeset.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NODESET.DESCRIPTION"></a><h2>Description</h2>
-<p>Nodeset object implementation.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NODESET.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNODESETWALKCALLBACK"></a><h3>xmlSecNodeSetWalkCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecNodeSetWalkCallback<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *data</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-nodeset.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNodeSetWalkCallback"></a><h3>xmlSecNodeSetWalkCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecNodeSetWalkCallback<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *data</code></em>);</pre>
<p>The callback function called once per each node in the nodes set.</p>
-<div class="REFSECT3">
-<a name="AEN16206"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16208"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetWalkCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to <a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSet</span></a> structure.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to <a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSet</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer current XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer current XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to the <code class="PARAMETER">cur</code>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to the <em class="parameter"><code>cur</code></em>
parent node.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to application specific data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to application specific data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN16238"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetWalkCallback.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs
an walk procedure should be interrupted.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETCREATE"></a><h3>xmlSecNodeSetCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a>
-xmlSecNodeSetCreate (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodeSetPtr</span></font> nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE"><span class="TYPE">xmlSecNodeSetType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNodeSetCreate"></a><h3>xmlSecNodeSetCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+xmlSecNodeSetCreate (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodeSetPtr</span></font> nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetType" title="enum xmlSecNodeSetType"><span class="type">xmlSecNodeSetType</span></a> type</code></em>);</pre>
<p>Creates new nodes set. Caller is responsible for freeing returned object
-by calling <a href="xmlsec-nodeset.html#XMLSECNODESETDESTROY"><span class="TYPE">xmlSecNodeSetDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN16260"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16262"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+by calling <a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetDestroy" title="xmlSecNodeSetDestroy ()"><span class="type">xmlSecNodeSetDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecNodeSetCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to parent XML document.</p></td>
-<td> </td>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to parent XML document.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the list of nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the list of nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the nodes set type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the nodes set type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16283"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated node set or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETDESTROY"></a><h3>xmlSecNodeSetDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecNodeSetDestroy (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>);</pre>
-<p>Destroys the nodes set created with <a href="xmlsec-nodeset.html#XMLSECNODESETCREATE"><span class="TYPE">xmlSecNodeSetCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN16299"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16301"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecNodeSetDestroy"></a><h3>xmlSecNodeSetDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecNodeSetDestroy (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>);</pre>
+<p>Destroys the nodes set created with <a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetCreate" title="xmlSecNodeSetCreate ()"><span class="type">xmlSecNodeSetCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecNodeSetDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETDOCDESTROY"></a><h3>xmlSecNodeSetDocDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecNodeSetDocDestroy (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNodeSetDocDestroy"></a><h3>xmlSecNodeSetDocDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecNodeSetDocDestroy (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>);</pre>
<p>Instructs node set to destroy nodes parent doc when node set is destroyed.</p>
-<div class="REFSECT3">
-<a name="AEN16321"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16323"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetDocDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETCONTAINS"></a><h3>xmlSecNodeSetContains ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNodeSetContains (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> parent</code>);</pre>
-<p>Checks whether the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetContains"></a><h3>xmlSecNodeSetContains ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNodeSetContains (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> parent</code></em>);</pre>
+<p>Checks whether the <em class="parameter"><code>node</code></em>
is in the nodes set or not.</p>
-<div class="REFSECT3">
-<a name="AEN16350"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16352"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetContains.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to XML node to check.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to XML node to check.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to <code class="PARAMETER">node</code>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to <em class="parameter"><code>node</code></em>
parent node.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16374"></a><h4>Returns</h4>
-<p> 1 if the <code class="PARAMETER">node</code>
-is in the nodes set <code class="PARAMETER">nset</code>
+<div class="refsect3">
+<a name="xmlSecNodeSetContains.returns"></a><h4>Returns</h4>
+<p> 1 if the <em class="parameter"><code>node</code></em>
+is in the nodes set <em class="parameter"><code>nset</code></em>
, 0 if it is not
and a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETADD"></a><h3>xmlSecNodeSetAdd ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a>
-xmlSecNodeSetAdd (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> newNSet</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESETOP"><span class="TYPE">xmlSecNodeSetOp</span></a> op</code>);</pre>
-<p>Adds <code class="PARAMETER">newNSet</code>
- to the <code class="PARAMETER">nset</code>
- using operation <code class="PARAMETER">op</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetAdd"></a><h3>xmlSecNodeSetAdd ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+xmlSecNodeSetAdd (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> newNSet</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetOp" title="enum xmlSecNodeSetOp"><span class="type">xmlSecNodeSetOp</span></a> op</code></em>);</pre>
+<p>Adds <em class="parameter"><code>newNSet</code></em>
+ to the <em class="parameter"><code>nset</code></em>
+ using operation <em class="parameter"><code>op</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN16399"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16401"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetAdd.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to currrent nodes set (or NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to current nodes set (or NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNSet</p></td>
-<td><p>the pointer to new nodes set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNSet</p></td>
+<td class="parameter_description"><p>the pointer to new nodes set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>op</p></td>
-<td><p>the operation type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>op</p></td>
+<td class="parameter_description"><p>the operation type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN16422"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetAdd.returns"></a><h4>Returns</h4>
<p> the pointer to combined nodes set or NULL if an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETADDLIST"></a><h3>xmlSecNodeSetAddList ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a>
-xmlSecNodeSetAddList (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> newNSet</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESETOP"><span class="TYPE">xmlSecNodeSetOp</span></a> op</code>);</pre>
-<p>Adds <code class="PARAMETER">newNSet</code>
- to the <code class="PARAMETER">nset</code>
- as child using operation <code class="PARAMETER">op</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetAddList"></a><h3>xmlSecNodeSetAddList ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+xmlSecNodeSetAddList (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> newNSet</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetOp" title="enum xmlSecNodeSetOp"><span class="type">xmlSecNodeSetOp</span></a> op</code></em>);</pre>
+<p>Adds <em class="parameter"><code>newNSet</code></em>
+ to the <em class="parameter"><code>nset</code></em>
+ as child using operation <em class="parameter"><code>op</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN16445"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16447"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetAddList.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to currrent nodes set (or NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to current nodes set (or NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNSet</p></td>
-<td><p>the pointer to new nodes set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNSet</p></td>
+<td class="parameter_description"><p>the pointer to new nodes set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>op</p></td>
-<td><p>the operation type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>op</p></td>
+<td class="parameter_description"><p>the operation type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16468"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetAddList.returns"></a><h4>Returns</h4>
<p> the pointer to combined nodes set or NULL if an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETGETCHILDREN"></a><h3>xmlSecNodeSetGetChildren ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="RETURNVALUE">xmlSecNodeSetPtr</span></a>
-xmlSecNodeSetGetChildren (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> withComments</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> invert</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNodeSetGetChildren"></a><h3>xmlSecNodeSetGetChildren ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="returnvalue">xmlSecNodeSetPtr</span></a>
+xmlSecNodeSetGetChildren (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> withComments</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> invert</code></em>);</pre>
<p>Creates a new nodes set that contains:</p>
-<p></p>
-<ul>
-<li><p>if <code class="PARAMETER">withComments</code>
- is not 0 and <code class="PARAMETER">invert</code>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>if <em class="parameter"><code>withComments</code></em>
+ is not 0 and <em class="parameter"><code>invert</code></em>
is 0:
-all nodes in the <code class="PARAMETER">parent</code>
+all nodes in the <em class="parameter"><code>parent</code></em>
subtree;</p></li>
-<li><p>if <code class="PARAMETER">withComments</code>
- is 0 and <code class="PARAMETER">invert</code>
+<li class="listitem"><p>if <em class="parameter"><code>withComments</code></em>
+ is 0 and <em class="parameter"><code>invert</code></em>
is 0:
-all nodes in the <code class="PARAMETER">parent</code>
+all nodes in the <em class="parameter"><code>parent</code></em>
subtree except comment nodes;</p></li>
-<li><p>if <code class="PARAMETER">withComments</code>
- is not 0 and <code class="PARAMETER">invert</code>
+<li class="listitem"><p>if <em class="parameter"><code>withComments</code></em>
+ is not 0 and <em class="parameter"><code>invert</code></em>
not is 0:
-all nodes in the <code class="PARAMETER">doc</code>
- except nodes in the <code class="PARAMETER">parent</code>
+all nodes in the <em class="parameter"><code>doc</code></em>
+ except nodes in the <em class="parameter"><code>parent</code></em>
subtree;</p></li>
-<li><p>if <code class="PARAMETER">withComments</code>
- is 0 and <code class="PARAMETER">invert</code>
+<li class="listitem"><p>if <em class="parameter"><code>withComments</code></em>
+ is 0 and <em class="parameter"><code>invert</code></em>
is 0:
-all nodes in the <code class="PARAMETER">doc</code>
- except nodes in the <code class="PARAMETER">parent</code>
+all nodes in the <em class="parameter"><code>doc</code></em>
+ except nodes in the <em class="parameter"><code>parent</code></em>
subtree
and comment nodes.</p></li>
-</ul>
-<div class="REFSECT3">
-<a name="AEN16514"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16516"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+</ul></div>
+<div class="refsect3">
+<a name="xmlSecNodeSetGetChildren.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to an XML document.</p></td>
-<td> </td>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to an XML document.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to parent XML node or NULL if we want to include all document nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to parent XML node or NULL if we want to include all document nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>withComments</p></td>
-<td><p>the flag include comments or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>withComments</p></td>
+<td class="parameter_description"><p>the flag include comments or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>invert</p></td>
-<td><p>the "invert" flag.</p></td>
-<td> </td>
+<td class="parameter_name"><p>invert</p></td>
+<td class="parameter_description"><p>the "invert" flag.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16543"></a><h4>Returns</h4>
-<p> pointer to the newly created <a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSet</span></a> structure
+<div class="refsect3">
+<a name="xmlSecNodeSetGetChildren.returns"></a><h4>Returns</h4>
+<p> pointer to the newly created <a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSet</span></a> structure
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETWALK"></a><h3>xmlSecNodeSetWalk ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNodeSetWalk (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESETWALKCALLBACK"><span class="TYPE">xmlSecNodeSetWalkCallback</span></a> walkFunc</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *data</code>);</pre>
-<p>Calls the function <code class="PARAMETER">walkFunc</code>
- once per each node in the nodes set <code class="PARAMETER">nset</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetWalk"></a><h3>xmlSecNodeSetWalk ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNodeSetWalk (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetWalkCallback" title="xmlSecNodeSetWalkCallback ()"><span class="type">xmlSecNodeSetWalkCallback</span></a> walkFunc</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *data</code></em>);</pre>
+<p>Calls the function <em class="parameter"><code>walkFunc</code></em>
+ once per each node in the nodes set <em class="parameter"><code>nset</code></em>
.
-If the <code class="PARAMETER">walkFunc</code>
+If the <em class="parameter"><code>walkFunc</code></em>
returns a negative value, then the walk procedure
is interrupted.</p>
-<div class="REFSECT3">
-<a name="AEN16568"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16570"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetWalk.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>walkFunc</p></td>
-<td><p>the callback functions.</p></td>
-<td> </td>
+<td class="parameter_name"><p>walkFunc</p></td>
+<td class="parameter_description"><p>the callback functions.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the application specific data passed to the <code class="PARAMETER">walkFunc</code>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the application specific data passed to the <em class="parameter"><code>walkFunc</code></em>
.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN16592"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetWalk.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETDUMPTEXTNODES"></a><h3>xmlSecNodeSetDumpTextNodes ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNodeSetDumpTextNodes (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlOutputBufferPtr</span></font> out</code>);</pre>
-<p>Dumps content of all the text nodes from <code class="PARAMETER">nset</code>
- to <code class="PARAMETER">out</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetDumpTextNodes"></a><h3>xmlSecNodeSetDumpTextNodes ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNodeSetDumpTextNodes (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlOutputBufferPtr</span></font> out</code></em>);</pre>
+<p>Dumps content of all the text nodes from <em class="parameter"><code>nset</code></em>
+ to <em class="parameter"><code>out</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN16611"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16613"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetDumpTextNodes.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>out</p></td>
-<td><p>the output buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>the output buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16628"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeSetDumpTextNodes.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETDEBUGDUMP"></a><h3>xmlSecNodeSetDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecNodeSetDebugDump (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nset</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints information about <code class="PARAMETER">nset</code>
- to the <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecNodeSetDebugDump"></a><h3>xmlSecNodeSetDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecNodeSetDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nset</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints information about <em class="parameter"><code>nset</code></em>
+ to the <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN16647"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16649"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>nset</p></td>
-<td><p>the pointer to node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nset</p></td>
+<td class="parameter_description"><p>the pointer to node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NODESET.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECNODESETTYPE"></a><h3>enum xmlSecNodeSetType</h3>
+<div class="refsect1">
+<a name="xmlsec-nodeset.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecNodeSetType"></a><h3>enum xmlSecNodeSetType</h3>
<p>The basic nodes sets types.</p>
-<div class="REFSECT3">
-<a name="AEN16671"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16673"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecNodeSetNormal</p></td>
-<td><p>nodes set = nodes in the list.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetNormal"></a>xmlSecNodeSetNormal</p></td>
+<td class="enum_member_description"><p>nodes set = nodes in the list.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetInvert</p></td>
-<td><p>nodes set = all document nodes minus nodes in the list.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetInvert"></a>xmlSecNodeSetInvert</p></td>
+<td class="enum_member_description"><p>nodes set = all document nodes minus nodes in the list.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetTree</p></td>
-<td><p>nodes set = nodes in the list and all their subtress.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetTree"></a>xmlSecNodeSetTree</p></td>
+<td class="enum_member_description"><p>nodes set = nodes in the list and all their subtress.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetTreeWithoutComments</p></td>
-<td><p>nodes set = nodes in the list and
+<td class="enum_member_name"><p><a name="xmlSecNodeSetTreeWithoutComments"></a>xmlSecNodeSetTreeWithoutComments</p></td>
+<td class="enum_member_description"><p>nodes set = nodes in the list and
all their subtress but no comment nodes.</p></td>
-<td> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetTreeInvert</p></td>
-<td><p>nodes set = all document nodes minus nodes in the
+<td class="enum_member_name"><p><a name="xmlSecNodeSetTreeInvert"></a>xmlSecNodeSetTreeInvert</p></td>
+<td class="enum_member_description"><p>nodes set = all document nodes minus nodes in the
list and all their subtress.</p></td>
-<td> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetTreeWithoutCommentsInvert</p></td>
-<td><p>nodes set = all document nodes
+<td class="enum_member_name"><p><a name="xmlSecNodeSetTreeWithoutCommentsInvert"></a>xmlSecNodeSetTreeWithoutCommentsInvert</p></td>
+<td class="enum_member_description"><p>nodes set = all document nodes
minus (nodes in the list and all their subtress
plus all comment nodes).</p></td>
-<td> </td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetList</p></td>
-<td><p>nodes set = all nodes in the chidren list of nodes sets.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetList"></a>xmlSecNodeSetList</p></td>
+<td class="enum_member_description"><p>nodes set = all nodes in the children list of nodes sets.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESETOP"></a><h3>enum xmlSecNodeSetOp</h3>
+<div class="refsect2">
+<a name="xmlSecNodeSetOp"></a><h3>enum xmlSecNodeSetOp</h3>
<p>The simple nodes sets operations.</p>
-<div class="REFSECT3">
-<a name="AEN16723"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16725"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSetOp.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecNodeSetIntersection</p></td>
-<td><p>intersection.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetIntersection"></a>xmlSecNodeSetIntersection</p></td>
+<td class="enum_member_description"><p>intersection.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetSubtraction</p></td>
-<td><p>subtraction.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetSubtraction"></a>xmlSecNodeSetSubtraction</p></td>
+<td class="enum_member_description"><p>subtraction.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecNodeSetUnion</p></td>
-<td><p>union.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecNodeSetUnion"></a>xmlSecNodeSetUnion</p></td>
+<td class="enum_member_description"><p>union.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODESET"></a><h3>struct xmlSecNodeSet</h3>
-<pre class="PROGRAMLISTING">struct xmlSecNodeSet {
+<div class="refsect2">
+<a name="xmlSecNodeSet"></a><h3>struct xmlSecNodeSet</h3>
+<pre class="programlisting">struct xmlSecNodeSet {
xmlNodeSetPtr nodes;
xmlDocPtr doc;
int destroyDoc;
@@ -801,71 +716,68 @@ xmlSecNodeSetDebugDump (<code class="PARAMETER"><a href="xmlsec-nodeset.html#XML
xmlSecNodeSetPtr next;
xmlSecNodeSetPtr prev;
xmlSecNodeSetPtr children;
-};</pre>
+};
+</pre>
<p>The enchanced nodes set.</p>
-<div class="REFSECT3">
-<a name="AEN16752"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16754"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeSet.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlNodeSetPtr</span></font> <code class="STRUCTFIELD">nodes</code>;</p></td>
-<td><p>the nodes list.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodeSetPtr</span></font> <em class="structfield"><code><a name="xmlSecNodeSet.nodes"></a>nodes</code></em>;</p></td>
+<td class="struct_member_description"><p>the nodes list.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlDocPtr</span></font> <code class="STRUCTFIELD">doc</code>;</p></td>
-<td><p>the parent XML document.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlDocPtr</span></font> <em class="structfield"><code><a name="xmlSecNodeSet.doc"></a>doc</code></em>;</p></td>
+<td class="struct_member_description"><p>the parent XML document.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">destroyDoc</code>;</p></td>
-<td><p>the flag: if set to 1 then <code class="PARAMETER">doc</code>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecNodeSet.destroyDoc"></a>destroyDoc</code></em>;</p></td>
+<td class="struct_member_description"><p>the flag: if set to 1 then <em class="parameter"><code>doc</code></em>
will
be destroyed when node set is destroyed.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE"><span class="TYPE">xmlSecNodeSetType</span></a> <code class="STRUCTFIELD">type</code>;</p></td>
-<td><p>the nodes set type.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetType" title="enum xmlSecNodeSetType"><span class="type">xmlSecNodeSetType</span></a> <em class="structfield"><code><a name="xmlSecNodeSet.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>the nodes set type.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESETOP"><span class="TYPE">xmlSecNodeSetOp</span></a> <code class="STRUCTFIELD">op</code>;</p></td>
-<td><p>the operation type.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetOp" title="enum xmlSecNodeSetOp"><span class="type">xmlSecNodeSetOp</span></a> <em class="structfield"><code><a name="xmlSecNodeSet.op"></a>op</code></em>;</p></td>
+<td class="struct_member_description"><p>the operation type.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> <code class="STRUCTFIELD">next</code>;</p></td>
-<td><p>the next nodes set.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> <em class="structfield"><code><a name="xmlSecNodeSet.next"></a>next</code></em>;</p></td>
+<td class="struct_member_description"><p>the next nodes set.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> <code class="STRUCTFIELD">prev</code>;</p></td>
-<td><p>the previous nodes set.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> <em class="structfield"><code><a name="xmlSecNodeSet.prev"></a>prev</code></em>;</p></td>
+<td class="struct_member_description"><p>the previous nodes set.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> <code class="STRUCTFIELD">children</code>;</p></td>
-<td><p>the children list (valid only if type
-equal to <a href="xmlsec-nodeset.html#XMLSECNODESETLIST"><span class="TYPE">xmlSecNodeSetList</span></a>).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> <em class="structfield"><code><a name="xmlSecNodeSet.children"></a>children</code></em>;</p></td>
+<td class="struct_member_description"><p>the children list (valid only if type
+equal to <a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetList"><span class="type">xmlSecNodeSetList</span></a>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-membuf.html"><b>&lt;&lt;&lt; membuf</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-parser.html"><b>parser &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-compiling-others.html b/docs/api/xmlsec-notes-compiling-others.html
index f97242dc..b7dcc096 100644
--- a/docs/api/xmlsec-notes-compiling-others.html
+++ b/docs/api/xmlsec-notes-compiling-others.html
@@ -1,114 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Compiling and linking on other systems.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<link rel="PREVIOUS" title="Compiling and linking on Windows." href="xmlsec-notes-compiling-windows.html">
-<link rel="NEXT" title="Initialization and shutdown." href="xmlsec-notes-init-shutdown.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Compiling and linking on other systems.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<link rel="prev" href="xmlsec-notes-compiling-windows.html" title="Compiling and linking on Windows.">
+<link rel="next" href="xmlsec-notes-init-shutdown.html" title="Initialization and shutdown.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-compiling-windows.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-compiling-windows.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-init-shutdown.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-COMPILING-OTHERS">Compiling and linking on other systems.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-compiling-others"></a>Compiling and linking on other systems.</h2></div></div></div>
<p>Well, nothing is impossible, it's only software (you managed to
compile the library itself, do you?).
I'll be happy to include in this manual your expirience with
@@ -116,10 +29,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
on other platforms (if you would like to share it).
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-compiling-windows.html"><b>&lt;&lt;&lt; Compiling and linking on Windows.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-init-shutdown.html"><b>Initialization and shutdown. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-compiling-unix.html b/docs/api/xmlsec-notes-compiling-unix.html
index bd7d6bec..68688c03 100644
--- a/docs/api/xmlsec-notes-compiling-unix.html
+++ b/docs/api/xmlsec-notes-compiling-unix.html
@@ -1,159 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Compiling and linking on Unix.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<link rel="PREVIOUS" title="Include files." href="xmlsec-notes-include-files.html">
-<link rel="NEXT" title="Compiling and linking on Windows." href="xmlsec-notes-compiling-windows.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Compiling and linking on Unix.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<link rel="prev" href="xmlsec-notes-include-files.html" title="Include files.">
+<link rel="next" href="xmlsec-notes-compiling-windows.html" title="Compiling and linking on Windows.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-include-files.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-include-files.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-compiling-windows.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-COMPILING-UNIX">Compiling and linking on Unix.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-compiling-unix"></a>Compiling and linking on Unix.</h2></div></div></div>
<p>There are several ways to get necessary compilation
and linking information on Unix and application can use
any of these methods to do crypto engine selection either
at linking or run time.
</p>
-<p></p>
-<ul>
-<li>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
<p>PKG_CHECK_MODULES() macro
</p>
-<div class="EXAMPLE">
-<a name="AEN70"></a><p><b>Example 2. Using PKG_CHECK_MODULES() macro in a configure.in file
+<div class="example">
+<a name="id-1.2.4.4.2.1.1.1.1"></a><p class="title"><b>Example 2. Using PKG_CHECK_MODULES() macro in a configure.in file
to select crypto engine (openssl) at linking time.</b></p>
-<pre class="PROGRAMLISTING">dnl
+<div class="example-contents"><pre class="programlisting">
+dnl
dnl Check for xmlsec and friends
dnl
PKG_CHECK_MODULES(XMLSEC, xmlsec1-openssl &gt;= 1.0.0 xml2 libxslt,,exit)
CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
LDFLAGS="$LDFLAGS $XMLSEC_LIBS"
- </pre>
+ </pre></div>
</div>
+<p><br class="example-break">
- <div class="EXAMPLE">
-<a name="AEN73"></a><p><b>Example 3. Using PKG_CHECK_MODULES() macro in a configure.in file
+ </p>
+<div class="example">
+<a name="id-1.2.4.4.2.1.1.1.2"></a><p class="title"><b>Example 3. Using PKG_CHECK_MODULES() macro in a configure.in file
to enable dynamical loading of xmlsec-crypto library.</b></p>
-<pre class="PROGRAMLISTING">dnl
+<div class="example-contents"><pre class="programlisting">
+dnl
dnl Check for xmlsec and friends
dnl
PKG_CHECK_MODULES(XMLSEC, xmlsec1 &gt;= 1.0.0 xml2 libxslt,,exit)
CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
LDFLAGS="$LDFLAGS $XMLSEC_LIBS"
- </pre>
+ </pre></div>
</div>
+<p><br class="example-break">
- </li>
-<li>
+ </p>
+</li>
+<li class="listitem">
<p>pkg-config script
</p>
-<div class="EXAMPLE">
-<a name="AEN78"></a><p><b>Example 4. Using pkg-config script in a Makefile
+<div class="example">
+<a name="id-1.2.4.4.2.1.2.1.1"></a><p class="title"><b>Example 4. Using pkg-config script in a Makefile
to select crypto engine (nss) at linking time.</b></p>
-<pre class="PROGRAMLISTING">PROGRAM = test
+<div class="example-contents"><pre class="programlisting">
+PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell pkg-config --cflags xmlsec1-nss)
@@ -167,14 +86,17 @@ all: $(PROGRAM)
clean:
@rm -rf $(PROGRAM)
- </pre>
+ </pre></div>
</div>
+<p><br class="example-break">
- <div class="EXAMPLE">
-<a name="AEN81"></a><p><b>Example 5. Using pkg-config script in a Makefile
+ </p>
+<div class="example">
+<a name="id-1.2.4.4.2.1.2.1.2"></a><p class="title"><b>Example 5. Using pkg-config script in a Makefile
to enable dynamical loading of xmlsec-crypto library.</b></p>
-<pre class="PROGRAMLISTING">PROGRAM = test
+<div class="example-contents"><pre class="programlisting">
+PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell pkg-config --cflags xmlsec1)
@@ -188,17 +110,20 @@ all: $(PROGRAM)
clean:
@rm -rf $(PROGRAM)
- </pre>
+ </pre></div>
</div>
+<p><br class="example-break">
- </li>
-<li>
+ </p>
+</li>
+<li class="listitem">
<p>xmlsec1-config script
</p>
-<div class="EXAMPLE">
-<a name="AEN86"></a><p><b>Example 6. Using xmlsec1-config script in a Makefile
+<div class="example">
+<a name="id-1.2.4.4.2.1.3.1.1"></a><p class="title"><b>Example 6. Using xmlsec1-config script in a Makefile
to select crypto engine (e.g. gnutls) at linking time.</b></p>
-<pre class="PROGRAMLISTING">PROGRAM = test
+<div class="example-contents"><pre class="programlisting">
+PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell xmlsec1-config --crypto gnutls --cflags)
@@ -212,13 +137,16 @@ all: $(PROGRAM)
clean:
@rm -rf $(PROGRAM)
- </pre>
+ </pre></div>
</div>
+<p><br class="example-break">
- <div class="EXAMPLE">
-<a name="AEN89"></a><p><b>Example 7. Using xmlsec1-config script in a Makefile
+ </p>
+<div class="example">
+<a name="id-1.2.4.4.2.1.3.1.2"></a><p class="title"><b>Example 7. Using xmlsec1-config script in a Makefile
to enable dynamical loading of xmlsec-crypto library.</b></p>
-<pre class="PROGRAMLISTING">PROGRAM = test
+<div class="example-contents"><pre class="programlisting">
+PROGRAM = test
PROGRAM_FILES = test.c
CFLAGS += -g $(shell xmlsec1-config --cflags)
@@ -232,15 +160,16 @@ all: $(PROGRAM)
clean:
@rm -rf $(PROGRAM)
- </pre>
+ </pre></div>
</div>
- </li>
-</ul>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-include-files.html"><b>&lt;&lt;&lt; Include files.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-compiling-windows.html"><b>Compiling and linking on Windows. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-compiling-windows.html b/docs/api/xmlsec-notes-compiling-windows.html
index 2a3c46f9..575fbb36 100644
--- a/docs/api/xmlsec-notes-compiling-windows.html
+++ b/docs/api/xmlsec-notes-compiling-windows.html
@@ -1,161 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Compiling and linking on Windows.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<link rel="PREVIOUS" title="Compiling and linking on Unix." href="xmlsec-notes-compiling-unix.html">
-<link rel="NEXT" title="Compiling and linking on other systems." href="xmlsec-notes-compiling-others.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Compiling and linking on Windows.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<link rel="prev" href="xmlsec-notes-compiling-unix.html" title="Compiling and linking on Unix.">
+<link rel="next" href="xmlsec-notes-compiling-others.html" title="Compiling and linking on other systems.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-compiling-unix.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-compiling-unix.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-compiling-others.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-COMPILING-WINDOWS">Compiling and linking on Windows.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-compiling-windows"></a>Compiling and linking on Windows.</h2></div></div></div>
<p>On Windows there is no such simple and elegant solution.
- Please check <tt class="FILENAME">README</tt> file in <tt class="FILENAME">win32</tt>
+ Please check <code class="filename">README</code> file in <code class="filename">win32</code>
folder of the library package for latest instructions.
However, there are few general things, that you need to remember:
</p>
-<p></p>
-<ul>
-<li><p>
- <span class="emphasis"><i class="EMPHASIS">All libraries linked to your application must be compiled
- with the same Microsoft Runtime Libraries.</i></span>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <span class="emphasis"><em>All libraries linked to your application must be compiled
+ with the same Microsoft Runtime Libraries.</em></span>
</p></li>
-<li>
+<li class="listitem">
<p>
- <span class="emphasis"><i class="EMPHASIS">Static linking with XML Security Library requires
- additional global defines:</i></span>
+ <span class="emphasis"><em>Static linking with XML Security Library requires
+ additional global defines:</em></span>
</p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN104"></a><pre class="PROGRAMLISTING">#define LIBXML_STATIC
+<div class="informalexample"><pre class="programlisting">
+#define LIBXML_STATIC
#define LIBXSLT_STATIC
#define XMLSEC_STATIC
- </pre>
-<p></p>
-</div>
- </li>
-<li><p> If you do not want to dynamicaly load xmlsec-crypto library
+ </pre></div>
+<p>
+ </p>
+</li>
+<li class="listitem"><p>
+ If you do not want to dynamicaly load xmlsec-crypto library
and prefer to select crypto engine at linking then you should
link your application with xmlsec and at least one of
xmlsec-crypto libraries.
</p></li>
-<li>
-<p> In order to enable dynamic loading for xmlsec-crypto library
+<li class="listitem">
+<p>
+ In order to enable dynamic loading for xmlsec-crypto library
you should add additional global define:
</p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN110"></a><pre class="PROGRAMLISTING">#define XMLSEC_CRYPTO_DYNAMIC_LOADING
- </pre>
-<p></p>
-</div>
- </li>
-</ul>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-compiling-unix.html"><b>&lt;&lt;&lt; Compiling and linking on Unix.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-compiling-others.html"><b>Compiling and linking on other systems. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="informalexample"><pre class="programlisting">
+#define XMLSEC_CRYPTO_DYNAMIC_LOADING
+ </pre></div>
+<p>
+ </p>
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-compiling.html b/docs/api/xmlsec-notes-compiling.html
index 6f1ed9a2..5922a0c0 100644
--- a/docs/api/xmlsec-notes-compiling.html
+++ b/docs/api/xmlsec-notes-compiling.html
@@ -1,125 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Building the application with XML Security Library.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="XML Security Library Structure." href="xmlsec-notes-structure.html">
-<link rel="NEXT" title="Include files." href="xmlsec-notes-include-files.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Building the application with XML Security Library.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-structure.html" title="XML Security Library Structure.">
+<link rel="next" href="xmlsec-notes-include-files.html" title="Include files.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-structure.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-structure.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-include-files.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-COMPILING"></a>Building the application with XML Security Library.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-compiling.html#XMLSEC-NOTES-COMPILING-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-include-files.html">Include files.</a></dt>
-<dt><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></dt>
-<dt><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></dt>
-<dt><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-compiling"></a>Building the application with XML Security Library.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-compiling.html#xmlsec-notes-compiling-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-include-files.html">Include files.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-COMPILING-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-compiling-overview"></a>Overview.</h2></div></div></div>
<p>Compiling and linking application with XML Security
Library requires specifying correct compilation flags, library files
and paths to include and library files. As we discussed before,
@@ -131,10 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-structure.html"><b>&lt;&lt;&lt; XML Security Library Structure.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-include-files.html"><b>Include files. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-contexts.html b/docs/api/xmlsec-notes-contexts.html
index 6f20230f..c726ccd2 100644
--- a/docs/api/xmlsec-notes-contexts.html
+++ b/docs/api/xmlsec-notes-contexts.html
@@ -1,115 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Using context objects.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Transforms and transforms chain." href="xmlsec-notes-transforms.html">
-<link rel="NEXT" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Using context objects.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-transforms.html" title="Transforms and transforms chain.">
+<link rel="next" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-CONTEXTS"></a>Using context objects.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-contexts"></a>Using context objects.</h2></div></div></div>
<p>The great flexibility of XML Digital Signature and XML Encryption
specification is one of the most interesting and in the same time,
most dangerouse feature for an application developer.
@@ -119,25 +31,27 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
XML Digital Signature and XML Encryption restrict allowed
key data types, allowed transforms or possible input data.
For example, signature in a simple SAML Response should have only
- one <a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top">&lt;dsig:Reference/&gt;</a> element with an empty or NULL
+ one &lt;dsig:Reference/&gt; element with an empty or NULL
URI attribute and only one enveloped transform.
XML Security Library uses "context" objects to let application
enable or disable particular features, return the result
data and the information collected during the processing.
Also all the context objects defined in XML Security library have
- a special <code class="STRUCTFIELD">userData</code> member which could
+ a special <em class="structfield"><code>userData</code></em> member which could
be used by application to pass application specific data around.
XML Security Library never use this field.
The application creates a new
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- or <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a> object for each
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ or <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a> object for each
operation, sets necessary options and consumes result returned
in the context after signature, verification, encryption or decryption.
</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN643"></a><p><b>Example 1. SAML signature validation.</b></p>
-<pre class="PROGRAMLISTING">/**
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.13.3.1"></a><p class="title"><b>Example 24. SAML signature validation.</b></p>
+<div class="example-contents"><pre class="programlisting">
+/**
* verify_file:
* @mngr: the pointer to keys manager.
* @xml_file: the signed XML file name.
@@ -240,13 +154,12 @@ done:
return(res);
}
- </pre>
+ </pre></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-transforms.html"><b>&lt;&lt;&lt; Transforms and transforms chain.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto.html"><b>Adding support for new cryptographic library. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-custom-keys-store.html b/docs/api/xmlsec-notes-custom-keys-store.html
index c740e8cd..0909acf5 100644
--- a/docs/api/xmlsec-notes-custom-keys-store.html
+++ b/docs/api/xmlsec-notes-custom-keys-store.html
@@ -1,123 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Implementing a custom keys store.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<link rel="PREVIOUS" title="Using keys manager for verification/decryption." href="xmlsec-notes-keys-mngr-verify-decrypt.html">
-<link rel="NEXT" title="Using X509 Certificates." href="xmlsec-notes-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Implementing a custom keys store.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<link rel="prev" href="xmlsec-notes-keys-mngr-verify-decrypt.html" title="Using keys manager for verification/decryption.">
+<link rel="next" href="xmlsec-notes-x509.html" title="Using X509 Certificates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-CUSTOM-KEYS-STORE">Implementing a custom keys store.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-custom-keys-store"></a>Implementing a custom keys store.</h2></div></div></div>
<p>In many cases, a default built-in list based keys store
is not good enough. For example, XML Security Library (and
the built-in default keys store) have no synchronization and
you'll need to implement a custom keys store if you want to
add or remove keys while other threads use the store.</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN512"></a><p><b>Example 4. Creating a custom keys manager.</b></p>
-<pre class="PROGRAMLISTING">/**
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.10.6.3.1"></a><p class="title"><b>Example 19. Creating a custom keys manager.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* create_files_keys_mngr:
*
* Creates a files based keys manager: we assume that key name is
@@ -168,7 +84,7 @@ create_files_keys_mngr(void) {
/****************************************************************************
*
* Files Keys Store: we assume that key's name (content of the
- * &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&amp;lt;dsig:KeyName/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; element is a name of the file with a key.
+ * &lt;dsig:KeyName/&gt; element is a name of the file with a key.
* Attention: this probably not a good solution for high traffic systems.
*
***************************************************************************/
@@ -205,7 +121,7 @@ files_keys_store_get_klass(void) {
* files_keys_store_find_key:
* @store: the pointer to default keys store.
* @name: the desired key name.
- * @keyInfoCtx: the pointer to &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node processing context.
+ * @keyInfoCtx: the pointer to &lt;dsig:KeyInfo/&gt; node processing context.
*
* Lookups key in the @store.
*
@@ -261,13 +177,13 @@ files_keys_store_find_key(xmlSecKeyStorePtr store, const xmlChar* name, xmlSecKe
return(key);
}
</pre>
-<p><a href="xmlsec-custom-keys-manager.html#XMLSEC-EXAMPLE-DECRYPT3">Full program listing</a></p>
+<p><a class="link" href="xmlsec-custom-keys-manager.html#xmlsec-example-decrypt3" title="decrypt3.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><b>&lt;&lt;&lt; Using keys manager for verification/decryption.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-x509.html"><b>Using X509 Certificates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-decrypt.html b/docs/api/xmlsec-notes-decrypt.html
index 71699500..a31f2ab4 100644
--- a/docs/api/xmlsec-notes-decrypt.html
+++ b/docs/api/xmlsec-notes-decrypt.html
@@ -1,142 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Decrypting an encrypted document</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Verifing and decrypting documents." href="xmlsec-notes-verify-decrypt.html">
-<link rel="PREVIOUS" title="Verifying a signed document" href="xmlsec-notes-verify.html">
-<link rel="NEXT" title="Keys." href="xmlsec-notes-keys.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Decrypting an encrypted document: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-verify-decrypt.html" title="Verifing and decrypting documents.">
+<link rel="prev" href="xmlsec-notes-verify.html" title="Verifying a signed document">
+<link rel="next" href="xmlsec-notes-keys.html" title="Keys.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-verify.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-verify.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-keys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-DECRYPT">Decrypting an encrypted document</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-decrypt"></a>Decrypting an encrypted document</h2></div></div></div>
<p>The typical decryption process includes following steps:
</p>
-<p></p>
-<ul>
-<li><p> Load keys, X509 certificates, etc. in the <a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">keys manager</a> .
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Load keys, X509 certificates, etc. in the <a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">keys manager</a> .
</p></li>
-<li><p> Create encryption context <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a>
- using <a href="xmlsec-xmlenc.html#XMLSECENCCTXCREATE">xmlSecEncCtxCreate</a> or
- <a href="xmlsec-xmlenc.html#XMLSECENCCTXINITIALIZE">xmlSecEncCtxInitialize</a>
+<li class="listitem"><p>
+ Create encryption context <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a>
+ using <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCreate" title="xmlSecEncCtxCreate ()">xmlSecEncCtxCreate</a> or
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxInitialize" title="xmlSecEncCtxInitialize ()">xmlSecEncCtxInitialize</a>
functions.
</p></li>
-<li><p> Select start decryption &lt;enc:EncryptedData&gt; node.
+<li class="listitem"><p>
+ Select start decryption &lt;enc:EncryptedData&gt; node.
</p></li>
-<li><p> Decrypt by calling <a href="xmlsec-xmlenc.html#XMLSECENCCTXDECRYPT">xmlSecencCtxDecrypt</a>
+<li class="listitem"><p>
+ Decrypt by calling <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDecrypt" title="xmlSecEncCtxDecrypt ()">xmlSecencCtxDecrypt</a>
function.
</p></li>
-<li><p> Check returned value and if necessary consume encrypted data.
+<li class="listitem"><p>
+ Check returned value and if necessary consume encrypted data.
</p></li>
-<li><p> Destroy encryption context <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a>
- using <a href="xmlsec-xmlenc.html#XMLSECENCCTXDESTROY">xmlSecEncCtxDestroy</a> or
- <a href="xmlsec-xmlenc.html#XMLSECENCCTXFINALIZE">xmlSecEncCtxFinalize</a>
+<li class="listitem"><p>
+ Destroy encryption context <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a>
+ using <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDestroy" title="xmlSecEncCtxDestroy ()">xmlSecEncCtxDestroy</a> or
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxFinalize" title="xmlSecEncCtxFinalize ()">xmlSecEncCtxFinalize</a>
functions.
</p></li>
-</ul>
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN396"></a><p><b>Example 2. Decrypting a document.</b></p>
-<pre class="PROGRAMLISTING">int
+</ul></div>
+<p>
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.8.4.3.1"></a><p class="title"><b>Example 15. Decrypting a document.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+int
decrypt_file(const char* enc_file, const char* key_file) {
xmlDocPtr doc = NULL;
xmlNodePtr node = NULL;
@@ -216,13 +139,13 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-decrypt-with-signle-key.html#XMLSEC-EXAMPLE-DECRYPT1">Full Program Listing</a></p>
+<p><a class="link" href="xmlsec-decrypt-with-signle-key.html#xmlsec-example-decrypt1" title="decrypt1.c">Full Program Listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-verify.html"><b>&lt;&lt;&lt; Verifying a signed document</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-keys.html"><b>Keys. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-dynamic-encryption-templates.html b/docs/api/xmlsec-notes-dynamic-encryption-templates.html
index d451f425..f8d22f24 100644
--- a/docs/api/xmlsec-notes-dynamic-encryption-templates.html
+++ b/docs/api/xmlsec-notes-dynamic-encryption-templates.html
@@ -1,126 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Creating dynamic encryption templates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Creating dynamic templates." href="xmlsec-notes-templates.html">
-<link rel="PREVIOUS" title="Creating dynamic signature templates." href="xmlsec-notes-dynamic-signature-templates.html">
-<link rel="NEXT" title="Verifing and decrypting documents." href="xmlsec-notes-verify-decrypt.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating dynamic encryption templates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-templates.html" title="Creating dynamic templates.">
+<link rel="prev" href="xmlsec-notes-dynamic-signature-templates.html" title="Creating dynamic signature templates.">
+<link rel="next" href="xmlsec-notes-verify-decrypt.html" title="Verifing and decrypting documents.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-dynamic-signature-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-dynamic-signature-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-verify-decrypt.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-DYNAMIC-ENCRYPTION-TEMPLATES">Creating dynamic encryption templates.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-dynamic-encryption-templates"></a>Creating dynamic encryption templates.</h2></div></div></div>
<p>The encryption template has structure similar
to the XML Encryption structure as it is described in
- <a href="http://www.w3.org/TR/xmlenc-core" target="_top">specification</a>.
+ <a class="ulink" href="" target="_top">specification</a>.
The only difference is that some nodes (for example,
- <a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue" target="_top">&lt;enc:CipherValue/&gt;</a>)
+ &lt;enc:CipherValue/&gt;)
are empty. The XML Security Library sets the content of these
nodes after doing necessary calculations.
</p>
-<div class="FIGURE">
-<a name="AEN305"></a><p><b>Figure 2. XML Encryption structure</b></p>
-<pre class="PROGRAMLISTING">&lt;enc:EncryptedData Id? Type? MimeType? Encoding?&gt;
- <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionMethod%20Algorithm%20" target="_top">&lt;enc:EncryptionMethod Algorithm /&gt;</a>?
+<div class="figure">
+<a name="id-1.2.7.4.3"></a><p class="title"><b>Figure 4. XML Encryption structure</b></p>
+<div class="figure-contents"><pre class="programlisting">
+&lt;enc:EncryptedData Id? Type? MimeType? Encoding?&gt;
+ &lt;enc:EncryptionMethod Algorithm /&gt;?
(&lt;dsig:KeyInfo&gt;
&lt;dsig:KeyName&gt;?
&lt;dsig:KeyValue&gt;?
@@ -139,12 +53,15 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
&lt;/enc:CipherData&gt;
&lt;enc:EncryptionProperties&gt;?
&lt;/enc:EncryptedData&gt;
- </pre>
+ </pre></div>
</div>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN316"></a><p><b>Example 2. Creating dynamic encrytion template.</b></p>
-<pre class="PROGRAMLISTING">/**
+<br class="figure-break"><p>
+ </p>
+<div class="example">
+<a name="id-1.2.7.4.4.1"></a><p class="title"><b>Example 13. Creating dynamic encrytion template.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* encrypt_file:
* @xml_file: the encryption template file name.
* @key_file: the Triple DES key file.
@@ -181,13 +98,13 @@ encrypt_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* we want to put encrypted data in the &lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&amp;lt;enc:CipherValue/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node */
+ /* we want to put encrypted data in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; and &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&amp;lt;dsig:KeyName/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; nodes to put key name in the signed document */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -251,13 +168,13 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-encrypt-dynamic-template.html#XMLSEC-EXAMPLE-ENCRYPT2">Full program listing</a></p>
+<p><a class="link" href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2" title="encrypt2.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-dynamic-signature-templates.html"><b>&lt;&lt;&lt; Creating dynamic signature templates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-verify-decrypt.html"><b>Verifing and decrypting documents. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-dynamic-signature-templates.html b/docs/api/xmlsec-notes-dynamic-signature-templates.html
index 3921f44f..066174a9 100644
--- a/docs/api/xmlsec-notes-dynamic-signature-templates.html
+++ b/docs/api/xmlsec-notes-dynamic-signature-templates.html
@@ -1,131 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Creating dynamic signature templates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Creating dynamic templates." href="xmlsec-notes-templates.html">
-<link rel="PREVIOUS" title="Creating dynamic templates." href="xmlsec-notes-templates.html">
-<link rel="NEXT" title="Creating dynamic encryption templates." href="xmlsec-notes-dynamic-encryption-templates.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating dynamic signature templates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-templates.html" title="Creating dynamic templates.">
+<link rel="prev" href="xmlsec-notes-templates.html" title="Creating dynamic templates.">
+<link rel="next" href="xmlsec-notes-dynamic-encryption-templates.html" title="Creating dynamic encryption templates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-dynamic-encryption-templates.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-DYNAMIC-SIGNATURE-TEMPLATES">Creating dynamic signature templates.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-dynamic-signature-templates"></a>Creating dynamic signature templates.</h2></div></div></div>
<p>The signature template has structure similar
to the XML Digital Signature structure as it is described in
- <a href="http://www.w3.org/TR/xmldsig-core" target="_top">specification</a>.
+ <a class="ulink" href="" target="_top">specification</a>.
The only difference is that some nodes (for example,
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top">&lt;dsig:DigestValue/&gt;</a> or &lt;SignatureValue/&gt;)
+ &lt;dsig:DigestValue/&gt; or &lt;SignatureValue/&gt;)
are empty. The XML Security Library sets the content of these
nodes after doing necessary calculations.
</p>
-<div class="FIGURE">
-<a name="AEN264"></a><p><b>Figure 1. XML Digital Signature structure</b></p>
-<pre class="PROGRAMLISTING">&lt;dsig:Signature ID?&gt;
+<div class="figure">
+<a name="id-1.2.7.3.3"></a><p class="title"><b>Figure 3. XML Digital Signature structure</b></p>
+<div class="figure-contents"><pre class="programlisting">
+&lt;dsig:Signature ID?&gt;
&lt;dsig:SignedInfo&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-CanonicalizationMethod%20Algorithm%20" target="_top">&lt;dsig:CanonicalizationMethod Algorithm /&gt;</a>
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureMethod%20Algorithm%20" target="_top">&lt;dsig:SignatureMethod Algorithm /&gt;</a>
+ &lt;dsig:CanonicalizationMethod Algorithm /&gt;
+ &lt;dsig:SignatureMethod Algorithm /&gt;
(&lt;dsig:Reference URI? &gt;
(&lt;dsig:Transforms&gt;
- (<a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Transform%20Algorithm%20" target="_top">&lt;dsig:Transform Algorithm /&gt;</a>)+
+ (&lt;dsig:Transform Algorithm /&gt;)+
&lt;/dsig:Transforms&gt;)?
&lt;dsig:DigestMethod Algorithm &gt;
&lt;dsig:DigestValue&gt;
@@ -146,12 +60,15 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
&lt;/dsig:KeyInfo&gt;)?
(&lt;dsig:Object ID?&gt;)*
&lt;/dsig:Signature&gt;
- </pre>
+ </pre></div>
</div>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN289"></a><p><b>Example 1. Creating dynamic signature template.</b></p>
-<pre class="PROGRAMLISTING">/**
+<br class="figure-break"><p>
+ </p>
+<div class="example">
+<a name="id-1.2.7.3.4.1"></a><p class="title"><b>Example 12. Creating dynamic signature template.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* sign_file:
* @xml_file: the XML file name.
* @key_file: the PEM private key file name.
@@ -188,7 +105,7 @@ sign_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&amp;lt;dsig:Signature/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node to the doc */
+ /* add &lt;dsig:Signature/&gt; node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
@@ -205,7 +122,7 @@ sign_file(const char* xml_file, const char* key_file) {
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; and &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&amp;lt;dsig:KeyName/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; nodes to put key name in the signed document */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to put key name in the signed document */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -261,13 +178,13 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-examples-sign-dynamimc-template.html#XMLSEC-EXAMPLE-SIGN2">Full program listing</a></p>
+<p><a class="link" href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2" title="sign2.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-templates.html"><b>&lt;&lt;&lt; Creating dynamic templates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-dynamic-encryption-templates.html"><b>Creating dynamic encryption templates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-encrypt.html b/docs/api/xmlsec-notes-encrypt.html
index b8435988..b1f70698 100644
--- a/docs/api/xmlsec-notes-encrypt.html
+++ b/docs/api/xmlsec-notes-encrypt.html
@@ -1,158 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Encrypting data.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Signing and encrypting documents." href="xmlsec-notes-sign-encrypt.html">
-<link rel="PREVIOUS" title="Signing a document." href="xmlsec-notes-sign.html">
-<link rel="NEXT" title="Creating dynamic templates." href="xmlsec-notes-templates.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Encrypting data.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-sign-encrypt.html" title="Signing and encrypting documents.">
+<link rel="prev" href="xmlsec-notes-sign.html" title="Signing a document.">
+<link rel="next" href="xmlsec-notes-templates.html" title="Creating dynamic templates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-sign.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-sign.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-templates.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-ENCRYPT">Encrypting data.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-encrypt"></a>Encrypting data.</h2></div></div></div>
<p>The typical encryption process includes following steps:
</p>
-<p></p>
-<ul>
-<li><p> Prepare data for encryption.
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Prepare data for encryption.
</p></li>
-<li><p> Create or load encryption template and select start
- <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target="_top">&lt;enc:EncryptedData/&gt;</a> node.
+<li class="listitem"><p>
+ Create or load encryption template and select start
+ &lt;enc:EncryptedData/&gt; node.
</p></li>
-<li><p> Create encryption context <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a>
- using <a href="xmlsec-xmlenc.html#XMLSECENCCTXCREATE">xmlSecEncCtxCreate</a> or
- <a href="xmlsec-xmlenc.html#XMLSECENCCTXINITIALIZE">xmlSecEncCtxInitialize</a>
+<li class="listitem"><p>
+ Create encryption context <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a>
+ using <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCreate" title="xmlSecEncCtxCreate ()">xmlSecEncCtxCreate</a> or
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxInitialize" title="xmlSecEncCtxInitialize ()">xmlSecEncCtxInitialize</a>
functions.
</p></li>
-<li><p> Load encryption key in <a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">keys manager</a>
+<li class="listitem"><p>
+ Load encryption key in <a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">keys manager</a>
or generate a session key and set it in the encryption context
- (<code class="STRUCTFIELD">encKey</code> member of
- <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a> structure).
+ (<em class="structfield"><code>encKey</code></em> member of
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a> structure).
</p></li>
-<li>
-<p> Encrypt data by calling one of the following functions:
+<li class="listitem">
+<p>
+ Encrypt data by calling one of the following functions:
</p>
-<p></p>
-<ul>
-<li><p> <a href="xmlsec-xmlenc.html#XMLSECENCCTXBINARYENCRYPT">xmlSecEncCtxBinaryEncrypt</a>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxBinaryEncrypt" title="xmlSecEncCtxBinaryEncrypt ()">xmlSecEncCtxBinaryEncrypt</a>
</p></li>
-<li><p> <a href="xmlsec-xmlenc.html#XMLSECENCCTXXMLENCRYPT">xmlSecEncCtxXmlEncrypt</a>
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxXmlEncrypt" title="xmlSecEncCtxXmlEncrypt ()">xmlSecEncCtxXmlEncrypt</a>
</p></li>
-<li><p> <a href="xmlsec-xmlenc.html#XMLSECENCCTXURIENCRYPT">xmlSecEncCtxUriEncrypt</a>
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxUriEncrypt" title="xmlSecEncCtxUriEncrypt ()">xmlSecEncCtxUriEncrypt</a>
</p></li>
-</ul>
- </li>
-<li><p> Check returned value and if necessary consume encrypted data.
+</ul></div>
+<p>
+ </p>
+</li>
+<li class="listitem"><p>
+ Check returned value and if necessary consume encrypted data.
</p></li>
-<li><p> Destroy encryption context <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a>
- using <a href="xmlsec-xmlenc.html#XMLSECENCCTXDESTROY">xmlSecEncCtxDestroy</a> or
- <a href="xmlsec-xmlenc.html#XMLSECENCCTXFINALIZE">xmlSecEncCtxFinalize</a>
+<li class="listitem"><p>
+ Destroy encryption context <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a>
+ using <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDestroy" title="xmlSecEncCtxDestroy ()">xmlSecEncCtxDestroy</a> or
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxFinalize" title="xmlSecEncCtxFinalize ()">xmlSecEncCtxFinalize</a>
functions.
</p></li>
-</ul>
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN241"></a><p><b>Example 2. Encrypting binary data with a template.</b></p>
-<pre class="PROGRAMLISTING">/**
+</ul></div>
+<p>
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.6.4.3.1"></a><p class="title"><b>Example 11. Encrypting binary data with a template.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* encrypt_file:
* @tmpl_file: the encryption template file name.
* @key_file: the Triple DES key file.
@@ -233,14 +161,14 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-encrypt-template-file.html#XMLSEC-EXAMPLE-ENCRYPT1">Full program listing</a></p>
-<p><a href="xmlsec-encrypt-template-file.html#XMLSEC-EXAMPLE-ENCRYPT1-TMPL">Simple encryption template file</a></p>
+<p><a class="link" href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1" title="encrypt1.c">Full program listing</a></p>
+<p><a class="link" href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-tmpl" title="encrypt1-tmpl.xml">Simple encryption template file</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-sign.html"><b>&lt;&lt;&lt; Signing a document.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-templates.html"><b>Creating dynamic templates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-include-files.html b/docs/api/xmlsec-notes-include-files.html
index 09928b62..f04a5989 100644
--- a/docs/api/xmlsec-notes-include-files.html
+++ b/docs/api/xmlsec-notes-include-files.html
@@ -1,144 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Include files.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<link rel="PREVIOUS" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<link rel="NEXT" title="Compiling and linking on Unix." href="xmlsec-notes-compiling-unix.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Include files.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<link rel="prev" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<link rel="next" href="xmlsec-notes-compiling-unix.html" title="Compiling and linking on Unix.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-compiling.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-compiling.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-compiling-unix.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-INCLUDE-FILES">Include files.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-include-files"></a>Include files.</h2></div></div></div>
<p>In order to use XML Security Library an application should include
one or more of the following files:
</p>
-<p></p>
-<ul>
-<li><p><a href="xmlsec-xmlsec.html">xmlsec/xmlsec.h</a> -
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p><font>xmlsec/xmlsec.h</font> -
XML Security Library initialization and shutdown functions;
</p></li>
-<li><p><a href="xmlsec-xmldsig.html">xmlsec/xmldsig.h</a> -
+<li class="listitem"><p><font>xmlsec/xmldsig.h</font> -
XML Digital Signature functions;</p></li>
-<li><p><a href="xmlsec-xmlenc.html">xmlsec/xmlenc.h</a> -
+<li class="listitem"><p><font>xmlsec/xmlenc.h</font> -
XML Encryption functions;</p></li>
-<li><p><a href="xmlsec-xmltree.html">xmlsec/xmltree.h</a> -
+<li class="listitem"><p><font>xmlsec/xmltree.h</font> -
helper functions for XML documents manipulation;
</p></li>
-<li><p><a href="xmlsec-templates.html">xmlsec/templates.h</a> -
+<li class="listitem"><p><font>xmlsec/templates.h</font> -
helper functions for dynamic XML Digital Signature and
XML Encryption templates creation;
</p></li>
-<li><p><font>xmlsec/crypto.h</font> -
+<li class="listitem"><p><font>xmlsec/crypto.h</font> -
automatic XML Security Crypto Library selection.
</p></li>
-</ul>
- <p>If necessary, the application should also include LibXML,
+</ul></div>
+<p>
+ </p>
+<p>If necessary, the application should also include LibXML,
LibXSLT and crypto library header files.
</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN61"></a><p><b>Example 1. Example includes file section.</b></p>
-<pre class="PROGRAMLISTING">#include &lt;libxml/tree.h&gt;
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.4.3.4.1"></a><p class="title"><b>Example 1. Example includes file section.</b></p>
+<div class="example-contents"><pre class="programlisting">
+#include &lt;libxml/tree.h&gt;
#include &lt;libxml/xmlmemory.h&gt;
#include &lt;libxml/parser.h&gt;
@@ -152,13 +68,12 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
#include &lt;xmlsec/xmlenc.h&gt;
#include &lt;xmlsec/templates.h&gt;
#include &lt;xmlsec/crypto.h&gt;
- </pre>
+ </pre></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-compiling.html"><b>&lt;&lt;&lt; Building the application with XML Security Library.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-compiling-unix.html"><b>Compiling and linking on Unix. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-init-shutdown.html b/docs/api/xmlsec-notes-init-shutdown.html
index d1f1fbd3..22a66c22 100644
--- a/docs/api/xmlsec-notes-init-shutdown.html
+++ b/docs/api/xmlsec-notes-init-shutdown.html
@@ -1,146 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Initialization and shutdown.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Compiling and linking on other systems." href="xmlsec-notes-compiling-others.html">
-<link rel="NEXT" title="Signing and encrypting documents." href="xmlsec-notes-sign-encrypt.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Initialization and shutdown.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-compiling-others.html" title="Compiling and linking on other systems.">
+<link rel="next" href="xmlsec-notes-sign-encrypt.html" title="Signing and encrypting documents.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-compiling-others.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-compiling-others.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-sign-encrypt.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-INIT-SHUTDOWN"></a>Initialization and shutdown.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-init-shutdown"></a>Initialization and shutdown.</h2></div></div></div>
<p>XML Security Library initialization/shutdown
process includes initialization and shutdown of the
dependent libraries:
</p>
-<p></p>
-<ul>
-<li><p>libxml library;</p></li>
-<li><p>libxslt library;</p></li>
-<li><p>crypto library (OpenSSL, GnuTLS, GCrypt, NSS, ...);</p></li>
-<li><p>xmlsec library
- (<a href="xmlsec-xmlsec.html#XMLSECINIT">xmlSecInit</a>
- and <a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN">xmlSecShutdown</a>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>libxml library;</p></li>
+<li class="listitem"><p>libxslt library;</p></li>
+<li class="listitem"><p>crypto library (OpenSSL, GnuTLS, GCrypt, NSS, ...);</p></li>
+<li class="listitem"><p>xmlsec library
+ (<a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()">xmlSecInit</a>
+ and <a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()">xmlSecShutdown</a>
functions);
</p></li>
-<li><p>xmlsec-crypto library
- (<a href="xmlsec-dl.html#XMLSECCRYPTODLLOADLIBRARY">xmlSecCryptoDLLoadLibrary</a>
+<li class="listitem"><p>xmlsec-crypto library
+ (<a class="link" href="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary" title="xmlSecCryptoDLLoadLibrary ()">xmlSecCryptoDLLoadLibrary</a>
to load xmlsec-crypto library dynamicaly if needed,
- <a href="xmlsec-app.html#XMLSECCRYPTOINIT">xmlSecCryptoInit</a>
- and <a href="xmlsec-app.html#XMLSECCRYPTOSHUTDOWN">xmlSecCryptoShutdown</a>
+ <a class="link" href="xmlsec-app.html#xmlSecCryptoInit" title="xmlSecCryptoInit ()">xmlSecCryptoInit</a>
+ and <a class="link" href="xmlsec-app.html#xmlSecCryptoShutdown" title="xmlSecCryptoShutdown ()">xmlSecCryptoShutdown</a>
functions);
</p></li>
-</ul>
+</ul></div>
+<p>
xmlsec-crypto library also provides a convinient functions
<font>xmlSecAppCryptoInit</font>
and <font>xmlSecAppCryptoShutdown</font>
to initialize the crypto library itself but application can do it
by itself.
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN137"></a><p><b>Example 1. Initializing application.</b></p>
-<pre class="PROGRAMLISTING"> /* Init libxml and libxslt libraries */
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.5.3.1"></a><p class="title"><b>Example 8. Initializing application.</b></p>
+<div class="example-contents"><pre class="programlisting">
+ /* Init libxml and libxslt libraries */
xmlInitParser();
LIBXML_TEST_VERSION
xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
@@ -167,7 +82,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
"(LD_LIBRARY_PATH) envornment variable.\n");
@@ -186,12 +101,16 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
fprintf(stderr, "Error: xmlsec-crypto initialization failed.\n");
return(-1);
}
- </pre>
+ </pre></div>
</div>
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN141"></a><p><b>Example 2. Shutting down application.</b></p>
-<pre class="PROGRAMLISTING"> /* Shutdown xmlsec-crypto library */
+<p><br class="example-break">
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.5.4.1"></a><p class="title"><b>Example 9. Shutting down application.</b></p>
+<div class="example-contents"><pre class="programlisting">
+ /* Shutdown xmlsec-crypto library */
xmlSecCryptoShutdown();
/* Shutdown crypto library */
@@ -205,13 +124,12 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
xsltCleanupGlobals();
#endif /* XMLSEC_NO_XSLT */
xmlCleanupParser();
- </pre>
+ </pre></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-compiling-others.html"><b>&lt;&lt;&lt; Compiling and linking on other systems.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-sign-encrypt.html"><b>Signing and encrypting documents. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-keys-manager-sign-enc.html b/docs/api/xmlsec-notes-keys-manager-sign-enc.html
index 1393487f..0061997e 100644
--- a/docs/api/xmlsec-notes-keys-manager-sign-enc.html
+++ b/docs/api/xmlsec-notes-keys-manager-sign-enc.html
@@ -1,133 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Using keys manager for signatures/encryption.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<link rel="PREVIOUS" title="Simple keys store." href="xmlsec-notes-simple-keys-store.html">
-<link rel="NEXT" title="Using keys manager for verification/decryption." href="xmlsec-notes-keys-mngr-verify-decrypt.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Using keys manager for signatures/encryption.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<link rel="prev" href="xmlsec-notes-simple-keys-store.html" title="Simple keys store.">
+<link rel="next" href="xmlsec-notes-keys-mngr-verify-decrypt.html" title="Using keys manager for verification/decryption.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-simple-keys-store.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-simple-keys-store.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-KEYS-MANAGER-SIGN-ENC">Using keys manager for signatures/encryption.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-keys-manager-sign-enc"></a>Using keys manager for signatures/encryption.</h2></div></div></div>
<p>Instead of specifiying signature or encryption key in the
- corresponding context object (<code class="STRUCTFIELD">signKey</code>
- member of <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- structure or <code class="STRUCTFIELD">encKey</code> member of
- <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a> structure),
+ corresponding context object (<em class="structfield"><code>signKey</code></em>
+ member of <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ structure or <em class="structfield"><code>encKey</code></em> member of
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a> structure),
the application can use keys manager to select the
signature or encryption key. This is especialy useful
when you are encrypting or signing something with a session key
which is by itself should be encrypted. The key for the
session key encryption in the
- <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top">&lt;EncryptedKey/&gt;</a>
+ <a class="ulink" href="" target="_top">&lt;EncryptedKey/&gt;</a>
node could be selected using
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a>
+ <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a>
node in the template.
</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN483"></a><p><b>Example 2. Encrypting file using a session key and a permanent key from keys manager.</b></p>
-<pre class="PROGRAMLISTING">/**
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.10.4.3.1"></a><p class="title"><b>Example 17. Encrypting file using a session key and a permanent key from keys manager.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* load_rsa_keys:
* @key_file: the key filename.
*
@@ -230,20 +146,20 @@ encrypt_file(xmlSecKeysMngrPtr mngr, const char* xml_file, const char* key_name)
goto done;
}
- /* we want to put encrypted data in the &lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&amp;lt;enc:CipherValue/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node */
+ /* we want to put encrypted data in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encDataNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; */
+ /* add &lt;dsig:KeyInfo/&gt; */
keyInfoNode = xmlSecTmplEncDataEnsureKeyInfo(encDataNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&amp;lt;enc:EncryptedKey/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; to store the encrypted session key */
+ /* add &lt;enc:EncryptedKey/&gt; to store the encrypted session key */
encKeyNode = xmlSecTmplKeyInfoAddEncryptedKey(keyInfoNode,
xmlSecTransformRsaOaepId,
NULL, NULL, NULL);
@@ -252,13 +168,13 @@ encrypt_file(xmlSecKeysMngrPtr mngr, const char* xml_file, const char* key_name)
goto done;
}
- /* we want to put encrypted key in the &lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-CipherValue"&gt;&amp;lt;enc:CipherValue/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node */
+ /* we want to put encrypted key in the &lt;enc:CipherValue/&gt; node */
if(xmlSecTmplEncDataEnsureCipherValue(encKeyNode) == NULL) {
fprintf(stderr, "Error: failed to add CipherValue node\n");
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; and &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyName"&gt;&amp;lt;dsig:KeyName/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; nodes to &lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&lt;ulink URL="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey"&gt;&amp;lt;enc:EncryptedKey/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:KeyName/&gt; nodes to &lt;enc:EncryptedKey/&gt; */
keyInfoNode2 = xmlSecTmplEncDataEnsureKeyInfo(encKeyNode, NULL);
if(keyInfoNode2 == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -318,13 +234,13 @@ done:
}
</pre>
-<p><a href="xmlsec-encrypt-with-session-key.html#XMLSEC-EXAMPLE-ENCRYPT3">Full program listing</a></p>
+<p><a class="link" href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3" title="encrypt3.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-simple-keys-store.html"><b>&lt;&lt;&lt; Simple keys store.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><b>Using keys manager for verification/decryption. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html b/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
index 22f56cbd..9dce79a4 100644
--- a/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
+++ b/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
@@ -1,127 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Using keys manager for verification/decryption.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<link rel="PREVIOUS" title="Using keys manager for signatures/encryption." href="xmlsec-notes-keys-manager-sign-enc.html">
-<link rel="NEXT" title="Implementing a custom keys store." href="xmlsec-notes-custom-keys-store.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Using keys manager for verification/decryption.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<link rel="prev" href="xmlsec-notes-keys-manager-sign-enc.html" title="Using keys manager for signatures/encryption.">
+<link rel="next" href="xmlsec-notes-custom-keys-store.html" title="Implementing a custom keys store.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-custom-keys-store.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-KEYS-MNGR-VERIFY-DECRYPT">Using keys manager for verification/decryption.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-keys-mngr-verify-decrypt"></a>Using keys manager for verification/decryption.</h2></div></div></div>
<p>If more than one key could be used for signature or encryption,
- then using <code class="STRUCTFIELD">signKey</code> member of
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a> structure or
- <code class="STRUCTFIELD">encKey</code> member of
- <a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a> structure
+ then using <em class="structfield"><code>signKey</code></em> member of
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a> structure or
+ <em class="structfield"><code>encKey</code></em> member of
+ <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a> structure
is not possible. Instead, the application should load known keys in
- the keys manager and use <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a> element to specify
+ the keys manager and use &lt;dsig:KeyName/&gt; element to specify
the key name.
</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN503"></a><p><b>Example 3. Initializing keys manager and loading DES keys from binary files.</b></p>
-<pre class="PROGRAMLISTING">/**
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.10.5.3.1"></a><p class="title"><b>Example 18. Initializing keys manager and loading DES keys from binary files.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* load_des_keys:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
@@ -190,13 +106,13 @@ load_des_keys(char** files, int files_size) {
return(mngr);
}
</pre>
-<p><a href="xmlsec-decrypt-with-keys-mngr.html#XMLSEC-EXAMPLE-DECRYPT2">Full program listing</a></p>
+<p><a class="link" href="xmlsec-decrypt-with-keys-mngr.html#xmlsec-example-decrypt2" title="decrypt2.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><b>&lt;&lt;&lt; Using keys manager for signatures/encryption.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-custom-keys-store.html"><b>Implementing a custom keys store. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-keys.html b/docs/api/xmlsec-notes-keys.html
index 48bd71a8..a928a782 100644
--- a/docs/api/xmlsec-notes-keys.html
+++ b/docs/api/xmlsec-notes-keys.html
@@ -1,117 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Keys.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Decrypting an encrypted document" href="xmlsec-notes-decrypt.html">
-<link rel="NEXT" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Keys.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-decrypt.html" title="Decrypting an encrypted document">
+<link rel="next" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-keysmngr.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-KEYS"></a>Keys.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-keys"></a>Keys.</h2></div></div></div>
<p>A key in XML Security Library is a representation of the
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a>
+ <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a>
element and consist of several key data objects.
The "value" key data usually contains raw key material (or handlers to
key material) required to execute particular crypto transform. Other
@@ -122,22 +34,19 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
have a DSA key "value" and two key data objects for X509 certificate
and PGP key data.
</p>
-<div class="FIGURE">
-<a name="AEN412"></a><p><b>Figure 1. The key structure.</b></p>
-<p><img src="images/key.png" align="CENTER"></p>
+<div class="figure">
+<a name="id-1.2.9.3"></a><p class="title"><b>Figure 6. The key structure.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/key.png" align="middle" alt="The key structure."></div></div>
</div>
-<p>XML Security Library has several "invisible" key data classes.
+<br class="figure-break"><p>XML Security Library has several "invisible" key data classes.
These classes never show up in the keys data list of a key but are used for
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a>
- children processing (<a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a>,
- <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top"></a><a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey" target="_top">&lt;enc:EncryptedKey/&gt;</a>, ...). As with transforms, application might
+ <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a>
+ children processing (<a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a>,
+ &lt;enc:EncryptedKey/&gt;, ...). As with transforms, application might
add any new key data objects or replace the default ones.
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-decrypt.html"><b>&lt;&lt;&lt; Decrypting an encrypted document</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-keysmngr.html"><b>Keys manager. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-keysmngr.html b/docs/api/xmlsec-notes-keysmngr.html
index 9c55ded9..e6b14082 100644
--- a/docs/api/xmlsec-notes-keysmngr.html
+++ b/docs/api/xmlsec-notes-keysmngr.html
@@ -1,125 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Keys manager.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Keys." href="xmlsec-notes-keys.html">
-<link rel="NEXT" title="Simple keys store." href="xmlsec-notes-simple-keys-store.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Keys manager.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-keys.html" title="Keys.">
+<link rel="next" href="xmlsec-notes-simple-keys-store.html" title="Simple keys store.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-simple-keys-store.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-KEYSMNGR"></a>Keys manager.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-keysmngr.html#XMLSEC-NOTES-KEYSMNGR-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></dt>
-<dt><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></dt>
-<dt><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></dt>
-<dt><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-keysmngr"></a>Keys manager.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-keysmngr.html#xmlsec-notes-keysmngr-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-KEYSMNGR-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-keysmngr-overview"></a>Overview.</h2></div></div></div>
<p>Processing some of the key data objects require additional
information which is global across the application (or in the
particular area of the application). For example, X509 certificates
@@ -128,15 +40,15 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
for key data processing in a a collection of key data stores called
"keys manager".
</p>
-<div class="FIGURE">
-<a name="AEN444"></a><p><b>Figure 1. The keys manager structure.</b></p>
-<p><img src="images/keysmngr.png" align="CENTER"></p>
+<div class="figure">
+<a name="id-1.2.10.2.3"></a><p class="title"><b>Figure 7. The keys manager structure.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/keysmngr.png" align="middle" alt="The keys manager structure."></div></div>
</div>
-<p>Keys manager has a special "keys store" which lists the keys
+<br class="figure-break"><p>Keys manager has a special "keys store" which lists the keys
known to the application. This "keys store" is used by XML Security
Library to lookup keys by name, type and crypto algorithm (for example,
during
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyName" target="_top">&lt;dsig:KeyName/&gt;</a>
+ <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a>
processing). The XML Security Library
provides default simple "flat list" based implementation of a default keys
store. The application can replace it with any other keys store
@@ -154,10 +66,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-keys.html"><b>&lt;&lt;&lt; Keys.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-simple-keys-store.html"><b>Simple keys store. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-functions.html b/docs/api/xmlsec-notes-new-crypto-functions.html
index 5953962e..7a2dcb87 100644
--- a/docs/api/xmlsec-notes-new-crypto-functions.html
+++ b/docs/api/xmlsec-notes-new-crypto-functions.html
@@ -1,115 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>xmlSecCryptoApp* functions.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Creating a framework from the skeleton." href="xmlsec-notes-new-crypto-skeleton.html">
-<link rel="NEXT" title="Klasses and objects." href="xmlsec-notes-new-crypto-klasses.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xmlSecCryptoApp* functions.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-skeleton.html" title="Creating a framework from the skeleton.">
+<link rel="next" href="xmlsec-notes-new-crypto-klasses.html" title="Klasses and objects.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-skeleton.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-skeleton.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-klasses.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-FUNCTIONS">xmlSecCryptoApp* functions.</a></h1>
-<p> The XML Security Library allows application to load multiple
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-functions"></a>xmlSecCryptoApp* functions.</h2></div></div></div>
+<p>
+ The XML Security Library allows application to load multiple
"xmlsec-&lt;crypto&gt; libraries. To prevent symbol conflicts,
all "xmlsec-mycrypto" library names MUST start with "xmlSecMyCrypto".
However, in some applications (for example, the xmlsec command line
@@ -119,7 +33,8 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
include files do the magic by mapping "xmlSecMyCrypto*" to
"xmlSecCrypto*" names using "XMLSEC_CRYPTO_*" defines.
</p>
-<p> In order to build xmlsec command line utility, the
+<p>
+ In order to build xmlsec command line utility, the
"xmlsec-&lt;crypto&gt;" library must implement several functions.
The stubs for all these functions are provided in the "skeleton"
we've created. While these functions are not required to be
@@ -127,14 +42,17 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
doing so (if possible) to simplify testing (thru xmlsec command line
utility) and application development.
</p>
-<p> In adition to xmlSecCryptoApp* functions, the xmlsec-&lt;crypto&gt;
+<p>
+ In adition to xmlSecCryptoApp* functions, the xmlsec-&lt;crypto&gt;
library MUST implement following xmlSecCrypto* functions:
</p>
-<div class="TABLE">
-<a name="AEN694"></a><p><b>Table 1. xmlSecCrypto* functions.</b></p>
-<table border="1" class="CALSTABLE">
+<div class="table">
+<a name="id-1.2.14.4.4.1"></a><p class="title"><b>Table 1. xmlSecCrypto* functions.</b></p>
+<div class="table-contents"><table class="table" summary="xmlSecCrypto* functions." border="1">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
<td>xmlSecCryptoInit()</td>
@@ -162,13 +80,12 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</td>
</tr>
</tbody>
-</table>
+</table></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-skeleton.html"><b>&lt;&lt;&lt; Creating a framework from the skeleton.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-klasses.html"><b>Klasses and objects. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="table-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-key-stores.html b/docs/api/xmlsec-notes-new-crypto-key-stores.html
index cf73443c..6a5a7194 100644
--- a/docs/api/xmlsec-notes-new-crypto-key-stores.html
+++ b/docs/api/xmlsec-notes-new-crypto-key-stores.html
@@ -36,6 +36,328 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/api/xmlsec-notes-new-crypto-keys.html b/docs/api/xmlsec-notes-new-crypto-keys.html
index 2ab33bc3..ab0da751 100644
--- a/docs/api/xmlsec-notes-new-crypto-keys.html
+++ b/docs/api/xmlsec-notes-new-crypto-keys.html
@@ -1,126 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Keys data and keys data stores.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Cryptographic transforms." href="xmlsec-notes-new-crypto-transforms.html">
-<link rel="NEXT" title="Default keys manager." href="xmlsec-notes-new-crypto-simple-keys-mngr.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Keys data and keys data stores.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-transforms.html" title="Cryptographic transforms.">
+<link rel="next" href="xmlsec-notes-new-crypto-simple-keys-mngr.html" title="Default keys manager.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-KEYS">Keys data and keys data stores.</a></h1>
-<p> There are two key data types: key value data (for example, AES, DES, DSA,
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-keys"></a>Keys data and keys data stores.</h2></div></div></div>
+<p>
+ There are two key data types: key value data (for example, AES, DES, DSA,
HMAC or RSA key data) and others (for example, key name, X509 or PGP data).
The key data implementation should implement at least one of
- <a href="xmlsec-keysdata.html#XMLSECKEYDATAXMLREADMETHOD">xmlRead</a>
- or <a href="xmlsec-keysdata.html#XMLSECKEYDATABINREADMETHOD">binRead</a> methods.
+ <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataXmlReadMethod" title="xmlSecKeyDataXmlReadMethod ()">xmlRead</a>
+ or <a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataBinReadMethod" title="xmlSecKeyDataBinReadMethod ()">binRead</a> methods.
</p>
<p>TODO</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-transforms.html"><b>&lt;&lt;&lt; Cryptographic transforms.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><b>Default keys manager. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-klasses.html b/docs/api/xmlsec-notes-new-crypto-klasses.html
index 85463879..1f8b7a3d 100644
--- a/docs/api/xmlsec-notes-new-crypto-klasses.html
+++ b/docs/api/xmlsec-notes-new-crypto-klasses.html
@@ -1,118 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Klasses and objects.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="xmlSecCryptoApp* functions." href="xmlsec-notes-new-crypto-functions.html">
-<link rel="NEXT" title="Cryptographic transforms." href="xmlsec-notes-new-crypto-transforms.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Klasses and objects.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-functions.html" title="xmlSecCryptoApp* functions.">
+<link rel="next" href="xmlsec-notes-new-crypto-transforms.html" title="Cryptographic transforms.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-functions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-functions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-transforms.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-KLASSES">Klasses and objects.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-klasses"></a>Klasses and objects.</h2></div></div></div>
<p>The XML Security Library is written in C but it uses some OOP techniques:
the objects in the library have "klasses" and there is "klasses" inheritance.
- (see <a href="xmlsec-signature-klasses.html">signature</a> and
- <a href="xmlsec-encryption-klasses.html">encryption</a> klasses
+ (see <a class="link" href="xmlsec-signature-klasses.html" title="APPENDIX A. XML Security Library Signature Klasses.">signature</a> and
+ <a class="link" href="xmlsec-encryption-klasses.html" title="APPENDIX B. XML Security Library Encryption Klasses.">encryption</a> klasses
diagrams). The "klass" is different from C++ "class" (btw, this is
one of the reasons why it is spelled differently). The idea of "klasses"
used in XML Security Library are close to one in the GLIB/GTK/GNOME
@@ -121,16 +34,16 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</p>
<p>XML Security Library "klass" includes three main parts:
</p>
-<p></p>
-<ul>
-<li>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
<p>"Klass" declaration structure that defines "klass" interfaces
and global constant data (for example, the human-readable name of
the "klass").
</p>
-<div class="EXAMPLE">
-<a name="AEN716"></a><p><b>Example 6. Base transform "klass" and its child XPath transform "klass" structure.</b></p>
-<pre class="PROGRAMLISTING">struct _xmlSecTransformKlass {
+<div class="example">
+<a name="id-1.2.14.5.3.1.1.1.1"></a><p class="title"><b>Example 30. Base transform "klass" and its child XPath transform "klass" structure.</b></p>
+<div class="example-contents"><pre class="programlisting">
+struct _xmlSecTransformKlass {
/* data */
size_t klassSize;
size_t objSize;
@@ -166,17 +79,20 @@ static xmlSecTransformKlass xmlSecTransformXPathKlass = {
...
};
- </pre>
+ </pre></div>
</div>
- </li>
-<li>
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem">
<p>"Klass" id which is simply a pointer to the "klass"
declaration strucutre. "Klass" id is used to bind "klass" objects
to the "klass" declaration and to pass "klass" strucutre to functions.
</p>
-<div class="EXAMPLE">
-<a name="AEN721"></a><p><b>Example 7. Base transform "klass" id declaration and its child XPath transform "klass" id implementation.</b></p>
-<pre class="PROGRAMLISTING">typedef const struct _xmlSecTransformKlass xmlSecTransformKlass, *xmlSecTransformId;
+<div class="example">
+<a name="id-1.2.14.5.3.1.2.1.1"></a><p class="title"><b>Example 31. Base transform "klass" id declaration and its child XPath transform "klass" id implementation.</b></p>
+<div class="example-contents"><pre class="programlisting">
+typedef const struct _xmlSecTransformKlass xmlSecTransformKlass, *xmlSecTransformId;
...
@@ -188,17 +104,20 @@ xmlSecTransformId
xmlSecTransformXPathGetKlass(void) {
return(&amp;xmlSecTransformXPathKlass);
}
- </pre>
+ </pre></div>
</div>
- </li>
-<li>
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem">
<p>"Klass" object structure that contains object specific
data. The child object specific data are placed after the parent "klass"
object data.
</p>
-<div class="EXAMPLE">
-<a name="AEN726"></a><p><b>Example 8. Base transform object strucutre and its child XPath transform object.</b></p>
-<pre class="PROGRAMLISTING">struct _xmlSecTransform {
+<div class="example">
+<a name="id-1.2.14.5.3.1.3.1.1"></a><p class="title"><b>Example 32. Base transform object strucutre and its child XPath transform object.</b></p>
+<div class="example-contents"><pre class="programlisting">
+struct _xmlSecTransform {
xmlSecTransformId id;
xmlSecTransformOperation operation;
xmlSecTransformStatus status;
@@ -226,15 +145,16 @@ xmlSecTransformXPathGetKlass(void) {
((xmlSecTransformCheckSize((transform), xmlSecXPathTransformSize)) ? \
(xmlSecPtrListPtr)(((unsigned char*)(transform)) + sizeof(xmlSecTransform)) : \
(xmlSecPtrListPtr)NULL)
- </pre>
+ </pre></div>
</div>
- </li>
-</ul>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-functions.html"><b>&lt;&lt;&lt; xmlSecCryptoApp* functions.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-transforms.html"><b>Cryptographic transforms. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</li>
+</ul></div>
+<p>
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-sharing-results.html b/docs/api/xmlsec-notes-new-crypto-sharing-results.html
index e39d41e6..a18af7f8 100644
--- a/docs/api/xmlsec-notes-new-crypto-sharing-results.html
+++ b/docs/api/xmlsec-notes-new-crypto-sharing-results.html
@@ -1,114 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Sharing the results.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Default keys manager." href="xmlsec-notes-new-crypto-simple-keys-mngr.html">
-<link rel="NEXT" title="Examples." href="xmlsec-examples.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Sharing the results.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-simple-keys-mngr.html" title="Default keys manager.">
+<link rel="next" href="xmlsec-examples.html" title="Examples.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-examples.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-SHARING-RESULTS">Sharing the results.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-sharing-results"></a>Sharing the results.</h2></div></div></div>
<p>If you implemented support for new cryptographic library
(or extended an existing one) and both you and your company/university/...
are willing to share the code I would be glad to add your work
@@ -117,14 +30,11 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
for your work.
</p>
<p>The best way to submit your enchancements is to send a pull request
- through <a href="https://github.com/lsh123/xmlsec" target="_top">GitHub</a>.
+ through <a class="ulink" href="" target="_top">GitHub</a>.
I will try to review and merge your pool request as soon as possible.
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><b>&lt;&lt;&lt; Default keys manager.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-examples.html"><b>Examples. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html b/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
index 2a2371ea..23832547 100644
--- a/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
+++ b/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
@@ -1,125 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Default keys manager.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Keys data and keys data stores." href="xmlsec-notes-new-crypto-keys.html">
-<link rel="NEXT" title="Sharing the results." href="xmlsec-notes-new-crypto-sharing-results.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Default keys manager.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-keys.html" title="Keys data and keys data stores.">
+<link rel="next" href="xmlsec-notes-new-crypto-sharing-results.html" title="Sharing the results.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-keys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-sharing-results.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-SIMPLE-KEYS-MNGR">Default keys manager.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-simple-keys-mngr"></a>Default keys manager.</h2></div></div></div>
<p>Any "xmlsec-&lt;crypto&gt;" library implementation must provide
a default keys store. The XML Security Library has a built-in flat
- list based <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID">simple keys
+ list based <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId">simple keys
store</a> which could be used if cryptographic library does not
have one itself.
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-keys.html"><b>&lt;&lt;&lt; Keys data and keys data stores.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-sharing-results.html"><b>Sharing the results. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-skeleton.html b/docs/api/xmlsec-notes-new-crypto-skeleton.html
index 87d7c64c..9717378d 100644
--- a/docs/api/xmlsec-notes-new-crypto-skeleton.html
+++ b/docs/api/xmlsec-notes-new-crypto-skeleton.html
@@ -1,155 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Creating a framework from the skeleton.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="NEXT" title="xmlSecCryptoApp* functions." href="xmlsec-notes-new-crypto-functions.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating a framework from the skeleton.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="next" href="xmlsec-notes-new-crypto-functions.html" title="xmlSecCryptoApp* functions.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-SKELETON">Creating a framework from the skeleton.</a></h1>
-<p> The XML Security Library contains a "skeleton" for creating new
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-skeleton"></a>Creating a framework from the skeleton.</h2></div></div></div>
+<p>
+ The XML Security Library contains a "skeleton" for creating new
"xmlsec-&lt;crypto&gt;" libraries. In order to create "xmlsec-mycrypto"
library framework, do the following (this example assumes that you
are using *nix system, adjust the commands if you are using something else):
</p>
-<p></p>
-<ul>
-<li>
-<p> Copy src/skeleton and include/xmlsec/skeleton folders to src/mycrypto and
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p>
+ Copy src/skeleton and include/xmlsec/skeleton folders to src/mycrypto and
include/xmlsec/mycrypto folders:
</p>
-<div class="EXAMPLE">
-<a name="AEN666"></a><p><b>Example 1. Coping skeleton folders.</b></p>
-<pre class="PROGRAMLISTING">cd src
+<div class="example">
+<a name="id-1.2.14.3.2.1.1.1.1"></a><p class="title"><b>Example 25. Coping skeleton folders:</b></p>
+<div class="example-contents"><pre class="programlisting">
cp -r src/skeleton src/mycrypto
cp -r include/xmlsec/skeleton include/xmlsec/mycrypto
- </pre>
-</div>
- </li>
-<li>
-<p> Replace "skeleton" with "mycrypto" in the copied files (note that there
+ </pre></div>
+</div>
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Replace "skeleton" with "mycrypto" in the copied files (note that there
are different possible cases here):
</p>
-<div class="EXAMPLE">
-<a name="AEN671"></a><p><b>Example 2. Replacing "skeleton" with "mycrypto".</b></p>
-<pre class="PROGRAMLISTING">for i in `ls include/xmlsec/mycrypto/* src/mycrypto/*`; do
+<div class="example">
+<a name="id-1.2.14.3.2.1.2.1.1"></a><p class="title"><b>Example 26. Replacing "skeleton" with "mycrypto".</b></p>
+<div class="example-contents"><pre class="programlisting">
+for i in `ls include/xmlsec/mycrypto/* src/mycrypto/*`; do
echo Processing $i ..;
sed 's/skeleton/mycrypto/g' $i | \
sed 's/SKELETON/MYCRYPTO/g' | \
sed 's/Skeleton/MyCrypto/g' &gt; $i.tmp;
mv $i.tmp $i;
done
- </pre>
+ </pre></div>
</div>
- </li>
-<li>
-<p> Add "xmlsec-mycrypto" library to the "include/xmlsec/crypto.h" file:
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Add "xmlsec-mycrypto" library to the "include/xmlsec/crypto.h" file:
</p>
-<div class="EXAMPLE">
-<a name="AEN676"></a><p><b>Example 3. Modifying include/xmlsec/crypto.h file.</b></p>
-<pre class="PROGRAMLISTING">...
+<div class="example">
+<a name="id-1.2.14.3.2.1.3.1.1"></a><p class="title"><b>Example 27. Modifying include/xmlsec/crypto.h file.</b></p>
+<div class="example-contents"><pre class="programlisting">
+...
#ifdef XMLSEC_CRYPTO_MYCRYPTO
#include &lt;xmlsec/mycrypto/app.h&gt;
#include &lt;xmlsec/mycrypto/crypto.h&gt;
@@ -158,17 +80,21 @@ done
...
#endif /* XMLSEC_CRYPTO_MYCRYPTO */
...
- </pre>
+ </pre></div>
</div>
- </li>
-<li>
-<p> Add "xmlsec-crypto" library to the configure.in file (for *nix systems;
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Add "xmlsec-crypto" library to the configure.in file (for *nix systems;
for Windows you need to modify win32/confgure.js and win32/Makefile.msvc
files, see win32/README.txt for details):
</p>
-<div class="EXAMPLE">
-<a name="AEN681"></a><p><b>Example 4. Modifying configure.in file.</b></p>
-<pre class="PROGRAMLISTING">dnl ==========================================================================
+<div class="example">
+<a name="id-1.2.14.3.2.1.4.1.1"></a><p class="title"><b>Example 28. Modifying configure.in file.</b></p>
+<div class="example-contents"><pre class="programlisting">
+dnl ==========================================================================
dnl See if we can find MyCrypto
dnl ==========================================================================
XMLSEC_MYCRYPTO_DEFINES=""
@@ -241,30 +167,34 @@ include/xmlsec/mycrypto/Makefile
src/mycrypto/Makefile
...
])
- </pre>
+ </pre></div>
</div>
- </li>
-<li><p>Modify "xmlsec.spec.in" file to create "xmlsec-mycrypto"
+<p><br class="example-break">
+ </p>
+</li>
+<li class="listitem"><p>Modify "xmlsec.spec.in" file to create "xmlsec-mycrypto"
RPM (if necessary).
</p></li>
-</ul>
+</ul></div>
+<p>
By now you should be able to sucessfuly compile XML Security Library
with MyCrypto library (we disable all other libraries to make sure
that xmlsec command line utility is linked against xmlsec-mycrypto
library):
- <div class="EXAMPLE">
-<a name="AEN686"></a><p><b>Example 5. Compiling the results.</b></p>
-<pre class="PROGRAMLISTING">./autogen.sh --without-openssl --without-nss --without-gnutls --without-gcrypt \
+ </p>
+<div class="example">
+<a name="id-1.2.14.3.2.2"></a><p class="title"><b>Example 29. Compiling the results.</b></p>
+<div class="example-contents"><pre class="programlisting">
+./autogen.sh --without-openssl --without-nss --without-gnutls --without-gcrypt \
--with-mycrypto=$HOME --disable-tmpl-tests
make
- </pre>
+ </pre></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto.html"><b>&lt;&lt;&lt; Adding support for new cryptographic library.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-functions.html"><b>xmlSecCryptoApp* functions. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto-transforms.html b/docs/api/xmlsec-notes-new-crypto-transforms.html
index 931566ad..3796ceea 100644
--- a/docs/api/xmlsec-notes-new-crypto-transforms.html
+++ b/docs/api/xmlsec-notes-new-crypto-transforms.html
@@ -1,151 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Cryptographic transforms.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Adding support for new cryptographic library." href="xmlsec-notes-new-crypto.html">
-<link rel="PREVIOUS" title="Klasses and objects." href="xmlsec-notes-new-crypto-klasses.html">
-<link rel="NEXT" title="Keys data and keys data stores." href="xmlsec-notes-new-crypto-keys.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Cryptographic transforms.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-new-crypto.html" title="Adding support for new cryptographic library.">
+<link rel="prev" href="xmlsec-notes-new-crypto-klasses.html" title="Klasses and objects.">
+<link rel="next" href="xmlsec-notes-new-crypto-keys.html" title="Keys data and keys data stores.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-new-crypto-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-new-crypto-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-keys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-TRANSFORMS">Cryptographic transforms.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-transforms"></a>Cryptographic transforms.</h2></div></div></div>
<p>The cryptographic transforms (digests, signatures and encryption)
implementation is the main goal of "xmlsec-&lt;crypto&gt;" library.
- Most of the cryptographic <a href="xmlsec-notes-transforms.html">transforms</a>
- use default <code class="STRUCTFIELD">pushBin</code> and <code class="STRUCTFIELD">popBin</code>
- methods and provide custom <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a> method.
- The binary transform <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a> method
+ Most of the cryptographic <a class="link" href="xmlsec-notes-transforms.html" title="Transforms and transforms chain.">transforms</a>
+ use default <em class="structfield"><code>pushBin</code></em> and <em class="structfield"><code>popBin</code></em>
+ methods and provide custom <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a> method.
+ The binary transform <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a> method
processes data from the input buffer
- <code class="STRUCTFIELD">inBuf</code> and pushes results to
- <code class="STRUCTFIELD">outBuf</code>. The transform should try to
- consume and remove data from <code class="STRUCTFIELD">inBuf</code> buffer
+ <em class="structfield"><code>inBuf</code></em> and pushes results to
+ <em class="structfield"><code>outBuf</code></em>. The transform should try to
+ consume and remove data from <em class="structfield"><code>inBuf</code></em> buffer
as soon as the data became available. However, it might happen
that current data size in the input buffer is not enough (for example,
RSA-PKCS1 algorithm requires that all the data are available in
one buffer). In this case, transform might keep the data in the
input buffer till the next call to
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a>
method. The "last" parameter of the
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a>
indicates that transform MUST process all the data in the input buffer
and return as much as possible in the output buffer. The
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a> method
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a> method
might be called multiple times with non-zero "last" parameter until
the transforms returns nothing
in the output buffer. In addition, the transform implementation is
- responsible for managing the transform <code class="STRUCTFIELD">status</code>
+ responsible for managing the transform <em class="structfield"><code>status</code></em>
variable.
</p>
-<div class="TABLE">
-<a name="AEN744"></a><p><b>Table 2. Typical transform status managing.</b></p>
-<table border="1" class="CALSTABLE">
+<div class="table">
+<a name="id-1.2.14.6.2.13"></a><p class="title"><b>Table 2. Typical transform status managing.</b></p>
+<div class="table-contents"><table class="table" summary="Typical transform status managing." border="1">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
<td>xmlSecTransformStatusNone</td>
<td>Transform initializes itself (for example, cipher transform
- generates or reads IV) and sets <code class="STRUCTFIELD">status</code>
+ generates or reads IV) and sets <em class="structfield"><code>status</code></em>
variable to xmlSecTransformStatusWorking.</td>
</tr>
<tr>
@@ -153,7 +68,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
<td>Transform process the next (if "last" parameter is zero) or
last block of data (if "last" parameter is non-zero).
When transform returns all the data, it sets the
- <code class="STRUCTFIELD">status</code> variable to
+ <em class="structfield"><code>status</code></em> variable to
xmlSecTransformStatusFinished.</td>
</tr>
<tr>
@@ -162,32 +77,31 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
processing.</td>
</tr>
</tbody>
-</table>
-</div>
- <p>In adition to <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a>
+</table></div>
+</div>
+<p><br class="table-break">
+ </p>
+<p>In adition to <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a>
methods, signature, hmac or digest transforms
- MUST implement <a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD">verify</a> method.
- The <a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD">verify</a> method is called
+ MUST implement <a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()">verify</a> method.
+ The <a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()">verify</a> method is called
after transform execution is finished. The
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD">verify</a> method implementation
- must set the "status" member to <a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUSOK">xmlSecTransformStatusOk</a>
- if signature, hmac or digest is successfuly verified or to
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUSFAIL">xmlSecTransformStatusFail</a>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()">verify</a> method implementation
+ must set the "status" member to <a class="link" href="xmlsec-transforms.html#xmlSecTransformStatusOk">xmlSecTransformStatusOk</a>
+ if signature, hmac or digest is successfully verified or to
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformStatusFail">xmlSecTransformStatusFail</a>
otherwise.
</p>
<p>The transforms that require a key (signature or encryption
transforms, for example) MUST imlpement
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD">setKeyReq</a>
- (prepares the <a href="xmlsec-keys.html#XMLSECKEYREQ">key requirements</a>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyRequirementsMethod" title="xmlSecTransformSetKeyRequirementsMethod ()">setKeyReq</a>
+ (prepares the <a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq">key requirements</a>
for key search) and
- <a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYMETHOD">setKey</a>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyMethod" title="xmlSecTransformSetKeyMethod ()">setKey</a>
(sets the key in the transform) methods.
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-klasses.html"><b>&lt;&lt;&lt; Klasses and objects.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-keys.html"><b>Keys data and keys data stores. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-new-crypto.html b/docs/api/xmlsec-notes-new-crypto.html
index c1b49d99..9df98dca 100644
--- a/docs/api/xmlsec-notes-new-crypto.html
+++ b/docs/api/xmlsec-notes-new-crypto.html
@@ -1,128 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Adding support for new cryptographic library.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Using context objects." href="xmlsec-notes-contexts.html">
-<link rel="NEXT" title="Creating a framework from the skeleton." href="xmlsec-notes-new-crypto-skeleton.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Adding support for new cryptographic library.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-contexts.html" title="Using context objects.">
+<link rel="next" href="xmlsec-notes-new-crypto-skeleton.html" title="Creating a framework from the skeleton.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-contexts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-contexts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-new-crypto-skeleton.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-NEW-CRYPTO"></a>Adding support for new cryptographic library.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-new-crypto.html#XMLSEC-NOTES-NEW-CRYPTO-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-new-crypto"></a>Adding support for new cryptographic library.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto.html#xmlsec-notes-new-crypto-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-NEW-CRYPTO-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-new-crypto-overview"></a>Overview.</h2></div></div></div>
<p>XML Security Library can support practicaly any cryptographic
library. Currently, it has "out-of-the-box" support for OpenSSL,
MSCrypto, NSS, GnuTLS and GCrypt. If your favorite library is not supported yet then
@@ -130,30 +42,32 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
(university, ...) are willing to share the results of your work I would
be happy to add support for new libraries to the main XML Security
Library distribution.</p>
-<p> The XML Security Library
- <a href="xmlsec-notes-structure.html">separates</a>
+<p>
+ The XML Security Library
+ <a class="link" href="xmlsec-notes-structure.html" title="XML Security Library Structure.">separates</a>
the cryptographic library (engine)
specific code in an "xmlsec-&lt;crypto&gt;" library (where "&lt;crypto&gt;" is
"openssl", "mscrypt", "gnutls", "gcrypt", "nss", etc.) which includes following items:
</p>
-<p></p>
-<ul>
-<li><p> xmlSecCryptoApp* functions.
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ xmlSecCryptoApp* functions.
</p></li>
-<li><p> Cryptographic transforms and keys data implementation.
+<li class="listitem"><p>
+ Cryptographic transforms and keys data implementation.
</p></li>
-<li><p> Keys store support (X509, PGP, etc.).
+<li class="listitem"><p>
+ Keys store support (X509, PGP, etc.).
</p></li>
-</ul>
+</ul></div>
+<p>
In this chapter, we will discuss
a task of creating "xmlsec-mycrypto" library that provides support
for your favorite "MyCrypto" cryptographic library.
- </div>
+ </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-contexts.html"><b>&lt;&lt;&lt; Using context objects.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-skeleton.html"><b>Creating a framework from the skeleton. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-overview.html b/docs/api/xmlsec-notes-overview.html
index dd8ea312..41999274 100644
--- a/docs/api/xmlsec-notes-overview.html
+++ b/docs/api/xmlsec-notes-overview.html
@@ -1,125 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Overview.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="NEXT" title="XML Security Library Structure." href="xmlsec-notes-structure.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Overview.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="next" href="xmlsec-notes-structure.html" title="XML Security Library Structure.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-structure.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-OVERVIEW"></a>Overview.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-overview"></a>Overview.</h2></div></div></div>
<p>XML Security Library provides support for XML Digital Signature
and XML Encryption. It is based on LibXML/LibXSLT and can use
practicaly any crypto library (currently there is "out of the box"
- support for OpenSSL, MSCrypto, GnuTLS, GCrypt and NSS).
+ support for OpenSSL, Microsoft Crypto API, Microsoft Cryptography API:
+ Next Generation (CNG), GnuTLS, GCrypt and NSS).
</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes.html"><b>&lt;&lt;&lt; XML Security Library Tutorial</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-structure.html"><b>XML Security Library Structure. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-sign-encrypt.html b/docs/api/xmlsec-notes-sign-encrypt.html
index 83b3ecec..5023fbd8 100644
--- a/docs/api/xmlsec-notes-sign-encrypt.html
+++ b/docs/api/xmlsec-notes-sign-encrypt.html
@@ -1,123 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing and encrypting documents.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Initialization and shutdown." href="xmlsec-notes-init-shutdown.html">
-<link rel="NEXT" title="Signing a document." href="xmlsec-notes-sign.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing and encrypting documents.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-init-shutdown.html" title="Initialization and shutdown.">
+<link rel="next" href="xmlsec-notes-sign.html" title="Signing a document.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-init-shutdown.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-init-shutdown.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-sign.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-SIGN-ENCRYPT"></a>Signing and encrypting documents.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-sign-encrypt.html#XMLSEC-NOTES-SIGN-ENCRYPT-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-sign.html">Signing a document.</a></dt>
-<dt><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-sign-encrypt"></a>Signing and encrypting documents.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-sign-encrypt.html#xmlsec-notes-sign-encrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign.html">Signing a document.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-SIGN-ENCRYPT-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-sign-encrypt-overview"></a>Overview.</h2></div></div></div>
<p>XML Security Library performs signature or encryption by processing
input xml or binary data and a template that specifies a signature or
encryption skeleton: the transforms, algorithms, the key selection
@@ -128,16 +40,15 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
the template. Signature or encryption context controls the whole
process and stores the required temporary data.
</p>
-<div class="FIGURE">
-<a name="AEN149"></a><p><b>Figure 1. The signature or encryption processing model.</b></p>
-<p><img src="images/sign-enc-model.png" align="CENTER"></p>
+<div class="figure">
+<a name="id-1.2.6.2.2.1"></a><p class="title"><b>Figure 2. The signature or encryption processing model.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/sign-enc-model.png" align="middle" alt="The signature or encryption processing model."></div></div>
</div>
- </div>
+<p><br class="figure-break">
+ </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-init-shutdown.html"><b>&lt;&lt;&lt; Initialization and shutdown.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-sign.html"><b>Signing a document. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-sign-x509.html b/docs/api/xmlsec-notes-sign-x509.html
index a81390f6..7c3441dc 100644
--- a/docs/api/xmlsec-notes-sign-x509.html
+++ b/docs/api/xmlsec-notes-sign-x509.html
@@ -1,133 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing data with X509 certificate.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Using X509 Certificates." href="xmlsec-notes-x509.html">
-<link rel="PREVIOUS" title="Using X509 Certificates." href="xmlsec-notes-x509.html">
-<link rel="NEXT" title="Verifing document signed with X509 certificates." href="xmlsec-notes-verify-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing data with X509 certificate.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-x509.html" title="Using X509 Certificates.">
+<link rel="prev" href="xmlsec-notes-x509.html" title="Using X509 Certificates.">
+<link rel="next" href="xmlsec-notes-verify-x509.html" title="Verifing document signed with X509 certificates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-verify-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-SIGN-X509">Signing data with X509 certificate.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-sign-x509"></a>Signing data with X509 certificate.</h2></div></div></div>
<p>To sign a file using X509 certificate,
an application need to associate the certificate (or certificates)
with the private key using one of the following functions:
</p>
-<p></p>
-<ul>
-<li><p> <a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOAD">xmlSecOpenSSLAppKeyCertLoad</a> - loads
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoad" title="xmlSecOpenSSLAppKeyCertLoad ()">xmlSecOpenSSLAppKeyCertLoad</a> - loads
certificate from a file and adds to the key;
</p></li>
-<li><p> <a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOAD">xmlSecOpenSSLAppPkcs12Load</a> -
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12Load" title="xmlSecOpenSSLAppPkcs12Load ()">xmlSecOpenSSLAppPkcs12Load</a> -
loads private key and all the certificates associated with it from a PKCS12 file;
</p></li>
-<li><p> <a href="xmlsec-keys.html#XMLSECKEYADOPTDATA">xmlSecKeyAdoptData</a> - low level
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-keys.html#xmlSecKeyAdoptData" title="xmlSecKeyAdoptData ()">xmlSecKeyAdoptData</a> - low level
function to add key data (including X509 key data) to the key.
</p></li>
-</ul>
- <div class="EXAMPLE">
-<a name="AEN535"></a><p><b>Example 1. Loading private key and X509 certificate.</b></p>
-<pre class="PROGRAMLISTING"> /* load private key, assuming that there is not password */
+</ul></div>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.11.3.2.2"></a><p class="title"><b>Example 20. Loading private key and X509 certificate.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+ /* load private key, assuming that there is not password */
key = xmlSecCryptoAppKeyLoad(key_file, xmlSecKeyDataFormatPem, NULL, NULL, NULL);
if(key == NULL) {
fprintf(stderr,"Error: failed to load private pem key from \"%s\"\n", key_file);
@@ -140,17 +59,22 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
goto done;
}
</pre>
-<p><a href="xmlsec-examples-sign-x509.html#XMLSEC-EXAMPLE-SIGN3">Full program listing</a></p>
+<p><a class="link" href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3" title="sign3.c">Full program listing</a></p>
+</div>
</div>
- <p>Next step is to prepare signature template with <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a>
- child of the <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> element. When XML Security Library finds
- this node in the template, it automaticaly creates <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a>
- children of the <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a> element and writes to result XML document
+<p><br class="example-break">
+ </p>
+<p>Next step is to prepare signature template with &lt;dsig:X509Data/&gt;
+ child of the &lt;dsig:KeyInfo/&gt; element. When XML Security Library finds
+ this node in the template, it automaticaly creates &lt;dsig:X509Certificate/&gt;
+ children of the &lt;dsig:X509Data/&gt; element and writes to result XML document
all the certificates associated with the signature key.
</p>
-<div class="EXAMPLE">
-<a name="AEN569"></a><p><b>Example 2. Dynamicaly creating a signature template for signing document using X509 certificate.</b></p>
-<pre class="PROGRAMLISTING"> /* create signature template for RSA-SHA1 enveloped signature */
+<div class="example">
+<a name="id-1.2.11.3.3.1"></a><p class="title"><b>Example 21. Dynamicaly creating a signature template for signing document using X509 certificate.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+ /* create signature template for RSA-SHA1 enveloped signature */
signNode = xmlSecTmplSignatureCreate(doc, xmlSecTransformExclC14NId,
xmlSecTransformRsaSha1Id, NULL);
if(signNode == NULL) {
@@ -158,7 +82,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-Signature"&gt;&amp;lt;dsig:Signature/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; node to the doc */
+ /* add &lt;dsig:Signature/&gt; node to the doc */
xmlAddChild(xmlDocGetRootElement(doc), signNode);
/* add reference */
@@ -175,7 +99,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
goto done;
}
- /* add &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo"&gt;&amp;lt;dsig:KeyInfo/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; and &lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&lt;ulink URL="http://www.w3.org/TR/xmldsig-core/#sec-X509Data"&gt;&amp;lt;dsig:X509Data/&amp;gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt;&lt;/ulink&gt; */
+ /* add &lt;dsig:KeyInfo/&gt; and &lt;dsig:X509Data/&gt; */
keyInfoNode = xmlSecTmplSignatureEnsureKeyInfo(signNode, NULL);
if(keyInfoNode == NULL) {
fprintf(stderr, "Error: failed to add key info\n");
@@ -187,13 +111,13 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
goto done;
}
</pre>
-<p><a href="xmlsec-examples-sign-x509.html#XMLSEC-EXAMPLE-SIGN3">Full program listing</a></p>
+<p><a class="link" href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3" title="sign3.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-x509.html"><b>&lt;&lt;&lt; Using X509 Certificates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-verify-x509.html"><b>Verifing document signed with X509 certificates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-sign.html b/docs/api/xmlsec-notes-sign.html
index 8a770932..1407a639 100644
--- a/docs/api/xmlsec-notes-sign.html
+++ b/docs/api/xmlsec-notes-sign.html
@@ -1,149 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Signing a document.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Signing and encrypting documents." href="xmlsec-notes-sign-encrypt.html">
-<link rel="PREVIOUS" title="Signing and encrypting documents." href="xmlsec-notes-sign-encrypt.html">
-<link rel="NEXT" title="Encrypting data." href="xmlsec-notes-encrypt.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Signing a document.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-sign-encrypt.html" title="Signing and encrypting documents.">
+<link rel="prev" href="xmlsec-notes-sign-encrypt.html" title="Signing and encrypting documents.">
+<link rel="next" href="xmlsec-notes-encrypt.html" title="Encrypting data.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-sign-encrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-sign-encrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-encrypt.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-SIGN">Signing a document.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-sign"></a>Signing a document.</h2></div></div></div>
<p>The typical signature process includes following steps:
</p>
-<p></p>
-<ul>
-<li><p> Prepare data for signature.
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Prepare data for signature.
</p></li>
-<li><p> Create or load signature template and select start
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a>
+<li class="listitem"><p>
+ Create or load signature template and select start
+ <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a>
node.
</p></li>
-<li><p> Create signature context <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- using <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXCREATE">xmlSecDSigCtxCreate</a> or
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXINITIALIZE">xmlSecDSigCtxInitialize</a>
+<li class="listitem"><p>
+ Create signature context <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ using <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxCreate" title="xmlSecDSigCtxCreate ()">xmlSecDSigCtxCreate</a> or
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize" title="xmlSecDSigCtxInitialize ()">xmlSecDSigCtxInitialize</a>
functions.
</p></li>
-<li><p> Load signature key in <a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">keys manager</a>
+<li class="listitem"><p>
+ Load signature key in <a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">keys manager</a>
or generate a session key and set it in the signature context
- (<code class="STRUCTFIELD">signKey</code> member of
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a> structure).
+ (<em class="structfield"><code>signKey</code></em> member of
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a> structure).
</p></li>
-<li><p> Sign data by calling <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXSIGN">xmlSecDSigCtxSign</a>
+<li class="listitem"><p>
+ Sign data by calling <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxSign" title="xmlSecDSigCtxSign ()">xmlSecDSigCtxSign</a>
function.
</p></li>
-<li><p> Check returned value and consume signed data.
+<li class="listitem"><p>
+ Check returned value and consume signed data.
</p></li>
-<li><p> Destroy signature context <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- using <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDESTROY">xmlSecDSigCtxDestroy</a> or
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXFINALIZE">xmlSecDSigCtxFinalize</a>
+<li class="listitem"><p>
+ Destroy signature context <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ using <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy" title="xmlSecDSigCtxDestroy ()">xmlSecDSigCtxDestroy</a> or
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize" title="xmlSecDSigCtxFinalize ()">xmlSecDSigCtxFinalize</a>
functions.
</p></li>
-</ul>
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN189"></a><p><b>Example 1. Signing a template.</b></p>
-<pre class="PROGRAMLISTING">/**
+</ul></div>
+<p>
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.6.3.3.1"></a><p class="title"><b>Example 10. Signing a template.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* sign_file:
* @tmpl_file: the signature template file name.
* @key_file: the PEM private key file name.
@@ -220,14 +144,14 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-examples-sign-template-file.html#XMLSEC-EXAMPLE-SIGN1">Full program listing</a></p>
-<p><a href="xmlsec-examples-sign-template-file.html#XMLSEC-EXAMPLE-SIGN1-TMPL">Simple signature template file</a></p>
+<p><a class="link" href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1" title="sign1.c">Full program listing</a></p>
+<p><a class="link" href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-tmpl" title="sign1-tmpl.xml">Simple signature template file</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-sign-encrypt.html"><b>&lt;&lt;&lt; Signing and encrypting documents.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-encrypt.html"><b>Encrypting data. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-simple-keys-store.html b/docs/api/xmlsec-notes-simple-keys-store.html
index 368f8280..d65c728a 100644
--- a/docs/api/xmlsec-notes-simple-keys-store.html
+++ b/docs/api/xmlsec-notes-simple-keys-store.html
@@ -1,125 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Simple keys store.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<link rel="PREVIOUS" title="Keys manager." href="xmlsec-notes-keysmngr.html">
-<link rel="NEXT" title="Using keys manager for signatures/encryption." href="xmlsec-notes-keys-manager-sign-enc.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Simple keys store.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<link rel="prev" href="xmlsec-notes-keysmngr.html" title="Keys manager.">
+<link rel="next" href="xmlsec-notes-keys-manager-sign-enc.html" title="Using keys manager for signatures/encryption.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-keysmngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-keysmngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-keys-manager-sign-enc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-SIMPLE-KEYS-STORE">Simple keys store.</a></h1>
-<p> XML Security Library has a built-in simple keys store
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-simple-keys-store"></a>Simple keys store.</h2></div></div></div>
+<p>
+ XML Security Library has a built-in simple keys store
implemented using a keys list. You can use it in your application
if you have a small number of keys. However, this might be not a
best option from performance point of view if you have a lot of keys.
In this case, you probably should implement your own keys store
using an SQL database or some other keys storage.
</p>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN461"></a><p><b>Example 1. Initializing keys manager and loading keys from PEM files.</b></p>
-<pre class="PROGRAMLISTING">/**
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.10.3.3.1"></a><p class="title"><b>Example 16. Initializing keys manager and loading keys from PEM files.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* load_keys:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
@@ -188,13 +105,13 @@ load_keys(char** files, int files_size) {
return(mngr);
}
</pre>
-<p><a href="xmlsec-verify-with-keys-mngr.html#XMLSEC-EXAMPLE-VERIFY2">Full program listing</a></p>
+<p><a class="link" href="xmlsec-verify-with-keys-mngr.html#xmlsec-example-verify2" title="verify2.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-keysmngr.html"><b>&lt;&lt;&lt; Keys manager.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-keys-manager-sign-enc.html"><b>Using keys manager for signatures/encryption. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-structure.html b/docs/api/xmlsec-notes-structure.html
index af17a3ac..65936848 100644
--- a/docs/api/xmlsec-notes-structure.html
+++ b/docs/api/xmlsec-notes-structure.html
@@ -1,125 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library Structure.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Overview." href="xmlsec-notes-overview.html">
-<link rel="NEXT" title="Building the application with XML Security Library." href="xmlsec-notes-compiling.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library Structure.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-overview.html" title="Overview.">
+<link rel="next" href="xmlsec-notes-compiling.html" title="Building the application with XML Security Library.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-overview.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-overview.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-compiling.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-STRUCTURE"></a>XML Security Library Structure.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-structure"></a>XML Security Library Structure.</h2></div></div></div>
<p>In order to provide the an ability to use different crypto engines,
the XML Security Library is splitted in two parts: core library (xmlsec)
- and crypto library (xmlsec-openssl, xmlsec-mscrypt, xmlsec-gnutls,
+ and crypto library (xmlsec-openssl, xmlsec-mscrypt, xmlsec-mscng, xmlsec-gnutls,
xmlsec-gcrypt, xmlsec-nss, ...).
</p>
-<div class="FIGURE">
-<a name="AEN28"></a><p><b>Figure 1. The library structure and dependencies.</b></p>
-<p><img src="images/structure.png" align="CENTER"></p>
-</div>
- <p>The core library has no dependency on any crypto library and provides
+<div class="figure">
+<a name="id-1.2.3.2.1"></a><p class="title"><b>Figure 1. The library structure and dependencies.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/structure.png" align="middle" alt="The library structure and dependencies."></div></div>
+</div>
+<p><br class="figure-break">
+ </p>
+<p>The core library has no dependency on any crypto library and provides
implementation of all the engines as well as support for all the non
crypto transforms (xml parser, c14n transforms, xpath and xslt
transforms,...). The XML Security Crypto library provides
@@ -129,10 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
code might be general enough so switching crypto engine would be
a matter of changing several #include directives.</p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-overview.html"><b>&lt;&lt;&lt; Overview.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-compiling.html"><b>Building the application with XML Security Library. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-templates.html b/docs/api/xmlsec-notes-templates.html
index fa495e8d..18ec7ddb 100644
--- a/docs/api/xmlsec-notes-templates.html
+++ b/docs/api/xmlsec-notes-templates.html
@@ -1,123 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Creating dynamic templates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Encrypting data." href="xmlsec-notes-encrypt.html">
-<link rel="NEXT" title="Creating dynamic signature templates." href="xmlsec-notes-dynamic-signature-templates.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Creating dynamic templates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-encrypt.html" title="Encrypting data.">
+<link rel="next" href="xmlsec-notes-dynamic-signature-templates.html" title="Creating dynamic signature templates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-encrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-encrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-dynamic-signature-templates.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-TEMPLATES"></a>Creating dynamic templates.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-templates.html#XMLSEC-NOTES-TEMPLATES-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></dt>
-<dt><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-templates"></a>Creating dynamic templates.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-templates.html#xmlsec-notes-templates-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-TEMPLATES-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-templates-overview"></a>Overview.</h2></div></div></div>
<p>The XML Security Library uses templates to describe
how and what data should be signed or encrypted. The template
is a regular XML file. You can create templates in advance
@@ -128,10 +40,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
inside your application.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-encrypt.html"><b>&lt;&lt;&lt; Encrypting data.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-dynamic-signature-templates.html"><b>Creating dynamic signature templates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-transforms.html b/docs/api/xmlsec-notes-transforms.html
index 35222d2a..7462f97c 100644
--- a/docs/api/xmlsec-notes-transforms.html
+++ b/docs/api/xmlsec-notes-transforms.html
@@ -1,115 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Transforms and transforms chain.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Verifing document signed with X509 certificates." href="xmlsec-notes-verify-x509.html">
-<link rel="NEXT" title="Using context objects." href="xmlsec-notes-contexts.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Transforms and transforms chain.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-verify-x509.html" title="Verifing document signed with X509 certificates.">
+<link rel="next" href="xmlsec-notes-contexts.html" title="Using context objects.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-verify-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-verify-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-contexts.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-TRANSFORMS"></a>Transforms and transforms chain.</h1>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-transforms"></a>Transforms and transforms chain.</h2></div></div></div>
<p>XML Digital Signature and XML Encryption standards are
very flexible and provide an XML developer many different ways to
sign or encrypt any part (or even parts) of an XML document.
@@ -121,18 +33,23 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
calculation digest, encrypting or decrypting. Each XML Security Library
transform provides at least one of the following callbacks:
</p>
-<p></p>
-<ul>
-<li><p> <a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBINMETHOD">push binary data</a>;
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBinMethod" title="xmlSecTransformPushBinMethod ()">push binary data</a>;
</p></li>
-<li><p> <a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXMLMETHOD">push xml data</a>;
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXmlMethod" title="xmlSecTransformPushXmlMethod ()">push xml data</a>;
</p></li>
-<li><p> <a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBINMETHOD">pop binary data</a>;
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBinMethod" title="xmlSecTransformPopBinMethod ()">pop binary data</a>;
</p></li>
-<li><p> <a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXMLMETHOD">pop xml data</a>.
+<li class="listitem"><p>
+ <a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXmlMethod" title="xmlSecTransformPopXmlMethod ()">pop xml data</a>.
</p></li>
-</ul>
- <p>One additional <a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">execute</a>
+</ul></div>
+<p>
+ </p>
+<p>One additional <a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">execute</a>
callback was added to simplify the development and reduce code size.
This callback is used by default
implementations of the four external callbacks from the list above.
@@ -141,11 +58,11 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
binary data callbacks. However, in some cases using push/pop callbacks
directly is more efficient.
</p>
-<div class="FIGURE">
-<a name="AEN610"></a><p><b>Figure 1. The XML Security Library transform.</b></p>
-<p><img src="images/transform.png" align="CENTER"></p>
+<div class="figure">
+<a name="id-1.2.12.4"></a><p class="title"><b>Figure 9. The XML Security Library transform.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/transform.png" align="middle" alt="The XML Security Library transform."></div></div>
</div>
-<p>XML Security Library constructs transforms chain according to the
+<br class="figure-break"><p>XML Security Library constructs transforms chain according to the
signature/encryption template or signed/encrypted document.
If necessary, XML Security Library inserts XML parser or defaul
canonicalization to ensure that the output data type (binary or XML)
@@ -157,21 +74,22 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
processes this chunk and pushes the result to the next transform
in the chain.
</p>
-<div class="FIGURE">
-<a name="AEN615"></a><p><b>Figure 2. Transforms chain created for <a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top">&lt;dsig:Reference/&gt;</a> element processing.</b></p>
-<p><img src="images/transforms-chain.png" align="CENTER"></p>
+<div class="figure">
+<a name="id-1.2.12.7"></a><p class="title"><b>Figure 10. Transforms chain created for &lt;dsig:Reference/&gt; element processing.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/transforms-chain.png" align="middle" alt="Transforms chain created for &lt;dsig:Reference/&gt; element processing."></div></div>
</div>
-<p> </p>
-<div class="EXAMPLE">
-<a name="AEN626"></a><p><b>Example 1. Walking through transforms chain.</b></p>
-<pre class="PROGRAMLISTING">TODO
- </pre>
+<br class="figure-break"><p>
+ </p>
+<div class="example">
+<a name="id-1.2.12.8.1"></a><p class="title"><b>Example 23. Walking through transforms chain.</b></p>
+<div class="example-contents"><pre class="programlisting">
+TODO
+ </pre></div>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-verify-x509.html"><b>&lt;&lt;&lt; Verifing document signed with X509 certificates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-contexts.html"><b>Using context objects. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-verify-decrypt.html b/docs/api/xmlsec-notes-verify-decrypt.html
index 7f1cf30c..aa55bf59 100644
--- a/docs/api/xmlsec-notes-verify-decrypt.html
+++ b/docs/api/xmlsec-notes-verify-decrypt.html
@@ -1,123 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifing and decrypting documents.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Creating dynamic encryption templates." href="xmlsec-notes-dynamic-encryption-templates.html">
-<link rel="NEXT" title="Verifying a signed document" href="xmlsec-notes-verify.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifing and decrypting documents.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-dynamic-encryption-templates.html" title="Creating dynamic encryption templates.">
+<link rel="next" href="xmlsec-notes-verify.html" title="Verifying a signed document">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-dynamic-encryption-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-dynamic-encryption-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-verify.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-VERIFY-DECRYPT"></a>Verifing and decrypting documents.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-verify-decrypt.html#XMLSEC-NOTES-VERIFY-DECRYPT-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-verify.html">Verifying a signed document</a></dt>
-<dt><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-verify-decrypt"></a>Verifing and decrypting documents.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-verify-decrypt.html#xmlsec-notes-verify-decrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify.html">Verifying a signed document</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-VERIFY-DECRYPT-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-verify-decrypt-overview"></a>Overview.</h2></div></div></div>
<p>Since the template is just an XML file, it might be created in advance
and saved in a file. It's also possible for application to create
templates without using XML Security Library functions. Also in some
@@ -128,16 +40,15 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
because all the necessary information is provided in the signed or
encrypted document.
</p>
-<div class="FIGURE">
-<a name="AEN327"></a><p><b>Figure 1. The verification or decryption processing model.</b></p>
-<p><img src="images/verif-dec-model.png" align="CENTER"></p>
-</div>
- </div>
+<div class="figure">
+<a name="id-1.2.8.2.3.1"></a><p class="title"><b>Figure 5. The verification or decryption processing model.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/verif-dec-model.png" align="middle" alt="The verification or decryption processing model."></div></div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-dynamic-encryption-templates.html"><b>&lt;&lt;&lt; Creating dynamic encryption templates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-verify.html"><b>Verifying a signed document &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<p><br class="figure-break">
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-verify-x509.html b/docs/api/xmlsec-notes-verify-x509.html
index 379aee3e..5e573104 100644
--- a/docs/api/xmlsec-notes-verify-x509.html
+++ b/docs/api/xmlsec-notes-verify-x509.html
@@ -1,137 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifing document signed with X509 certificates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Using X509 Certificates." href="xmlsec-notes-x509.html">
-<link rel="PREVIOUS" title="Signing data with X509 certificate." href="xmlsec-notes-sign-x509.html">
-<link rel="NEXT" title="Transforms and transforms chain." href="xmlsec-notes-transforms.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifing document signed with X509 certificates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-x509.html" title="Using X509 Certificates.">
+<link rel="prev" href="xmlsec-notes-sign-x509.html" title="Signing data with X509 certificate.">
+<link rel="next" href="xmlsec-notes-transforms.html" title="Transforms and transforms chain.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-sign-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-sign-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-transforms.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-VERIFY-X509">Verifing document signed with X509 certificates.</a></h1>
-<p> If the document is signed with an X509 certificate then the signature
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-verify-x509"></a>Verifing document signed with X509 certificates.</h2></div></div></div>
+<p>
+ If the document is signed with an X509 certificate then the signature
verification consist of two steps:
</p>
-<p></p>
-<ul>
-<li><p>Creating and verifing X509 certificates chain.
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>Creating and verifing X509 certificates chain.
</p></li>
-<li><p>Verifing signature itself using key exrtacted from
+<li class="listitem"><p>Verifing signature itself using key exrtacted from
a certificate verified on previous step.
</p></li>
-</ul>
+</ul></div>
+<p>
Certificates chain is constructed from certificates in a way that
each certificate in the chain is signed with previous one:
- <div class="FIGURE">
-<a name="AEN582"></a><p><b>Figure 1. Certificates chain.</b></p>
-<pre class="PROGRAMLISTING">Certificate A (signed with B) &lt;- Certificate B (signed with C) &lt;- ... &lt;- Root Certificate (signed by itself)
- </pre>
+ </p>
+<div class="figure">
+<a name="id-1.2.11.4.2.2"></a><p class="title"><b>Figure 8. Certificates chain.</b></p>
+<div class="figure-contents"><pre class="programlisting">
+Certificate A (signed with B) &lt;- Certificate B (signed with C) &lt;- ... &lt;- Root Certificate (signed by itself)
+ </pre></div>
</div>
+<p><br class="figure-break">
At the end of the chain there is a "Root Certificate" which
is signed by itself. There is no way to verify the validity of the
root certificate and application have to "trust" it
(another name for root certificates is "trusted" certificates).
- <p> Application can use <a href="xmlsec-app.html#XMLSECCRYPTOAPPKEYSMNGRCERTLOAD">xmlSecCryptoAppKeysMngrCertLoad</a>
+ </p>
+<p>
+ Application can use <a class="link" href="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoad" title="xmlSecCryptoAppKeysMngrCertLoad ()">xmlSecCryptoAppKeysMngrCertLoad</a>
function to load both "trusted" and "un-trusted"
certificates. However, the selection of "trusted"
certificates is very sensitive process and this function might be
@@ -140,9 +59,11 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
or specified in crypto engine configuration files.
Check XML Security Library API reference for more details.
</p>
-<div class="EXAMPLE">
-<a name="AEN587"></a><p><b>Example 3. Loading trusted X509 certificate.</b></p>
-<pre class="PROGRAMLISTING">/**
+<div class="example">
+<a name="id-1.2.11.4.3.2"></a><p class="title"><b>Example 22. Loading trusted X509 certificate.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* load_trusted_certs:
* @files: the list of filenames.
* @files_size: the number of filenames in #files.
@@ -191,13 +112,13 @@ load_trusted_certs(char** files, int files_size) {
return(mngr);
}
</pre>
-<p><a href="xmlsec-verify-with-x509.html#XMLSEC-EXAMPLE-VERIFY3">Full program listing</a></p>
+<p><a class="link" href="xmlsec-verify-with-x509.html#xmlsec-example-verify3" title="verify3.c">Full program listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-sign-x509.html"><b>&lt;&lt;&lt; Signing data with X509 certificate.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-transforms.html"><b>Transforms and transforms chain. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-verify.html b/docs/api/xmlsec-notes-verify.html
index f8985769..1380ba07 100644
--- a/docs/api/xmlsec-notes-verify.html
+++ b/docs/api/xmlsec-notes-verify.html
@@ -1,146 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifying a signed document</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Verifing and decrypting documents." href="xmlsec-notes-verify-decrypt.html">
-<link rel="PREVIOUS" title="Verifing and decrypting documents." href="xmlsec-notes-verify-decrypt.html">
-<link rel="NEXT" title="Decrypting an encrypted document" href="xmlsec-notes-decrypt.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifying a signed document: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes-verify-decrypt.html" title="Verifing and decrypting documents.">
+<link rel="prev" href="xmlsec-notes-verify-decrypt.html" title="Verifing and decrypting documents.">
+<link rel="next" href="xmlsec-notes-decrypt.html" title="Decrypting an encrypted document">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-verify-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-verify-decrypt.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-decrypt.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-VERIFY">Verifying a signed document</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-verify"></a>Verifying a signed document</h2></div></div></div>
<p>The typical signature verification process includes following steps:
</p>
-<p></p>
-<ul>
-<li><p> Load keys, X509 certificates, etc. in the <a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR">keys manager</a> .
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Load keys, X509 certificates, etc. in the <a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr">keys manager</a> .
</p></li>
-<li><p> Create signature context <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- using <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXCREATE">xmlSecDSigCtxCreate</a> or
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXINITIALIZE">xmlSecDSigCtxInitialize</a>
+<li class="listitem"><p>
+ Create signature context <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ using <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxCreate" title="xmlSecDSigCtxCreate ()">xmlSecDSigCtxCreate</a> or
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize" title="xmlSecDSigCtxInitialize ()">xmlSecDSigCtxInitialize</a>
functions.
</p></li>
-<li><p> Select start verification
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top"></a><a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature" target="_top">&lt;dsig:Signature/&gt;</a>
+<li class="listitem"><p>
+ Select start verification
+ <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a>
node in the signed XML document.
</p></li>
-<li><p> Verify signature by calling <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXVERIFY">xmlSecDSigCtxVerify</a>
+<li class="listitem"><p>
+ Verify signature by calling <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxVerify" title="xmlSecDSigCtxVerify ()">xmlSecDSigCtxVerify</a>
function.
</p></li>
-<li><p> Check returned value and verification status (<code class="STRUCTFIELD">status</code>
- member of <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a> structure).
- If necessary, consume returned data from the <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">context</a>.
+<li class="listitem"><p>
+ Check returned value and verification status (<em class="structfield"><code>status</code></em>
+ member of <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a> structure).
+ If necessary, consume returned data from the <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">context</a>.
</p></li>
-<li><p> Destroy signature context <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a>
- using <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDESTROY">xmlSecDSigCtxDestroy</a> or
- <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXFINALIZE">xmlSecDSigCtxFinalize</a>
+<li class="listitem"><p>
+ Destroy signature context <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a>
+ using <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy" title="xmlSecDSigCtxDestroy ()">xmlSecDSigCtxDestroy</a> or
+ <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize" title="xmlSecDSigCtxFinalize ()">xmlSecDSigCtxFinalize</a>
functions.
</p></li>
-</ul>
- <p> </p>
-<div class="EXAMPLE">
-<a name="AEN366"></a><p><b>Example 1. Verifying a document.</b></p>
-<pre class="PROGRAMLISTING">/**
+</ul></div>
+<p>
+ </p>
+<p>
+ </p>
+<div class="example">
+<a name="id-1.2.8.3.3.1"></a><p class="title"><b>Example 14. Verifying a document.</b></p>
+<div class="example-contents">
+<pre class="programlisting">
+/**
* verify_file:
* @xml_file: the signed XML file name.
* @key_file: the PEM public key file name.
@@ -221,13 +144,13 @@ done:
return(res);
}
</pre>
-<p><a href="xmlsec-verify-with-key.html#XMLSEC-EXAMPLE-VERIFY1">Full Program Listing</a></p>
+<p><a class="link" href="xmlsec-verify-with-key.html#xmlsec-example-verify1" title="verify1.c">Full Program Listing</a></p>
</div>
- </div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-verify-decrypt.html"><b>&lt;&lt;&lt; Verifing and decrypting documents.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-decrypt.html"><b>Decrypting an encrypted document &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<p><br class="example-break">
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes-x509.html b/docs/api/xmlsec-notes-x509.html
index c58f7727..34273d4d 100644
--- a/docs/api/xmlsec-notes-x509.html
+++ b/docs/api/xmlsec-notes-x509.html
@@ -1,123 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Using X509 Certificates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Implementing a custom keys store." href="xmlsec-notes-custom-keys-store.html">
-<link rel="NEXT" title="Signing data with X509 certificate." href="xmlsec-notes-sign-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Using X509 Certificates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-notes-custom-keys-store.html" title="Implementing a custom keys store.">
+<link rel="next" href="xmlsec-notes-sign-x509.html" title="Signing data with X509 certificate.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-notes-custom-keys-store.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-notes-custom-keys-store.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-sign-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NOTES-X509"></a>Using X509 Certificates.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-x509.html#XMLSEC-NOTES-X509-OVERVIEW">Overview.</a></dt>
-<dt><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></dt>
-<dt><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-notes-x509"></a>Using X509 Certificates.</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="sect1"><a href="xmlsec-notes-x509.html#xmlsec-notes-x509-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></span></dt>
</dl></div>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-NOTES-X509-OVERVIEW">Overview.</a></h1>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-notes-x509-overview"></a>Overview.</h2></div></div></div>
<p>X509 certificate is one of many possible keys data object that can be
associated with a key. Application may read and write X509 data
from/to XML file. The X509 certificates management policies significantly
@@ -128,10 +40,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-notes-custom-keys-store.html"><b>&lt;&lt;&lt; Implementing a custom keys store.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-sign-x509.html"><b>Signing data with X509 certificate. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-notes.html b/docs/api/xmlsec-notes.html
index 88c9b6f0..f47136c6 100644
--- a/docs/api/xmlsec-notes.html
+++ b/docs/api/xmlsec-notes.html
@@ -1,138 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library Tutorial</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="PREVIOUS" title="XML Security Library Reference Manual" href="index.html">
-<link rel="NEXT" title="Overview." href="xmlsec-notes-overview.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part I. XML Security Library Tutorial: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="index.html" title="XML Security Library Reference Manual">
+<link rel="prev" href="index.html" title="XML Security Library Reference Manual">
+<link rel="next" href="xmlsec-notes-overview.html" title="Overview.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-notes-overview.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="PART">
-<a name="XMLSEC-NOTES"></a><div class="TITLEPAGE">
-<h1 class="TITLE">I. XML Security Library Tutorial</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-notes-overview.html">Overview.</a></dt>
-<dt><a href="xmlsec-notes-structure.html">XML Security Library Structure.</a></dt>
-<dt><a href="xmlsec-notes-compiling.html">Building the application with XML Security Library.</a></dt>
-<dt><a href="xmlsec-notes-init-shutdown.html">Initialization and shutdown.</a></dt>
-<dt><a href="xmlsec-notes-sign-encrypt.html">Signing and encrypting documents.</a></dt>
-<dt><a href="xmlsec-notes-templates.html">Creating dynamic templates.</a></dt>
-<dt><a href="xmlsec-notes-verify-decrypt.html">Verifing and decrypting documents.</a></dt>
-<dt><a href="xmlsec-notes-keys.html">Keys.</a></dt>
-<dt><a href="xmlsec-notes-keysmngr.html">Keys manager.</a></dt>
-<dt><a href="xmlsec-notes-x509.html">Using X509 Certificates.</a></dt>
-<dt><a href="xmlsec-notes-transforms.html">Transforms and transforms chain.</a></dt>
-<dt><a href="xmlsec-notes-contexts.html">Using context objects.</a></dt>
-<dt><a href="xmlsec-notes-new-crypto.html">Adding support for new cryptographic library.</a></dt>
-<dt><a href="xmlsec-examples.html">Examples.</a></dt>
-<dt><a href="xmlsec-signature-klasses.html">APPENDIX A. XML Security Library Signature Klasses.</a></dt>
-<dt><a href="xmlsec-encryption-klasses.html">APPENDIX B. XML Security Library Encryption Klasses.</a></dt>
-</dl></div>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="xmlsec-notes"></a>Part I. XML Security Library Tutorial</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="chapter"><a href="xmlsec-notes-overview.html">Overview.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-structure.html">XML Security Library Structure.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-compiling.html">Building the application with XML Security Library.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling.html#xmlsec-notes-compiling-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-include-files.html">Include files.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-unix.html">Compiling and linking on Unix.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-windows.html">Compiling and linking on Windows.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-compiling-others.html">Compiling and linking on other systems.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-init-shutdown.html">Initialization and shutdown.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-sign-encrypt.html">Signing and encrypting documents.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-sign-encrypt.html#xmlsec-notes-sign-encrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign.html">Signing a document.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-encrypt.html">Encrypting data.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-templates.html">Creating dynamic templates.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-templates.html#xmlsec-notes-templates-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-signature-templates.html">Creating dynamic signature templates.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-dynamic-encryption-templates.html">Creating dynamic encryption templates.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-verify-decrypt.html">Verifing and decrypting documents.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-verify-decrypt.html#xmlsec-notes-verify-decrypt-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify.html">Verifying a signed document</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-decrypt.html">Decrypting an encrypted document</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-keys.html">Keys.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-keysmngr.html">Keys manager.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-keysmngr.html#xmlsec-notes-keysmngr-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-simple-keys-store.html">Simple keys store.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-manager-sign-enc.html">Using keys manager for signatures/encryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-keys-mngr-verify-decrypt.html">Using keys manager for verification/decryption.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-custom-keys-store.html">Implementing a custom keys store.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-x509.html">Using X509 Certificates.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-x509.html#xmlsec-notes-x509-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-sign-x509.html">Signing data with X509 certificate.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-verify-x509.html">Verifing document signed with X509 certificates.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-notes-transforms.html">Transforms and transforms chain.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-contexts.html">Using context objects.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-notes-new-crypto.html">Adding support for new cryptographic library.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto.html#xmlsec-notes-new-crypto-overview">Overview.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-skeleton.html">Creating a framework from the skeleton.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-functions.html">xmlSecCryptoApp* functions.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-klasses.html">Klasses and objects.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-transforms.html">Cryptographic transforms.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-keys.html">Keys data and keys data stores.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-simple-keys-mngr.html">Default keys manager.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-notes-new-crypto-sharing-results.html">Sharing the results.</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-examples.html">Examples.</a></span></dt>
+<dd><dl>
+<dt><span class="sect1"><a href="xmlsec-examples.html#xmlsec-examples-overview">XML Security Library Examples.</a></span></dt>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-template-file.html">Signing a template file.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1">sign1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-tmpl">sign1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-template-file.html#xmlsec-example-sign1-res">sign1-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-dynamimc-template.html">Signing a dynamicaly created template.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2">sign2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-doc">sign2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-dynamimc-template.html#xmlsec-example-sign2-res">sign2-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-examples-sign-x509.html">Signing with X509 certificate.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3">sign3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-doc">sign3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-examples-sign-x509.html#xmlsec-example-sign3-res">sign3-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-key.html">Verifying a signature with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-key.html#xmlsec-example-verify1">verify1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-keys-mngr.html">Verifying a signature with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-keys-mngr.html#xmlsec-example-verify2">verify2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-x509.html">Verifying a signature with X509 certificates.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-verify-with-x509.html#xmlsec-example-verify3">verify3.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-verify-with-restrictions.html">Verifying a signature with additional restrictions.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4">verify4.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-tmpl">verify4-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-res">verify4-res.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-tmpl">verify4-bad-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-verify-with-restrictions.html#xmlsec-example-verify4-bad-res">verify4-bad-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-template-file.html">Encrypting data with a template file.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1">encrypt1.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-tmpl">encrypt1-tmpl.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-template-file.html#xmlsec-example-encrypt1-res">encrypt1-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-dynamic-template.html">Encrypting data with a dynamicaly created template.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2">encrypt2.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-doc">encrypt2-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-dynamic-template.html#xmlsec-example-encrypt2-res">encrypt2-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-encrypt-with-session-key.html">Encrypting data with a session key.</a></span></dt>
+<dd><dl>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3">encrypt3.c</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-doc">encrypt3-doc.xml</a></span></dt>
+<dt><span class="sect2"><a href="xmlsec-encrypt-with-session-key.html#xmlsec-example-encrypt3-res">encrypt3-res.xml</a></span></dt>
+</dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-signle-key.html">Decrypting data with a single key.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-signle-key.html#xmlsec-example-decrypt1">decrypt1.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-decrypt-with-keys-mngr.html">Decrypting data with keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-decrypt-with-keys-mngr.html#xmlsec-example-decrypt2">decrypt2.c</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="xmlsec-custom-keys-manager.html">Writing a custom keys manager.</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="xmlsec-custom-keys-manager.html#xmlsec-example-decrypt3">decrypt3.c</a></span></dt></dl></dd>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-signature-klasses.html">APPENDIX A. XML Security Library Signature Klasses.</a></span></dt>
+<dt><span class="chapter"><a href="xmlsec-encryption-klasses.html">APPENDIX B. XML Security Library Encryption Klasses.</a></span></dt>
+</dl>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="index.html"><b>&lt;&lt;&lt; XML Security Library Reference Manual</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-notes-overview.html"><b>Overview. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-app.html b/docs/api/xmlsec-nss-app.html
index 0f644503..18946b81 100644
--- a/docs/api/xmlsec-nss-app.html
+++ b/docs/api/xmlsec-nss-app.html
@@ -1,1125 +1,1051 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="NEXT" title="bignum" href="xmlsec-nss-bignum.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="next" href="xmlsec-nss-bignum.html" title="bignum">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-app.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-bignum.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN38414"></a><h2>Name</h2>app -- Application functions implementation for NSS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38419"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPINIT">xmlSecNssAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppInit" title="xmlSecNssAppInit ()">xmlSecNssAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPSHUTDOWN">xmlSecNssAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppShutdown" title="xmlSecNssAppShutdown ()">xmlSecNssAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRINIT">xmlSecNssAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrInit" title="xmlSecNssAppDefaultKeysMngrInit ()">xmlSecNssAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecNssAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrAdoptKey" title="xmlSecNssAppDefaultKeysMngrAdoptKey ()">xmlSecNssAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRLOAD">xmlSecNssAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrLoad" title="xmlSecNssAppDefaultKeysMngrLoad ()">xmlSecNssAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRSAVE">xmlSecNssAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrSave" title="xmlSecNssAppDefaultKeysMngrSave ()">xmlSecNssAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOAD">xmlSecNssAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoad" title="xmlSecNssAppKeysMngrCertLoad ()">xmlSecNssAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOADMEMORY">xmlSecNssAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadMemory" title="xmlSecNssAppKeysMngrCertLoadMemory ()">xmlSecNssAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYSMNGRCERTLOADSECITEM">xmlSecNssAppKeysMngrCertLoadSECItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadSECItem" title="xmlSecNssAppKeysMngrCertLoadSECItem ()">xmlSecNssAppKeysMngrCertLoadSECItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOAD">xmlSecNssAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoad" title="xmlSecNssAppKeyLoad ()">xmlSecNssAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOADMEMORY">xmlSecNssAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoadMemory" title="xmlSecNssAppKeyLoadMemory ()">xmlSecNssAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYLOADSECITEM">xmlSecNssAppKeyLoadSECItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyLoadSECItem" title="xmlSecNssAppKeyLoadSECItem ()">xmlSecNssAppKeyLoadSECItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOAD">xmlSecNssAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12Load" title="xmlSecNssAppPkcs12Load ()">xmlSecNssAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOADMEMORY">xmlSecNssAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadMemory" title="xmlSecNssAppPkcs12LoadMemory ()">xmlSecNssAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPPKCS12LOADSECITEM">xmlSecNssAppPkcs12LoadSECItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadSECItem" title="xmlSecNssAppPkcs12LoadSECItem ()">xmlSecNssAppPkcs12LoadSECItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOAD">xmlSecNssAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoad" title="xmlSecNssAppKeyCertLoad ()">xmlSecNssAppKeyCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOADMEMORY">xmlSecNssAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadMemory" title="xmlSecNssAppKeyCertLoadMemory ()">xmlSecNssAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYCERTLOADSECITEM">xmlSecNssAppKeyCertLoadSECItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadSECItem" title="xmlSecNssAppKeyCertLoadSECItem ()">xmlSecNssAppKeyCertLoadSECItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPKEYFROMCERTLOADSECITEM">xmlSecNssAppKeyFromCertLoadSECItem</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppKeyFromCertLoadSECItem" title="xmlSecNssAppKeyFromCertLoadSECItem ()">xmlSecNssAppKeyFromCertLoadSECItem</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-nss-app.html#XMLSECNSSAPPGETDEFAULTPWDCALLBACK">xmlSecNssAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-app.html#xmlSecNssAppGetDefaultPwdCallback" title="xmlSecNssAppGetDefaultPwdCallback ()">xmlSecNssAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Application functions implementation for NSS.</p>
+<div class="refsect1">
+<a name="xmlsec-nss-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPINIT"></a><h3>xmlSecNssAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNssAppInit"></a><h3>xmlSecNssAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN38579"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38581"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the path to NSS database files.</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to NSS database files.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38590"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPSHUTDOWN"></a><h3>xmlSecNssAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppShutdown"></a><h3>xmlSecNssAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN38604"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecNssAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with NSS keys store <a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREID"><span class="TYPE">xmlSecNssKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecNssAppDefaultKeysMngrInit"></a><h3>xmlSecNssAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with NSS keys store <a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreId" title="xmlSecNssKeysStoreId"><span class="type">xmlSecNssKeysStoreId</span></a>
and a default NSS crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN38621"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38623"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN38632"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecNssAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppDefaultKeysMngrAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecNssAppDefaultKeysMngrInit</span></a>
+<div class="refsect2">
+<a name="xmlSecNssAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecNssAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppDefaultKeysMngrAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrInit" title="xmlSecNssAppDefaultKeysMngrInit ()"><span class="type">xmlSecNssAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN38653"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38655"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN38670"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecNssAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecNssAppDefaultKeysMngrLoad"></a><h3>xmlSecNssAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecNssAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN38691"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38693"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrInit" title="xmlSecNssAppDefaultKeysMngrInit ()"><span class="type">xmlSecNssAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN38708"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecNssAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecNssAppDefaultKeysMngrSave"></a><h3>xmlSecNssAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN38729"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38731"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38752"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecNssAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeysMngrCertLoad"></a><h3>xmlSecNssAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code></p>
-<div class="REFSECT3">
-<a name="AEN38777"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38779"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+untrusted certs in <em class="parameter"><code>store</code></em>
+</p>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format (PEM or DER).</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format (PEM or DER).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38806"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecNssAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeysMngrCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeysMngrCertLoadMemory"></a><h3>xmlSecNssAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeysMngrCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code></p>
-<div class="REFSECT3">
-<a name="AEN38834"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38836"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+untrusted certs in <em class="parameter"><code>store</code></em>
+</p>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the key binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the key binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate format (PEM or DER).</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate format (PEM or DER).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38869"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYSMNGRCERTLOADSECITEM"></a><h3>xmlSecNssAppKeysMngrCertLoadSECItem ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeysMngrCertLoadSECItem (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *secItem</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">secItem</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeysMngrCertLoadSECItem"></a><h3>xmlSecNssAppKeysMngrCertLoadSECItem ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeysMngrCertLoadSECItem (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">SECItem</span></font> *secItem</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>secItem</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code></p>
-<div class="REFSECT3">
-<a name="AEN38894"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38896"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+untrusted certs in <em class="parameter"><code>store</code></em>
+</p>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoadSECItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>secItem</p></td>
-<td><p>the pointer to SECItem.</p></td>
-<td> </td>
+<td class="parameter_name"><p>secItem</p></td>
+<td class="parameter_description"><p>the pointer to SECItem.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate format (PEM or DER).</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate format (PEM or DER).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN38923"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeysMngrCertLoadSECItem.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYLOAD"></a><h3>xmlSecNssAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyLoad"></a><h3>xmlSecNssAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from a file</p>
-<div class="REFSECT3">
-<a name="AEN38949"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN38951"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN38984"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYLOADMEMORY"></a><h3>xmlSecNssAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
-<p>Reads key from a binary <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyLoadMemory"></a><h3>xmlSecNssAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
+<p>Reads key from a binary <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN39014"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39016"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the key binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the key binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key data format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key data format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key data2 password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key data2 password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN39055"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYLOADSECITEM"></a><h3>xmlSecNssAppKeyLoadSECItem ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppKeyLoadSECItem (<code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *secItem</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyLoadSECItem"></a><h3>xmlSecNssAppKeyLoadSECItem ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppKeyLoadSECItem (<em class="parameter"><code><font><span class="type">SECItem</span></font> *secItem</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from a file</p>
-<div class="REFSECT3">
-<a name="AEN39081"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39083"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoadSECItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>secItem</p></td>
-<td><p>the pointer to sec item.</p></td>
-<td> </td>
+<td class="parameter_name"><p>secItem</p></td>
+<td class="parameter_description"><p>the pointer to sec item.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN39116"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyLoadSECItem.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPPKCS12LOAD"></a><h3>xmlSecNssAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppPkcs12Load"></a><h3>xmlSecNssAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file.
For uniformity, call xmlSecNssAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN39139"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39141"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39168"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPPKCS12LOADMEMORY"></a><h3>xmlSecNssAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppPkcs12LoadMemory"></a><h3>xmlSecNssAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 binary data.
For uniformity, call xmlSecNssAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN39194"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39196"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the key binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the key binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39229"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPPKCS12LOADSECITEM"></a><h3>xmlSecNssAppPkcs12LoadSECItem ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppPkcs12LoadSECItem (<code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *secItem</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppPkcs12LoadSECItem"></a><h3>xmlSecNssAppPkcs12LoadSECItem ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppPkcs12LoadSECItem (<em class="parameter"><code><font><span class="type">SECItem</span></font> *secItem</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 SECItem.
For uniformity, call xmlSecNssAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN39252"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39254"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12LoadSECItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>secItem</p></td>
-<td><p>the <code class="PARAMETER">SECItem</code>
+<td class="parameter_name"><p>secItem</p></td>
+<td class="parameter_description"><p>the <em class="parameter"><code>SECItem</code></em>
object.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39282"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppPkcs12LoadSECItem.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYCERTLOAD"></a><h3>xmlSecNssAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyCertLoad"></a><h3>xmlSecNssAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key</p>
-<div class="REFSECT3">
-<a name="AEN39303"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39305"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39326"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYCERTLOADMEMORY"></a><h3>xmlSecNssAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyCertLoadMemory"></a><h3>xmlSecNssAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from <em class="parameter"><code>data</code></em>
and adds it to key</p>
-<div class="REFSECT3">
-<a name="AEN39350"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39352"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the key binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the key binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the key binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the key binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN39379"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYCERTLOADSECITEM"></a><h3>xmlSecNssAppKeyCertLoadSECItem ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssAppKeyCertLoadSECItem (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *secItem</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from <code class="PARAMETER">secItem</code>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyCertLoadSECItem"></a><h3>xmlSecNssAppKeyCertLoadSECItem ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssAppKeyCertLoadSECItem (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">SECItem</span></font> *secItem</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from <em class="parameter"><code>secItem</code></em>
and adds it to key</p>
-<div class="REFSECT3">
-<a name="AEN39400"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39402"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoadSECItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>secItem</p></td>
-<td><p>the pointer to SECItem.</p></td>
-<td> </td>
+<td class="parameter_name"><p>secItem</p></td>
+<td class="parameter_description"><p>the pointer to SECItem.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN39423"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyCertLoadSECItem.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPKEYFROMCERTLOADSECITEM"></a><h3>xmlSecNssAppKeyFromCertLoadSECItem ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecNssAppKeyFromCertLoadSECItem (<code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *secItem</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppKeyFromCertLoadSECItem"></a><h3>xmlSecNssAppKeyFromCertLoadSECItem ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecNssAppKeyFromCertLoadSECItem (<em class="parameter"><code><font><span class="type">SECItem</span></font> *secItem</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Loads public key from cert.</p>
-<div class="REFSECT3">
-<a name="AEN39440"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39442"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssAppKeyFromCertLoadSECItem.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>secItem</p></td>
-<td><p>the <code class="PARAMETER">SECItem</code>
+<td class="parameter_name"><p>secItem</p></td>
+<td class="parameter_description"><p>the <em class="parameter"><code>SECItem</code></em>
object.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the cert format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the cert format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN39458"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppKeyFromCertLoadSECItem.returns"></a><h4>Returns</h4>
<p> pointer to key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecNssAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
-xmlSecNssAppGetDefaultPwdCallback (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssAppGetDefaultPwdCallback"></a><h3>xmlSecNssAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecNssAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN39471"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-nss-app.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-ref.html"><b>&lt;&lt;&lt; XML Security Library for NSS API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-bignum.html"><b>bignum &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-bignum.html b/docs/api/xmlsec-nss-bignum.html
index 85169cb2..51b756fd 100644
--- a/docs/api/xmlsec-nss-bignum.html
+++ b/docs/api/xmlsec-nss-bignum.html
@@ -1,250 +1,169 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>bignum</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-nss-app.html">
-<link rel="NEXT" title="crypto" href="xmlsec-nss-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>bignum: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-app.html" title="app">
+<link rel="next" href="xmlsec-nss-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-bignum.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-BIGNUM"></a>bignum</h1>
-<div class="REFNAMEDIV">
-<a name="AEN39482"></a><h2>Name</h2>bignum -- Big numbers helper functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-BIGNUM.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39487"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-bignum"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-bignum.top_of_page"></a>bignum</span></h2>
+<p>bignum — Big numbers support functions implementation for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-bignum.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-bignum.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>
-<font><span class="RETURNVALUE">SECItem</span></font> *</td>
-<td>
-<a href="xmlsec-nss-bignum.html#XMLSECNSSNODEGETBIGNUMVALUE">xmlSecNssNodeGetBigNumValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">SECItem</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-bignum.html#xmlSecNssNodeGetBigNumValue" title="xmlSecNssNodeGetBigNumValue ()">xmlSecNssNodeGetBigNumValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-bignum.html#XMLSECNSSNODESETBIGNUMVALUE">xmlSecNssNodeSetBigNumValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-bignum.html#xmlSecNssNodeSetBigNumValue" title="xmlSecNssNodeSetBigNumValue ()">xmlSecNssNodeSetBigNumValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-BIGNUM.DESCRIPTION"></a><h2>Description</h2>
-<p>Big numbers helper functions.</p>
+<div class="refsect1">
+<a name="xmlsec-nss-bignum.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-BIGNUM.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSNODEGETBIGNUMVALUE"></a><h3>xmlSecNssNodeGetBigNumValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">SECItem</span></font> *
-xmlSecNssNodeGetBigNumValue (<code class="PARAMETER"><font><span class="TYPE">PRArenaPool</span></font> *arena</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><font><span class="TYPE">SECItem</span></font> *a</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-bignum.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNssNodeGetBigNumValue"></a><h3>xmlSecNssNodeGetBigNumValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">SECItem</span></font> *
+xmlSecNssNodeGetBigNumValue (<em class="parameter"><code><font><span class="type">PRArenaPool</span></font> *arena</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><font><span class="type">SECItem</span></font> *a</code></em>);</pre>
<p>Converts the node content from CryptoBinary format
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-CryptoBinary</span></font>)
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-CryptoBinary</span></font>)
to a SECItem. If no SECItem object provided then a new
one is created (caller is responsible for freeing it).</p>
-<div class="REFSECT3">
-<a name="AEN39528"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39530"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssNodeGetBigNumValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>arena</p></td>
-<td><p>the arena from which to allocate memory</p></td>
-<td> </td>
+<td class="parameter_name"><p>arena</p></td>
+<td class="parameter_description"><p>the arena from which to allocate memory</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the poitner to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>a</p></td>
-<td><p>a SECItem object to hold the BigNum value</p></td>
-<td> </td>
+<td class="parameter_name"><p>a</p></td>
+<td class="parameter_description"><p>a SECItem object to hold the BigNum value</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39551"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssNodeGetBigNumValue.returns"></a><h4>Returns</h4>
<p> a pointer to SECItem produced from CryptoBinary string
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSNODESETBIGNUMVALUE"></a><h3>xmlSecNssNodeSetBigNumValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssNodeSetBigNumValue (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER">const <font><span class="TYPE">SECItem</span></font> *a</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> addLineBreaks</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssNodeSetBigNumValue"></a><h3>xmlSecNssNodeSetBigNumValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssNodeSetBigNumValue (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">SECItem</span></font> *a</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> addLineBreaks</code></em>);</pre>
<p>Converts SECItem to CryptoBinary string
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-CryptoBinary</span></font>)
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-CryptoBinary</span></font>)
and sets it as the content of the given node. If the
addLineBreaks is set then line breaks are added
before and after the CryptoBinary string.</p>
-<div class="REFSECT3">
-<a name="AEN39573"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39575"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssNodeSetBigNumValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>a</p></td>
-<td><p>a SECItem containing the BigNum value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>a</p></td>
+<td class="parameter_description"><p>a SECItem containing the BigNum value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>addLineBreaks</p></td>
-<td><p>if the flag is equal to 1 then
+<td class="parameter_name"><p>addLineBreaks</p></td>
+<td class="parameter_description"><p>if the flag is equal to 1 then
linebreaks will be added before and after
new buffer content.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN39596"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssNodeSetBigNumValue.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 otherwise.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-BIGNUM.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-nss-bignum.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-crypto.html"><b>crypto &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-crypto.html b/docs/api/xmlsec-nss-crypto.html
index 3344513f..4ebf65fb 100644
--- a/docs/api/xmlsec-nss-crypto.html
+++ b/docs/api/xmlsec-nss-crypto.html
@@ -1,1425 +1,1712 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>crypto</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="bignum" href="xmlsec-nss-bignum.html">
-<link rel="NEXT" title="keysstore" href="xmlsec-nss-keysstore.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-bignum.html" title="bignum">
+<link rel="next" href="xmlsec-nss-keysstore.html" title="keysstore">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-bignum.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-crypto.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-bignum.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-keysstore.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-CRYPTO"></a>crypto</h1>
-<div class="REFNAMEDIV">
-<a name="AEN39607"></a><h2>Name</h2>crypto -- Crypto transforms implementation for NSS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-CRYPTO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39612"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECCRYPTOGETFUNCTIONS-NSS">xmlSecCryptoGetFunctions_nss</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecCryptoGetFunctions-nss" title="xmlSecCryptoGetFunctions_nss ()">xmlSecCryptoGetFunctions_nss</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSINIT">xmlSecNssInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssInit" title="xmlSecNssInit ()">xmlSecNssInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSSHUTDOWN">xmlSecNssShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssShutdown" title="xmlSecNssShutdown ()">xmlSecNssShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYSMNGRINIT">xmlSecNssKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeysMngrInit" title="xmlSecNssKeysMngrInit ()">xmlSecNssKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSGENERATERANDOM">xmlSecNssGenerateRandom</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssGenerateRandom" title="xmlSecNssGenerateRandom ()">xmlSecNssGenerateRandom</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSERRORSDEFAULTCALLBACK">xmlSecNssErrorsDefaultCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssErrorsDefaultCallback" title="xmlSecNssErrorsDefaultCallback ()">xmlSecNssErrorsDefaultCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">PK11SlotInfo</span></font> *</td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSGETINTERNALKEYSLOT">xmlSecNssGetInternalKeySlot</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">PK11SlotInfo</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssGetInternalKeySlot" title="xmlSecNssGetInternalKeySlot ()">xmlSecNssGetInternalKeySlot</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESGETKLASS">xmlSecNssKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesGetKlass" title="xmlSecNssKeyDataAesGetKlass ()">xmlSecNssKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESSET">xmlSecNssKeyDataAesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesSet" title="xmlSecNssKeyDataAesSet ()">xmlSecNssKeyDataAesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES128CBCGETKLASS">xmlSecNssTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcGetKlass" title="xmlSecNssTransformAes128CbcGetKlass ()">xmlSecNssTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES192CBCGETKLASS">xmlSecNssTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcGetKlass" title="xmlSecNssTransformAes192CbcGetKlass ()">xmlSecNssTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES256CBCGETKLASS">xmlSecNssTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcGetKlass" title="xmlSecNssTransformAes256CbcGetKlass ()">xmlSecNssTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES128GETKLASS">xmlSecNssTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128GetKlass" title="xmlSecNssTransformKWAes128GetKlass ()">xmlSecNssTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES192GETKLASS">xmlSecNssTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192GetKlass" title="xmlSecNssTransformKWAes192GetKlass ()">xmlSecNssTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES256GETKLASS">xmlSecNssTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256GetKlass" title="xmlSecNssTransformKWAes256GetKlass ()">xmlSecNssTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESGETKLASS">xmlSecNssKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesGetKlass" title="xmlSecNssKeyDataDesGetKlass ()">xmlSecNssKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESSET">xmlSecNssKeyDataDesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesSet" title="xmlSecNssKeyDataDesSet ()">xmlSecNssKeyDataDesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDES3CBCGETKLASS">xmlSecNssTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcGetKlass" title="xmlSecNssTransformDes3CbcGetKlass ()">xmlSecNssTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3GETKLASS">xmlSecNssTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3GetKlass" title="xmlSecNssTransformKWDes3GetKlass ()">xmlSecNssTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADSAGETKLASS">xmlSecNssKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaGetKlass" title="xmlSecNssKeyDataDsaGetKlass ()">xmlSecNssKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDSASHA1GETKLASS">xmlSecNssTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1GetKlass" title="xmlSecNssTransformDsaSha1GetKlass ()">xmlSecNssTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSHMACGETMINOUTPUTLENGTH">xmlSecNssHmacGetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256GetKlass" title="xmlSecNssTransformDsaSha256GetKlass ()">xmlSecNssTransformDsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSHMACSETMINOUTPUTLENGTH">xmlSecNssHmacSetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaGetKlass" title="xmlSecNssKeyDataEcdsaGetKlass ()">xmlSecNssKeyDataEcdsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACGETKLASS">xmlSecNssKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1GetKlass" title="xmlSecNssTransformEcdsaSha1GetKlass ()">xmlSecNssTransformEcdsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACSET">xmlSecNssKeyDataHmacSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224GetKlass" title="xmlSecNssTransformEcdsaSha224GetKlass ()">xmlSecNssTransformEcdsaSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACMD5GETKLASS">xmlSecNssTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256GetKlass" title="xmlSecNssTransformEcdsaSha256GetKlass ()">xmlSecNssTransformEcdsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACRIPEMD160GETKLASS">xmlSecNssTransformHmacRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384GetKlass" title="xmlSecNssTransformEcdsaSha384GetKlass ()">xmlSecNssTransformEcdsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA1GETKLASS">xmlSecNssTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512GetKlass" title="xmlSecNssTransformEcdsaSha512GetKlass ()">xmlSecNssTransformEcdsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA256GETKLASS">xmlSecNssTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssHmacGetMinOutputLength" title="xmlSecNssHmacGetMinOutputLength ()">xmlSecNssHmacGetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA384GETKLASS">xmlSecNssTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssHmacSetMinOutputLength" title="xmlSecNssHmacSetMinOutputLength ()">xmlSecNssHmacSetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA512GETKLASS">xmlSecNssTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacGetKlass" title="xmlSecNssKeyDataHmacGetKlass ()">xmlSecNssKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATARSAGETKLASS">xmlSecNssKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacSet" title="xmlSecNssKeyDataHmacSet ()">xmlSecNssKeyDataHmacSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAMD5GETKLASS">xmlSecNssTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5GetKlass" title="xmlSecNssTransformHmacMd5GetKlass ()">xmlSecNssTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA1GETKLASS">xmlSecNssTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160GetKlass" title="xmlSecNssTransformHmacRipemd160GetKlass ()">xmlSecNssTransformHmacRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA256GETKLASS">xmlSecNssTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1GetKlass" title="xmlSecNssTransformHmacSha1GetKlass ()">xmlSecNssTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA384GETKLASS">xmlSecNssTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224GetKlass" title="xmlSecNssTransformHmacSha224GetKlass ()">xmlSecNssTransformHmacSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA512GETKLASS">xmlSecNssTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256GetKlass" title="xmlSecNssTransformHmacSha256GetKlass ()">xmlSecNssTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1GETKLASS">xmlSecNssTransformRsaPkcs1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384GetKlass" title="xmlSecNssTransformHmacSha384GetKlass ()">xmlSecNssTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAOAEPGETKLASS">xmlSecNssTransformRsaOaepGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512GetKlass" title="xmlSecNssTransformHmacSha512GetKlass ()">xmlSecNssTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA1GETKLASS">xmlSecNssTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaGetKlass" title="xmlSecNssKeyDataRsaGetKlass ()">xmlSecNssKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA256GETKLASS">xmlSecNssTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5GetKlass" title="xmlSecNssTransformRsaMd5GetKlass ()">xmlSecNssTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA384GETKLASS">xmlSecNssTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1GetKlass" title="xmlSecNssTransformRsaSha1GetKlass ()">xmlSecNssTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224GetKlass" title="xmlSecNssTransformRsaSha224GetKlass ()">xmlSecNssTransformRsaSha224GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256GetKlass" title="xmlSecNssTransformRsaSha256GetKlass ()">xmlSecNssTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384GetKlass" title="xmlSecNssTransformRsaSha384GetKlass ()">xmlSecNssTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512GetKlass" title="xmlSecNssTransformRsaSha512GetKlass ()">xmlSecNssTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1GetKlass" title="xmlSecNssTransformRsaPkcs1GetKlass ()">xmlSecNssTransformRsaPkcs1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA512GETKLASS">xmlSecNssTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepGetKlass" title="xmlSecNssTransformRsaOaepGetKlass ()">xmlSecNssTransformRsaOaepGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMMD5GETKLASS">xmlSecNssTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha1GetKlass" title="xmlSecNssTransformSha1GetKlass ()">xmlSecNssTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha224GetKlass" title="xmlSecNssTransformSha224GetKlass ()">xmlSecNssTransformSha224GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha256GetKlass" title="xmlSecNssTransformSha256GetKlass ()">xmlSecNssTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha384GetKlass" title="xmlSecNssTransformSha384GetKlass ()">xmlSecNssTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha512GetKlass" title="xmlSecNssTransformSha512GetKlass ()">xmlSecNssTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformMd5GetKlass" title="xmlSecNssTransformMd5GetKlass ()">xmlSecNssTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-CRYPTO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN39925"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESID">xmlSecNssKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesId" title="xmlSecNssKeyDataAesId">xmlSecNssKeyDataAesId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcId" title="xmlSecNssTransformAes128CbcId">xmlSecNssTransformAes128CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcId" title="xmlSecNssTransformAes192CbcId">xmlSecNssTransformAes192CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcId" title="xmlSecNssTransformAes256CbcId">xmlSecNssTransformAes256CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128Id" title="xmlSecNssTransformKWAes128Id">xmlSecNssTransformKWAes128Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192Id" title="xmlSecNssTransformKWAes192Id">xmlSecNssTransformKWAes192Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256Id" title="xmlSecNssTransformKWAes256Id">xmlSecNssTransformKWAes256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesId" title="xmlSecNssKeyDataDesId">xmlSecNssKeyDataDesId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcId" title="xmlSecNssTransformDes3CbcId">xmlSecNssTransformDes3CbcId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3Id" title="xmlSecNssTransformKWDes3Id">xmlSecNssTransformKWDes3Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaId" title="xmlSecNssKeyDataDsaId">xmlSecNssKeyDataDsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES128CBCID">xmlSecNssTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1Id" title="xmlSecNssTransformDsaSha1Id">xmlSecNssTransformDsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES192CBCID">xmlSecNssTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256Id" title="xmlSecNssTransformDsaSha256Id">xmlSecNssTransformDsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMAES256CBCID">xmlSecNssTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaId" title="xmlSecNssKeyDataEcdsaId">xmlSecNssKeyDataEcdsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES128ID">xmlSecNssTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1Id" title="xmlSecNssTransformEcdsaSha1Id">xmlSecNssTransformEcdsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES192ID">xmlSecNssTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224Id" title="xmlSecNssTransformEcdsaSha224Id">xmlSecNssTransformEcdsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES256ID">xmlSecNssTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256Id" title="xmlSecNssTransformEcdsaSha256Id">xmlSecNssTransformEcdsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADESID">xmlSecNssKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384Id" title="xmlSecNssTransformEcdsaSha384Id">xmlSecNssTransformEcdsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDES3CBCID">xmlSecNssTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512Id" title="xmlSecNssTransformEcdsaSha512Id">xmlSecNssTransformEcdsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3ID">xmlSecNssTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacId" title="xmlSecNssKeyDataHmacId">xmlSecNssKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATADSAID">xmlSecNssKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5Id" title="xmlSecNssTransformHmacMd5Id">xmlSecNssTransformHmacMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMDSASHA1ID">xmlSecNssTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160Id" title="xmlSecNssTransformHmacRipemd160Id">xmlSecNssTransformHmacRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAHMACID">xmlSecNssKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1Id" title="xmlSecNssTransformHmacSha1Id">xmlSecNssTransformHmacSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACMD5ID">xmlSecNssTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224Id" title="xmlSecNssTransformHmacSha224Id">xmlSecNssTransformHmacSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACRIPEMD160ID">xmlSecNssTransformHmacRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256Id" title="xmlSecNssTransformHmacSha256Id">xmlSecNssTransformHmacSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA1ID">xmlSecNssTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384Id" title="xmlSecNssTransformHmacSha384Id">xmlSecNssTransformHmacSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA256ID">xmlSecNssTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512Id" title="xmlSecNssTransformHmacSha512Id">xmlSecNssTransformHmacSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA384ID">xmlSecNssTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaId" title="xmlSecNssKeyDataRsaId">xmlSecNssKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMHMACSHA512ID">xmlSecNssTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5Id" title="xmlSecNssTransformRsaMd5Id">xmlSecNssTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATARSAID">xmlSecNssKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1Id" title="xmlSecNssTransformRsaSha1Id">xmlSecNssTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAMD5ID">xmlSecNssTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224Id" title="xmlSecNssTransformRsaSha224Id">xmlSecNssTransformRsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA1ID">xmlSecNssTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256Id" title="xmlSecNssTransformRsaSha256Id">xmlSecNssTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA256ID">xmlSecNssTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384Id" title="xmlSecNssTransformRsaSha384Id">xmlSecNssTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA384ID">xmlSecNssTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512Id" title="xmlSecNssTransformRsaSha512Id">xmlSecNssTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA512ID">xmlSecNssTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1Id" title="xmlSecNssTransformRsaPkcs1Id">xmlSecNssTransformRsaPkcs1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1ID">xmlSecNssTransformRsaPkcs1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepId" title="xmlSecNssTransformRsaOaepId">xmlSecNssTransformRsaOaepId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAOAEPID">xmlSecNssTransformRsaOaepId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha1Id" title="xmlSecNssTransformSha1Id">xmlSecNssTransformSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA1ID">xmlSecNssTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha224Id" title="xmlSecNssTransformSha224Id">xmlSecNssTransformSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA256ID">xmlSecNssTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha256Id" title="xmlSecNssTransformSha256Id">xmlSecNssTransformSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA384ID">xmlSecNssTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha384Id" title="xmlSecNssTransformSha384Id">xmlSecNssTransformSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMSHA512ID">xmlSecNssTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformSha512Id" title="xmlSecNssTransformSha512Id">xmlSecNssTransformSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMMD5ID">xmlSecNssTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-crypto.html#xmlSecNssTransformMd5Id" title="xmlSecNssTransformMd5Id">xmlSecNssTransformMd5Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-CRYPTO.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto transforms implementation for NSS.</p>
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-CRYPTO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOGETFUNCTIONS-NSS"></a><h3>xmlSecCryptoGetFunctions_nss ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoGetFunctions_nss (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-nss"></a><h3>xmlSecCryptoGetFunctions_nss ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_nss (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the pointer to xmlsec-nss functions table.</p>
-<div class="REFSECT3">
-<a name="AEN40071"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-nss.returns"></a><h4>Returns</h4>
<p> the xmlsec-nss functions table or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSINIT"></a><h3>xmlSecNssInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssInit"></a><h3>xmlSecNssInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN40084"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSSHUTDOWN"></a><h3>xmlSecNssShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssShutdown"></a><h3>xmlSecNssShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN40097"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSMNGRINIT"></a><h3>xmlSecNssKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeysMngrInit"></a><h3>xmlSecNssKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds NSS specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN40111"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40113"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN40122"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSGENERATERANDOM"></a><h3>xmlSecNssGenerateRandom ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssGenerateRandom (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Generates <code class="PARAMETER">size</code>
- random bytes and puts result in <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecNssGenerateRandom"></a><h3>xmlSecNssGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN40141"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40143"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the destination buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the numer of bytes to generate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN40158"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssGenerateRandom.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSERRORSDEFAULTCALLBACK"></a><h3>xmlSecNssErrorsDefaultCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecNssErrorsDefaultCallback (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>);</pre>
-<p>The default errors reporting callback function.</p>
-<div class="REFSECT3">
-<a name="AEN40190"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40192"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecNssErrorsDefaultCallback"></a><h3>xmlSecNssErrorsDefaultCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecNssErrorsDefaultCallback (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>);</pre>
+<p>The errors reporting callback function. Just a pass through to the default callback.</p>
+<div class="refsect3">
+<a name="xmlSecNssErrorsDefaultCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location file name (__FILE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location file name (__FILE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function name (__FUNCTION__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function name (__FUNCTION__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the additional error message.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the additional error message.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSGETINTERNALKEYSLOT"></a><h3>xmlSecNssGetInternalKeySlot ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">PK11SlotInfo</span></font> *
-xmlSecNssGetInternalKeySlot (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssGetInternalKeySlot"></a><h3>xmlSecNssGetInternalKeySlot ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">PK11SlotInfo</span></font> *
+xmlSecNssGetInternalKeySlot (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets internal NSS key slot.</p>
-<div class="REFSECT3">
-<a name="AEN40247"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssGetInternalKeySlot.returns"></a><h4>Returns</h4>
<p> internal key slot and initializes it if needed.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAAESGETKLASS"></a><h3>xmlSecNssKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataAesGetKlass"></a><h3>xmlSecNssKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN40260"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAAESSET"></a><h3>xmlSecNssKeyDataAesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataAesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataAesSet"></a><h3>xmlSecNssKeyDataAesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataAesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of AES key data.</p>
-<div class="REFSECT3">
-<a name="AEN40280"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40282"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataAesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to AES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to AES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN40303"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataAesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecNssTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformAes128CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes128CbcGetKlass"></a><h3>xmlSecNssTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformAes128CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40316"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecNssTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformAes192CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes192CbcGetKlass"></a><h3>xmlSecNssTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformAes192CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40329"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecNssTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformAes256CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes256CbcGetKlass"></a><h3>xmlSecNssTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformAes256CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40342"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecNssTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformKWAes128GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes128GetKlass"></a><h3>xmlSecNssTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformKWAes128GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40355"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecNssTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformKWAes192GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes192GetKlass"></a><h3>xmlSecNssTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformKWAes192GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40368"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecNssTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformKWAes256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes256GetKlass"></a><h3>xmlSecNssTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformKWAes256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40381"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATADESGETKLASS"></a><h3>xmlSecNssKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataDesGetKlass"></a><h3>xmlSecNssKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN40394"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATADESSET"></a><h3>xmlSecNssKeyDataDesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataDesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataDesSet"></a><h3>xmlSecNssKeyDataDesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataDesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of DES key data.</p>
-<div class="REFSECT3">
-<a name="AEN40414"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40416"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataDesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN40437"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataDesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecNssTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformDes3CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDes3CbcGetKlass"></a><h3>xmlSecNssTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40450"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecNssTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWDes3GetKlass"></a><h3>xmlSecNssTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40463"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATADSAGETKLASS"></a><h3>xmlSecNssKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataDsaGetKlass"></a><h3>xmlSecNssKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN40476"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to DSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecNssTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformDsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDsaSha1GetKlass"></a><h3>xmlSecNssTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40489"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSHMACGETMINOUTPUTLENGTH"></a><h3>xmlSecNssHmacGetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssHmacGetMinOutputLength (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDsaSha256GetKlass"></a><h3>xmlSecNssTransformDsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformDsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The DSA-SHA256 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformDsaSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> DSA-SHA256 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataEcdsaGetKlass"></a><h3>xmlSecNssKeyDataEcdsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataEcdsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA key data klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataEcdsaGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to ECDSA key data klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha1GetKlass"></a><h3>xmlSecNssTransformEcdsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformEcdsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA1 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformEcdsaSha1GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA1 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha224GetKlass"></a><h3>xmlSecNssTransformEcdsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformEcdsaSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA224 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformEcdsaSha224GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA224 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha256GetKlass"></a><h3>xmlSecNssTransformEcdsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformEcdsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA256 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformEcdsaSha256GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA256 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha384GetKlass"></a><h3>xmlSecNssTransformEcdsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformEcdsaSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA384 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformEcdsaSha384GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA384 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha512GetKlass"></a><h3>xmlSecNssTransformEcdsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformEcdsaSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The ECDSA-SHA512 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformEcdsaSha512GetKlass.returns"></a><h4>Returns</h4>
+<p> ECDSA-SHA512 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssHmacGetMinOutputLength"></a><h3>xmlSecNssHmacGetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssHmacGetMinOutputLength (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the value of min HMAC length.</p>
-<div class="REFSECT3">
-<a name="AEN40502"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssHmacGetMinOutputLength.returns"></a><h4>Returns</h4>
<p> the min HMAC output length</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSHMACSETMINOUTPUTLENGTH"></a><h3>xmlSecNssHmacSetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecNssHmacSetMinOutputLength (<code class="PARAMETER"><font><span class="TYPE">int</span></font> min_length</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssHmacSetMinOutputLength"></a><h3>xmlSecNssHmacSetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecNssHmacSetMinOutputLength (<em class="parameter"><code><font><span class="type">int</span></font> min_length</code></em>);</pre>
<p>Sets the min HMAC output length</p>
-<div class="REFSECT3">
-<a name="AEN40516"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40518"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssHmacSetMinOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>min_length</p></td>
-<td><p>the new min length</p></td>
-<td> </td>
+<td class="parameter_name"><p>min_length</p></td>
+<td class="parameter_description"><p>the new min length</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAHMACGETKLASS"></a><h3>xmlSecNssKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataHmacGetKlass"></a><h3>xmlSecNssKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN40537"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAHMACSET"></a><h3>xmlSecNssKeyDataHmacSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataHmacSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataHmacSet"></a><h3>xmlSecNssKeyDataHmacSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataHmacSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of HMAC key data.</p>
-<div class="REFSECT3">
-<a name="AEN40557"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN40559"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataHmacSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to HMAC key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to HMAC key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN40580"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataHmacSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecNssTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformHmacMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacMd5GetKlass"></a><h3>xmlSecNssTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40593"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACRIPEMD160GETKLASS"></a><h3>xmlSecNssTransformHmacRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacRipemd160GetKlass"></a><h3>xmlSecNssTransformHmacRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecNssTransformHmacRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-RIPEMD160 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40606"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-RIPEMD160 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecNssTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformHmacSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha1GetKlass"></a><h3>xmlSecNssTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40619"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecNssTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformHmacSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha224GetKlass"></a><h3>xmlSecNssTransformHmacSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The HMAC-SHA224 transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacSha224GetKlass.returns"></a><h4>Returns</h4>
+<p> the HMAC-SHA224 transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha256GetKlass"></a><h3>xmlSecNssTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40632"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecNssTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformHmacSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha384GetKlass"></a><h3>xmlSecNssTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40645"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecNssTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformHmacSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha512GetKlass"></a><h3>xmlSecNssTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformHmacSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40658"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATARSAGETKLASS"></a><h3>xmlSecNssKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataRsaGetKlass"></a><h3>xmlSecNssKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN40671"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to RSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecNssTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaMd5GetKlass"></a><h3>xmlSecNssTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40684"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecNssTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha1GetKlass"></a><h3>xmlSecNssTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40697"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecNssTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha224GetKlass"></a><h3>xmlSecNssTransformRsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The RSA-SHA224 signature transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaSha224GetKlass.returns"></a><h4>Returns</h4>
+<p> RSA-SHA224 signature transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha256GetKlass"></a><h3>xmlSecNssTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40710"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecNssTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha384GetKlass"></a><h3>xmlSecNssTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40723"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecNssTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha512GetKlass"></a><h3>xmlSecNssTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40736"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAPKCS1GETKLASS"></a><h3>xmlSecNssTransformRsaPkcs1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaPkcs1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaPkcs1GetKlass"></a><h3>xmlSecNssTransformRsaPkcs1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaPkcs1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-PKCS1 key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40749"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaPkcs1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-PKCS1 key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAOAEPGETKLASS"></a><h3>xmlSecNssTransformRsaOaepGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformRsaOaepGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaOaepGetKlass"></a><h3>xmlSecNssTransformRsaOaepGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformRsaOaepGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-PKCS1 key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40762"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformRsaOaepGetKlass.returns"></a><h4>Returns</h4>
<p> RSA-PKCS1 key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA1GETKLASS"></a><h3>xmlSecNssTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha1GetKlass"></a><h3>xmlSecNssTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40775"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA256GETKLASS"></a><h3>xmlSecNssTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha224GetKlass"></a><h3>xmlSecNssTransformSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>SHA224 digest transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecNssTransformSha224GetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to SHA224 digest transform klass.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha256GetKlass"></a><h3>xmlSecNssTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40788"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA256 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA384GETKLASS"></a><h3>xmlSecNssTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha384GetKlass"></a><h3>xmlSecNssTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40801"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA384 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA512GETKLASS"></a><h3>xmlSecNssTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha512GetKlass"></a><h3>xmlSecNssTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40814"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA512 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMMD5GETKLASS"></a><h3>xmlSecNssTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecNssTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformMd5GetKlass"></a><h3>xmlSecNssTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecNssTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>MD5 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN40827"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MD5 digest transform klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-CRYPTO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAAESID"></a><h3>xmlSecNssKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataAesId</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataAesId"></a><h3>xmlSecNssKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataAesId</pre>
<p>The AES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES128CBCID"></a><h3>xmlSecNssTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformAes128CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes128CbcId"></a><h3>xmlSecNssTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecNssTransformAes128CbcId</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES192CBCID"></a><h3>xmlSecNssTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformAes192CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes192CbcId"></a><h3>xmlSecNssTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecNssTransformAes192CbcId</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMAES256CBCID"></a><h3>xmlSecNssTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformAes256CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformAes256CbcId"></a><h3>xmlSecNssTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecNssTransformAes256CbcId</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES128ID"></a><h3>xmlSecNssTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformKWAes128Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes128Id"></a><h3>xmlSecNssTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformKWAes128Id</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES192ID"></a><h3>xmlSecNssTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformKWAes192Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes192Id"></a><h3>xmlSecNssTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformKWAes192Id</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWAES256ID"></a><h3>xmlSecNssTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformKWAes256Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWAes256Id"></a><h3>xmlSecNssTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformKWAes256Id</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATADESID"></a><h3>xmlSecNssKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataDesId</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataDesId"></a><h3>xmlSecNssKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataDesId</pre>
<p>The DES key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMDES3CBCID"></a><h3>xmlSecNssTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformDes3CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDes3CbcId"></a><h3>xmlSecNssTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecNssTransformDes3CbcId</pre>
<p>The Triple DES CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMKWDES3ID"></a><h3>xmlSecNssTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformKWDes3Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformKWDes3Id"></a><h3>xmlSecNssTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformKWDes3Id</pre>
<p>The DES3 KW transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATADSAID"></a><h3>xmlSecNssKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataDsaId</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataDsaId"></a><h3>xmlSecNssKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataDsaId</pre>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMDSASHA1ID"></a><h3>xmlSecNssTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformDsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDsaSha1Id"></a><h3>xmlSecNssTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformDsaSha1Id</pre>
<p>The DSA SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAHMACID"></a><h3>xmlSecNssKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataHmacId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformDsaSha256Id"></a><h3>xmlSecNssTransformDsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformDsaSha256Id</pre>
+<p>The DSA SHA256 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataEcdsaId"></a><h3>xmlSecNssKeyDataEcdsaId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataEcdsaId xmlSecNssKeyDataEcdsaGetKlass()
+</pre>
+<p>The ECDSA key klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha1Id"></a><h3>xmlSecNssTransformEcdsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformEcdsaSha1Id xmlSecNssTransformEcdsaSha1GetKlass()
+</pre>
+<p>The ECDSA SHA1 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha224Id"></a><h3>xmlSecNssTransformEcdsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformEcdsaSha224Id xmlSecNssTransformEcdsaSha224GetKlass()
+</pre>
+<p>The ECDSA SHA224 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha256Id"></a><h3>xmlSecNssTransformEcdsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformEcdsaSha256Id xmlSecNssTransformEcdsaSha256GetKlass()
+</pre>
+<p>The ECDSA SHA256 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha384Id"></a><h3>xmlSecNssTransformEcdsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformEcdsaSha384Id xmlSecNssTransformEcdsaSha384GetKlass()
+</pre>
+<p>The ECDSA SHA384 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformEcdsaSha512Id"></a><h3>xmlSecNssTransformEcdsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformEcdsaSha512Id xmlSecNssTransformEcdsaSha512GetKlass()
+</pre>
+<p>The ECDSA SHA512 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataHmacId"></a><h3>xmlSecNssKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataHmacId</pre>
<p>The DHMAC key data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACMD5ID"></a><h3>xmlSecNssTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacMd5Id"></a><h3>xmlSecNssTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacMd5Id</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACRIPEMD160ID"></a><h3>xmlSecNssTransformHmacRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacRipemd160Id"></a><h3>xmlSecNssTransformHmacRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacRipemd160Id</pre>
<p>The HMAC with RipeMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA1ID"></a><h3>xmlSecNssTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha1Id"></a><h3>xmlSecNssTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA256ID"></a><h3>xmlSecNssTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha224Id"></a><h3>xmlSecNssTransformHmacSha224Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacSha224Id</pre>
+<p>The HMAC with SHA224 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha256Id"></a><h3>xmlSecNssTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA384ID"></a><h3>xmlSecNssTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha384Id"></a><h3>xmlSecNssTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMHMACSHA512ID"></a><h3>xmlSecNssTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformHmacSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformHmacSha512Id"></a><h3>xmlSecNssTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformHmacSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATARSAID"></a><h3>xmlSecNssKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataRsaId</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataRsaId"></a><h3>xmlSecNssKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataRsaId</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAMD5ID"></a><h3>xmlSecNssTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaMd5Id"></a><h3>xmlSecNssTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaMd5Id</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA1ID"></a><h3>xmlSecNssTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha1Id"></a><h3>xmlSecNssTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaSha1Id</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA256ID"></a><h3>xmlSecNssTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha224Id"></a><h3>xmlSecNssTransformRsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaSha224Id</pre>
+<p>The RSA-SHA224 signature transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha256Id"></a><h3>xmlSecNssTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaSha256Id</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA384ID"></a><h3>xmlSecNssTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha384Id"></a><h3>xmlSecNssTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaSha384Id</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSASHA512ID"></a><h3>xmlSecNssTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaSha512Id"></a><h3>xmlSecNssTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaSha512Id</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAPKCS1ID"></a><h3>xmlSecNssTransformRsaPkcs1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaPkcs1Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaPkcs1Id"></a><h3>xmlSecNssTransformRsaPkcs1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaPkcs1Id</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMRSAOAEPID"></a><h3>xmlSecNssTransformRsaOaepId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformRsaOaepId</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformRsaOaepId"></a><h3>xmlSecNssTransformRsaOaepId</h3>
+<pre class="programlisting">#define xmlSecNssTransformRsaOaepId</pre>
<p>The RSA OAEP key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA1ID"></a><h3>xmlSecNssTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha1Id"></a><h3>xmlSecNssTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformSha1Id</pre>
<p>The SHA1 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA256ID"></a><h3>xmlSecNssTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha224Id"></a><h3>xmlSecNssTransformSha224Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformSha224Id</pre>
+<p>The SHA224 digest transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha256Id"></a><h3>xmlSecNssTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformSha256Id</pre>
<p>The SHA256 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA384ID"></a><h3>xmlSecNssTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha384Id"></a><h3>xmlSecNssTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformSha384Id</pre>
<p>The SHA384 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMSHA512ID"></a><h3>xmlSecNssTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformSha512Id"></a><h3>xmlSecNssTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformSha512Id</pre>
<p>The SHA512 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSTRANSFORMMD5ID"></a><h3>xmlSecNssTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssTransformMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecNssTransformMd5Id"></a><h3>xmlSecNssTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecNssTransformMd5Id</pre>
<p>The MD5 digest transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-bignum.html"><b>&lt;&lt;&lt; bignum</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-keysstore.html"><b>keysstore &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-keysstore.html b/docs/api/xmlsec-nss-keysstore.html
index 9889508e..41722891 100644
--- a/docs/api/xmlsec-nss-keysstore.html
+++ b/docs/api/xmlsec-nss-keysstore.html
@@ -1,320 +1,249 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>keysstore</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="crypto" href="xmlsec-nss-crypto.html">
-<link rel="NEXT" title="pkikeys" href="xmlsec-nss-pkikeys.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>keysstore: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-nss-pkikeys.html" title="pkikeys">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-keysstore.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-pkikeys.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-KEYSSTORE"></a>keysstore</h1>
-<div class="REFNAMEDIV">
-<a name="AEN41029"></a><h2>Name</h2>keysstore -- Keys store implementation for NSS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-KEYSSTORE.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41034"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-keysstore"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-keysstore.top_of_page"></a>keysstore</span></h2>
+<p>keysstore — Keys store implementation for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font></td>
-<td>
-<a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREGETKLASS">xmlSecNssKeysStoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreGetKlass" title="xmlSecNssKeysStoreGetKlass ()">xmlSecNssKeysStoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREADOPTKEY">xmlSecNssKeysStoreAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreAdoptKey" title="xmlSecNssKeysStoreAdoptKey ()">xmlSecNssKeysStoreAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTORELOAD">xmlSecNssKeysStoreLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreLoad" title="xmlSecNssKeysStoreLoad ()">xmlSecNssKeysStoreLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTORESAVE">xmlSecNssKeysStoreSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreSave" title="xmlSecNssKeysStoreSave ()">xmlSecNssKeysStoreSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-KEYSSTORE.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41067"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-keysstore.html#XMLSECNSSKEYSSTOREID">xmlSecNssKeysStoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreId" title="xmlSecNssKeysStoreId">xmlSecNssKeysStoreId</a></td>
</tr></tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-KEYSSTORE.DESCRIPTION"></a><h2>Description</h2>
-<p>Keys store implementation for NSS.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-KEYSSTORE.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSSTOREGETKLASS"></a><h3>xmlSecNssKeysStoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyStoreId</span></font>
-xmlSecNssKeysStoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.description"></a><h2>Description</h2>
+<p>Nss keys store that uses Simple Keys Store under the hood. Uses the
+Nss DB as a backing store for the finding keys, but the NSS DB is
+not written to by the keys store.
+So, if store-&gt;findkey is done and the key is not found in the simple
+keys store, the NSS DB is looked up.
+If store is called to adopt a key, that key is not written to the NSS
+DB.
+Thus, the NSS DB can be used to pre-load keys and becomes an alternate
+source of keys for xmlsec</p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNssKeysStoreGetKlass"></a><h3>xmlSecNssKeysStoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyStoreId</span></font>
+xmlSecNssKeysStoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Nss list based keys store klass.</p>
-<div class="REFSECT3">
-<a name="AEN41089"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreGetKlass.returns"></a><h4>Returns</h4>
<p> Nss list based keys store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSSTOREADOPTKEY"></a><h3>xmlSecNssKeysStoreAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeysStoreAdoptKey (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecNssKeysStoreAdoptKey"></a><h3>xmlSecNssKeysStoreAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeysStoreAdoptKey (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN41108"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41110"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to Nss keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to Nss keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41125"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSSTORELOAD"></a><h3>xmlSecNssKeysStoreLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeysStoreLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeysStoreLoad"></a><h3>xmlSecNssKeysStoreLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeysStoreLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
<p>Reads keys from an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN41145"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41147"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to Nss keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to Nss keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to associated keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to associated keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41168"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSSTORESAVE"></a><h3>xmlSecNssKeysStoreSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeysStoreSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSTORE"><span class="TYPE">xmlSecKeyStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Writes keys from <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecNssKeysStoreSave"></a><h3>xmlSecNssKeysStoreSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeysStoreSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeyStore" title="struct xmlSecKeyStore"><span class="type">xmlSecKeyStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Writes keys from <em class="parameter"><code>store</code></em>
to an XML file.</p>
-<div class="REFSECT3">
-<a name="AEN41189"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41191"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to Nss keys store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to Nss keys store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the saved keys type (public, private, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the saved keys type (public, private, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41212"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeysStoreSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-KEYSSTORE.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYSSTOREID"></a><h3>xmlSecNssKeysStoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeysStoreId xmlSecNssKeysStoreGetKlass()</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-keysstore.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecNssKeysStoreId"></a><h3>xmlSecNssKeysStoreId</h3>
+<pre class="programlisting">#define xmlSecNssKeysStoreId xmlSecNssKeysStoreGetKlass()
+</pre>
<p>A Nss keys store klass id.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-crypto.html"><b>&lt;&lt;&lt; crypto</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-pkikeys.html"><b>pkikeys &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-pkikeys.html b/docs/api/xmlsec-nss-pkikeys.html
index 98fd11bf..393987f2 100644
--- a/docs/api/xmlsec-nss-pkikeys.html
+++ b/docs/api/xmlsec-nss-pkikeys.html
@@ -1,334 +1,252 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>pkikeys</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="keysstore" href="xmlsec-nss-keysstore.html">
-<link rel="NEXT" title="x509" href="xmlsec-nss-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>pkikeys: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-keysstore.html" title="keysstore">
+<link rel="next" href="xmlsec-nss-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-pkikeys.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-keysstore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-keysstore.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-PKIKEYS"></a>pkikeys</h1>
-<div class="REFNAMEDIV">
-<a name="AEN41228"></a><h2>Name</h2>pkikeys -- PKI keys data implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-PKIKEYS.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41233"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-pkikeys"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-pkikeys.top_of_page"></a>pkikeys</span></h2>
+<p>pkikeys — Private/public keys implementation for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-pkikeys.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-pkikeys.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIADOPTKEY">xmlSecNssPKIAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIAdoptKey" title="xmlSecNssPKIAdoptKey ()">xmlSecNssPKIAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">SECKEYPublicKey</span></font> *</td>
-<td>
-<a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETPUBKEY">xmlSecNssPKIKeyDataGetPubKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">SECKEYPublicKey</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPubKey" title="xmlSecNssPKIKeyDataGetPubKey ()">xmlSecNssPKIKeyDataGetPubKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">SECKEYPrivateKey</span></font> *</td>
-<td>
-<a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETPRIVKEY">xmlSecNssPKIKeyDataGetPrivKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">SECKEYPrivateKey</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPrivKey" title="xmlSecNssPKIKeyDataGetPrivKey ()">xmlSecNssPKIKeyDataGetPrivKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">KeyType</span></font></td>
-<td>
-<a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATAGETKEYTYPE">xmlSecNssPKIKeyDataGetKeyType</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">KeyType</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetKeyType" title="xmlSecNssPKIKeyDataGetKeyType ()">xmlSecNssPKIKeyDataGetKeyType</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-pkikeys.html#XMLSECNSSPKIKEYDATADUPLICATE">xmlSecNssPKIKeyDataDuplicate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataDuplicate" title="xmlSecNssPKIKeyDataDuplicate ()">xmlSecNssPKIKeyDataDuplicate</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-nss-pkikeys.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-PKIKEYS.DESCRIPTION"></a><h2>Description</h2>
-<p>PKI keys data implementation.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-PKIKEYS.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSPKIADOPTKEY"></a><h3>xmlSecNssPKIAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecNssPKIAdoptKey (<code class="PARAMETER"><font><span class="TYPE">SECKEYPrivateKey</span></font> *privkey</code>,
- <code class="PARAMETER"><font><span class="TYPE">SECKEYPublicKey</span></font> *pubkey</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-pkikeys.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNssPKIAdoptKey"></a><h3>xmlSecNssPKIAdoptKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecNssPKIAdoptKey (<em class="parameter"><code><font><span class="type">SECKEYPrivateKey</span></font> *privkey</code></em>,
+ <em class="parameter"><code><font><span class="type">SECKEYPublicKey</span></font> *pubkey</code></em>);</pre>
<p>Build a KeyData object from the given Private Key and Public
Key handles.</p>
-<div class="REFSECT3">
-<a name="AEN41290"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41292"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssPKIAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>privkey</p></td>
-<td><p>the NSS Private Key handle</p></td>
-<td> </td>
+<td class="parameter_name"><p>privkey</p></td>
+<td class="parameter_description"><p>the NSS Private Key handle</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pubkey</p></td>
-<td><p>the NSS Public Key handle</p></td>
-<td> </td>
+<td class="parameter_name"><p>pubkey</p></td>
+<td class="parameter_description"><p>the NSS Public Key handle</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41307"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssPKIAdoptKey.returns"></a><h4>Returns</h4>
<p> pointer to KeyData object or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSPKIKEYDATAGETPUBKEY"></a><h3>xmlSecNssPKIKeyDataGetPubKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">SECKEYPublicKey</span></font> *
-xmlSecNssPKIKeyDataGetPubKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssPKIKeyDataGetPubKey"></a><h3>xmlSecNssPKIKeyDataGetPubKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">SECKEYPublicKey</span></font> *
+xmlSecNssPKIKeyDataGetPubKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the Public Key from the key data.</p>
-<div class="REFSECT3">
-<a name="AEN41321"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41323"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetPubKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to NSS Key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to NSS Key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41332"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetPubKey.returns"></a><h4>Returns</h4>
<p> pointer to SECKEYPublicKey or NULL if an error occurs.
Caller is responsible for freeing the key when done</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSPKIKEYDATAGETPRIVKEY"></a><h3>xmlSecNssPKIKeyDataGetPrivKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">SECKEYPrivateKey</span></font> *
-xmlSecNssPKIKeyDataGetPrivKey (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssPKIKeyDataGetPrivKey"></a><h3>xmlSecNssPKIKeyDataGetPrivKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">SECKEYPrivateKey</span></font> *
+xmlSecNssPKIKeyDataGetPrivKey (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the Private Key from the key data.</p>
-<div class="REFSECT3">
-<a name="AEN41346"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41348"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetPrivKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to NSS Key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to NSS Key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41357"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetPrivKey.returns"></a><h4>Returns</h4>
<p> pointer to SECKEYPrivateKey or NULL if an error occurs.
Caller is responsible for freeing the key when done</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSPKIKEYDATAGETKEYTYPE"></a><h3>xmlSecNssPKIKeyDataGetKeyType ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">KeyType</span></font>
-xmlSecNssPKIKeyDataGetKeyType (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssPKIKeyDataGetKeyType"></a><h3>xmlSecNssPKIKeyDataGetKeyType ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">KeyType</span></font>
+xmlSecNssPKIKeyDataGetKeyType (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the Key Type from the key data.</p>
-<div class="REFSECT3">
-<a name="AEN41371"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41373"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetKeyType.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to NSS Key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to NSS Key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41382"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataGetKeyType.returns"></a><h4>Returns</h4>
<p> Key Type</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSPKIKEYDATADUPLICATE"></a><h3>xmlSecNssPKIKeyDataDuplicate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssPKIKeyDataDuplicate (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> src</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssPKIKeyDataDuplicate"></a><h3>xmlSecNssPKIKeyDataDuplicate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssPKIKeyDataDuplicate (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> src</code></em>);</pre>
<p>Duplicates the keydata from src to dst</p>
-<div class="REFSECT3">
-<a name="AEN41399"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41401"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataDuplicate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to NSS Key data to copy to.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to NSS Key data to copy to.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to NSS Key data to copy from.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to NSS Key data to copy from.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41416"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssPKIKeyDataDuplicate.returns"></a><h4>Returns</h4>
<p> -1 on error, 0 on success</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-PKIKEYS.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-nss-pkikeys.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-keysstore.html"><b>&lt;&lt;&lt; keysstore</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-x509.html"><b>x509 &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-ref.html b/docs/api/xmlsec-nss-ref.html
index 79b3d609..0428df28 100644
--- a/docs/api/xmlsec-nss-ref.html
+++ b/docs/api/xmlsec-nss-ref.html
@@ -1,138 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library for NSS API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="crypto" href="xmlsec-gcrypt-crypto.html">
-<link rel="NEXT" title="app" href="xmlsec-nss-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for NSS API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-gcrypt-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-nss-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-gcrypt-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-gcrypt-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-nss-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-NSS-REF"></a>XML Security Library for NSS API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-nss-ref"></a>XML Security Library for NSS API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
<dt>
-<a href="xmlsec-nss-app.html">app</a> -- Application functions implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-app.html">app</a></span><span class="refpurpose"> — Application support functions for NSS.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-bignum.html">bignum</a> -- Big numbers helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-bignum.html">bignum</a></span><span class="refpurpose"> — Big numbers support functions implementation for NSS.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-crypto.html">crypto</a> -- Crypto transforms implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for NSS.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-keysstore.html">keysstore</a> -- Keys store implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for NSS.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-pkikeys.html">pkikeys</a> -- PKI keys data implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-pkikeys.html">pkikeys</a></span><span class="refpurpose"> — Private/public keys implementation for NSS.</span>
+</dt>
<dt>
-<a href="xmlsec-nss-x509.html">x509</a> -- X509 certificates support implementation for NSS.</dt>
+<span class="refentrytitle"><a href="xmlsec-nss-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for NSS.</span>
+</dt>
</dl></div>
<p>This section contains the API reference for xmlsec-nss. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-gcrypt-crypto.html"><b>&lt;&lt;&lt; crypto</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-nss-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-nss-x509.html b/docs/api/xmlsec-nss-x509.html
index 1101dbf6..bc2c1a91 100644
--- a/docs/api/xmlsec-nss-x509.html
+++ b/docs/api/xmlsec-nss-x509.html
@@ -1,765 +1,684 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>x509</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for NSS API Reference." href="xmlsec-nss-ref.html">
-<link rel="PREVIOUS" title="pkikeys" href="xmlsec-nss-pkikeys.html">
-<link rel="NEXT" title="XML Security Library for MSCrypto API Reference." href="xmlsec-mscrypto-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-nss-ref.html" title="XML Security Library for NSS API Reference.">
+<link rel="prev" href="xmlsec-nss-pkikeys.html" title="pkikeys">
+<link rel="next" href="xmlsec-mscrypto-ref.html" title="XML Security Library for Microsoft Crypto API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nss-pkikeys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-nss-x509.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nss-pkikeys.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-mscrypto-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-NSS-X509"></a>x509</h1>
-<div class="REFNAMEDIV">
-<a name="AEN41427"></a><h2>Name</h2>x509 -- X509 certificates support implementation for NSS.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-X509.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41432"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-nss-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-nss-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — X509 certificates implementation for NSS.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-nss-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-nss-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETKLASS">xmlSecNssKeyDataX509GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKlass" title="xmlSecNssKeyDataX509GetKlass ()">xmlSecNssKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">CERTCertificate</span></font> *</td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETKEYCERT">xmlSecNssKeyDataX509GetKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">CERTCertificate</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKeyCert" title="xmlSecNssKeyDataX509GetKeyCert ()">xmlSecNssKeyDataX509GetKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTKEYCERT">xmlSecNssKeyDataX509AdoptKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptKeyCert" title="xmlSecNssKeyDataX509AdoptKeyCert ()">xmlSecNssKeyDataX509AdoptKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTCERT">xmlSecNssKeyDataX509AdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCert" title="xmlSecNssKeyDataX509AdoptCert ()">xmlSecNssKeyDataX509AdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">CERTCertificate</span></font> *</td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCERT">xmlSecNssKeyDataX509GetCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">CERTCertificate</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCert" title="xmlSecNssKeyDataX509GetCert ()">xmlSecNssKeyDataX509GetCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCERTSSIZE">xmlSecNssKeyDataX509GetCertsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCertsSize" title="xmlSecNssKeyDataX509GetCertsSize ()">xmlSecNssKeyDataX509GetCertsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ADOPTCRL">xmlSecNssKeyDataX509AdoptCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCrl" title="xmlSecNssKeyDataX509AdoptCrl ()">xmlSecNssKeyDataX509AdoptCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">CERTSignedCrl</span></font> *</td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCRL">xmlSecNssKeyDataX509GetCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">CERTSignedCrl</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrl" title="xmlSecNssKeyDataX509GetCrl ()">xmlSecNssKeyDataX509GetCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509GETCRLSSIZE">xmlSecNssKeyDataX509GetCrlsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrlsSize" title="xmlSecNssKeyDataX509GetCrlsSize ()">xmlSecNssKeyDataX509GetCrlsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSX509CERTGETKEY">xmlSecNssX509CertGetKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509CertGetKey" title="xmlSecNssX509CertGetKey ()">xmlSecNssX509CertGetKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATARAWX509CERTGETKLASS">xmlSecNssKeyDataRawX509CertGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertGetKlass" title="xmlSecNssKeyDataRawX509CertGetKlass ()">xmlSecNssKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREGETKLASS">xmlSecNssX509StoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreGetKlass" title="xmlSecNssX509StoreGetKlass ()">xmlSecNssX509StoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">CERTCertificate</span></font> *</td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREFINDCERT">xmlSecNssX509StoreFindCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">CERTCertificate</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreFindCert" title="xmlSecNssX509StoreFindCert ()">xmlSecNssX509StoreFindCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">CERTCertificate</span></font> *</td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREVERIFY">xmlSecNssX509StoreVerify</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">CERTCertificate</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreVerify" title="xmlSecNssX509StoreVerify ()">xmlSecNssX509StoreVerify</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREADOPTCERT">xmlSecNssX509StoreAdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreAdoptCert" title="xmlSecNssX509StoreAdoptCert ()">xmlSecNssX509StoreAdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-X509.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41542"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-nss-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATAX509ID">xmlSecNssKeyDataX509Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataX509Id" title="xmlSecNssKeyDataX509Id">xmlSecNssKeyDataX509Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-x509.html#XMLSECNSSKEYDATARAWX509CERTID">xmlSecNssKeyDataRawX509CertId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertId" title="xmlSecNssKeyDataRawX509CertId">xmlSecNssKeyDataRawX509CertId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-nss-x509.html#XMLSECNSSX509STOREID">xmlSecNssX509StoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-nss-x509.html#xmlSecNssX509StoreId" title="xmlSecNssX509StoreId">xmlSecNssX509StoreId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-X509.DESCRIPTION"></a><h2>Description</h2>
-<p>X509 certificates support implementation for NSS.</p>
+<div class="refsect1">
+<a name="xmlsec-nss-x509.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-X509.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETKLASS"></a><h3>xmlSecNssKeyDataX509GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataX509GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The NSS X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-X509Data</span></font>).</p>
-<div class="REFSECT3">
-<a name="AEN41574"></a><h4>Returns</h4>
+<div class="refsect1">
+<a name="xmlsec-nss-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetKlass"></a><h3>xmlSecNssKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The NSS X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-X509Data</span></font>).</p>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
<p> the X509 data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETKEYCERT"></a><h3>xmlSecNssKeyDataX509GetKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">CERTCertificate</span></font> *
-xmlSecNssKeyDataX509GetKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetKeyCert"></a><h3>xmlSecNssKeyDataX509GetKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">CERTCertificate</span></font> *
+xmlSecNssKeyDataX509GetKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the certificate from which the key was extracted.</p>
-<div class="REFSECT3">
-<a name="AEN41588"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41590"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41599"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetKeyCert.returns"></a><h4>Returns</h4>
<p> the key's certificate or NULL if key data was not used for key
extraction or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509ADOPTKEYCERT"></a><h3>xmlSecNssKeyDataX509AdoptKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataX509AdoptKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">CERTCertificate</span></font> *cert</code>);</pre>
-<p>Sets the key's certificate in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509AdoptKeyCert"></a><h3>xmlSecNssKeyDataX509AdoptKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataX509AdoptKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">CERTCertificate</span></font> *cert</code></em>);</pre>
+<p>Sets the key's certificate in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN41617"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41619"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to NSS X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to NSS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41634"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptKeyCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509ADOPTCERT"></a><h3>xmlSecNssKeyDataX509AdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataX509AdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">CERTCertificate</span></font> *cert</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509AdoptCert"></a><h3>xmlSecNssKeyDataX509AdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataX509AdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">CERTCertificate</span></font> *cert</code></em>);</pre>
<p>Adds certificate to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN41651"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41653"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to NSS X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to NSS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41668"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETCERT"></a><h3>xmlSecNssKeyDataX509GetCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">CERTCertificate</span></font> *
-xmlSecNssKeyDataX509GetCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetCert"></a><h3>xmlSecNssKeyDataX509GetCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">CERTCertificate</span></font> *
+xmlSecNssKeyDataX509GetCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a certificate from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN41685"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41687"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired certificate position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired certificate position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41702"></a><h4>Returns</h4>
-<p> the pointer to certificate or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCert.returns"></a><h4>Returns</h4>
+<p> the pointer to certificate or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of certificates in <code class="PARAMETER">data</code>
+number of certificates in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETCERTSSIZE"></a><h3>xmlSecNssKeyDataX509GetCertsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecNssKeyDataX509GetCertsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetCertsSize"></a><h3>xmlSecNssKeyDataX509GetCertsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecNssKeyDataX509GetCertsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of certificates in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN41719"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41721"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCertsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41730"></a><h4>Returns</h4>
-<p> te number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCertsSize.returns"></a><h4>Returns</h4>
+<p> te number of certificates in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509ADOPTCRL"></a><h3>xmlSecNssKeyDataX509AdoptCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssKeyDataX509AdoptCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">CERTSignedCrl</span></font> *crl</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509AdoptCrl"></a><h3>xmlSecNssKeyDataX509AdoptCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssKeyDataX509AdoptCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">CERTSignedCrl</span></font> *crl</code></em>);</pre>
<p>Adds CRL to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN41748"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41750"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>crl</p></td>
-<td><p>the pointer to NSS X509 CRL.</p></td>
-<td> </td>
+<td class="parameter_name"><p>crl</p></td>
+<td class="parameter_description"><p>the pointer to NSS X509 CRL.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41765"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509AdoptCrl.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETCRL"></a><h3>xmlSecNssKeyDataX509GetCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">CERTSignedCrl</span></font> *
-xmlSecNssKeyDataX509GetCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetCrl"></a><h3>xmlSecNssKeyDataX509GetCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">CERTSignedCrl</span></font> *
+xmlSecNssKeyDataX509GetCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a CRL from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN41782"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41784"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired CRL position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired CRL position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41799"></a><h4>Returns</h4>
-<p> the pointer to CRL or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCrl.returns"></a><h4>Returns</h4>
+<p> the pointer to CRL or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of CRLs in <code class="PARAMETER">data</code>
+number of CRLs in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509GETCRLSSIZE"></a><h3>xmlSecNssKeyDataX509GetCrlsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecNssKeyDataX509GetCrlsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509GetCrlsSize"></a><h3>xmlSecNssKeyDataX509GetCrlsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecNssKeyDataX509GetCrlsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN41816"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41818"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCrlsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41827"></a><h4>Returns</h4>
-<p> te number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataX509GetCrlsSize.returns"></a><h4>Returns</h4>
+<p> te number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509CERTGETKEY"></a><h3>xmlSecNssX509CertGetKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecNssX509CertGetKey (<code class="PARAMETER"><font><span class="TYPE">CERTCertificate</span></font> *cert</code>);</pre>
-<p>Extracts public key from the <code class="PARAMETER">cert</code>
+<div class="refsect2">
+<a name="xmlSecNssX509CertGetKey"></a><h3>xmlSecNssX509CertGetKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecNssX509CertGetKey (<em class="parameter"><code><font><span class="type">CERTCertificate</span></font> *cert</code></em>);</pre>
+<p>Extracts public key from the <em class="parameter"><code>cert</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN41843"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41845"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssX509CertGetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>cert</p></td>
-<td><p>the certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41854"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssX509CertGetKey.returns"></a><h4>Returns</h4>
<p> public key value or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATARAWX509CERTGETKLASS"></a><h3>xmlSecNssKeyDataRawX509CertGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecNssKeyDataRawX509CertGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataRawX509CertGetKlass"></a><h3>xmlSecNssKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecNssKeyDataRawX509CertGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The raw X509 certificates key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN41867"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
<p> raw X509 certificates key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509STOREGETKLASS"></a><h3>xmlSecNssX509StoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font>
-xmlSecNssX509StoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssX509StoreGetKlass"></a><h3>xmlSecNssX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecNssX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The NSS X509 certificates key data store klass.</p>
-<div class="REFSECT3">
-<a name="AEN41880"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssX509StoreGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to NSS X509 certificates key data store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509STOREFINDCERT"></a><h3>xmlSecNssX509StoreFindCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">CERTCertificate</span></font> *
-xmlSecNssX509StoreFindCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *subjectName</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *issuerName</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *issuerSerial</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *ski</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code>);</pre>
-<p>Searches <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecNssX509StoreFindCert"></a><h3>xmlSecNssX509StoreFindCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">CERTCertificate</span></font> *
+xmlSecNssX509StoreFindCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *subjectName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerSerial</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *ski</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Searches <em class="parameter"><code>store</code></em>
for a certificate that matches given criteria.</p>
-<div class="REFSECT3">
-<a name="AEN41910"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41912"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssX509StoreFindCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>subjectName</p></td>
-<td><p>the desired certificate name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>subjectName</p></td>
+<td class="parameter_description"><p>the desired certificate name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>issuerName</p></td>
-<td><p>the desired certificate issuer name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>issuerName</p></td>
+<td class="parameter_description"><p>the desired certificate issuer name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>issuerSerial</p></td>
-<td><p>the desired certificate issuer serial number.</p></td>
-<td> </td>
+<td class="parameter_name"><p>issuerSerial</p></td>
+<td class="parameter_description"><p>the desired certificate issuer serial number.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ski</p></td>
-<td><p>the desired certificate SKI.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ski</p></td>
+<td class="parameter_description"><p>the desired certificate SKI.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN41951"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssX509StoreFindCert.returns"></a><h4>Returns</h4>
<p> pointer to found certificate or NULL if certificate is not found
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509STOREVERIFY"></a><h3>xmlSecNssX509StoreVerify ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">CERTCertificate</span></font> *
-xmlSecNssX509StoreVerify (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">CERTCertList</span></font> *certs</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code>);</pre>
-<p>Verifies <code class="PARAMETER">certs</code>
+<div class="refsect2">
+<a name="xmlSecNssX509StoreVerify"></a><h3>xmlSecNssX509StoreVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">CERTCertificate</span></font> *
+xmlSecNssX509StoreVerify (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">CERTCertList</span></font> *certs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Verifies <em class="parameter"><code>certs</code></em>
list.</p>
-<div class="REFSECT3">
-<a name="AEN41972"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN41974"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssX509StoreVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>certs</p></td>
-<td><p>the untrusted certificates stack.</p></td>
-<td> </td>
+<td class="parameter_name"><p>certs</p></td>
+<td class="parameter_description"><p>the untrusted certificates stack.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN41995"></a><h4>Returns</h4>
-<p> pointer to the first verified certificate from <code class="PARAMETER">certs</code>
+<div class="refsect3">
+<a name="xmlSecNssX509StoreVerify.returns"></a><h4>Returns</h4>
+<p> pointer to the first verified certificate from <em class="parameter"><code>certs</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509STOREADOPTCERT"></a><h3>xmlSecNssX509StoreAdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNssX509StoreAdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">CERTCertificate</span></font> *cert</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecNssX509StoreAdoptCert"></a><h3>xmlSecNssX509StoreAdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNssX509StoreAdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">CERTCertificate</span></font> *cert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Adds trusted (root) or untrusted certificate to the store.</p>
-<div class="REFSECT3">
-<a name="AEN42016"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN42018"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNssX509StoreAdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to NSS X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to NSS X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN42039"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNssX509StoreAdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-NSS-X509.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATAX509ID"></a><h3>xmlSecNssKeyDataX509Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataX509Id</pre>
+<div class="refsect1">
+<a name="xmlsec-nss-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataX509Id"></a><h3>xmlSecNssKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataX509Id</pre>
<p>The NSS X509 data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSKEYDATARAWX509CERTID"></a><h3>xmlSecNssKeyDataRawX509CertId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssKeyDataRawX509CertId</pre>
+<div class="refsect2">
+<a name="xmlSecNssKeyDataRawX509CertId"></a><h3>xmlSecNssKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecNssKeyDataRawX509CertId</pre>
<p>The NSS raw X509 certificate klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNSSX509STOREID"></a><h3>xmlSecNssX509StoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNssX509StoreId</pre>
+<div class="refsect2">
+<a name="xmlSecNssX509StoreId"></a><h3>xmlSecNssX509StoreId</h3>
+<pre class="programlisting">#define xmlSecNssX509StoreId</pre>
<p>The NSS X509 store klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nss-pkikeys.html"><b>&lt;&lt;&lt; pkikeys</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-mscrypto-ref.html"><b>XML Security Library for MSCrypto API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-app.html b/docs/api/xmlsec-openssl-app.html
index d4a04df1..c02da89f 100644
--- a/docs/api/xmlsec-openssl-app.html
+++ b/docs/api/xmlsec-openssl-app.html
@@ -1,1213 +1,1136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>app</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="PREVIOUS" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="NEXT" title="bn" href="xmlsec-openssl-bn.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>app: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="prev" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="next" href="xmlsec-openssl-bn.html" title="bn">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-openssl-app.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-ref.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-bn.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-OPENSSL-APP"></a>app</h1>
-<div class="REFNAMEDIV">
-<a name="AEN28931"></a><h2>Name</h2>app -- Application functions implementation for OpenSSL.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-APP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28936"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-openssl-app"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-openssl-app.top_of_page"></a>app</span></h2>
+<p>app — Application support functions for OpenSSL.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-openssl-app.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-app.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPINIT">xmlSecOpenSSLAppInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppInit" title="xmlSecOpenSSLAppInit ()">xmlSecOpenSSLAppInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPSHUTDOWN">xmlSecOpenSSLAppShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppShutdown" title="xmlSecOpenSSLAppShutdown ()">xmlSecOpenSSLAppShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRINIT">xmlSecOpenSSLAppDefaultKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrInit" title="xmlSecOpenSSLAppDefaultKeysMngrInit ()">xmlSecOpenSSLAppDefaultKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecOpenSSLAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrAdoptKey" title="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ()">xmlSecOpenSSLAppDefaultKeysMngrAdoptKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRLOAD">xmlSecOpenSSLAppDefaultKeysMngrLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrLoad" title="xmlSecOpenSSLAppDefaultKeysMngrLoad ()">xmlSecOpenSSLAppDefaultKeysMngrLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRSAVE">xmlSecOpenSSLAppDefaultKeysMngrSave</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrSave" title="xmlSecOpenSSLAppDefaultKeysMngrSave ()">xmlSecOpenSSLAppDefaultKeysMngrSave</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOAD">xmlSecOpenSSLAppKeysMngrCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoad" title="xmlSecOpenSSLAppKeysMngrCertLoad ()">xmlSecOpenSSLAppKeysMngrCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOADMEMORY">xmlSecOpenSSLAppKeysMngrCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadMemory" title="xmlSecOpenSSLAppKeysMngrCertLoadMemory ()">xmlSecOpenSSLAppKeysMngrCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRCERTLOADBIO">xmlSecOpenSSLAppKeysMngrCertLoadBIO</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadBIO" title="xmlSecOpenSSLAppKeysMngrCertLoadBIO ()">xmlSecOpenSSLAppKeysMngrCertLoadBIO</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRADDCERTSPATH">xmlSecOpenSSLAppKeysMngrAddCertsPath</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsPath" title="xmlSecOpenSSLAppKeysMngrAddCertsPath ()">xmlSecOpenSSLAppKeysMngrAddCertsPath</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYSMNGRADDCERTSFILE">xmlSecOpenSSLAppKeysMngrAddCertsFile</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsFile" title="xmlSecOpenSSLAppKeysMngrAddCertsFile ()">xmlSecOpenSSLAppKeysMngrAddCertsFile</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOAD">xmlSecOpenSSLAppKeyLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoad" title="xmlSecOpenSSLAppKeyLoad ()">xmlSecOpenSSLAppKeyLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOADMEMORY">xmlSecOpenSSLAppKeyLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadMemory" title="xmlSecOpenSSLAppKeyLoadMemory ()">xmlSecOpenSSLAppKeyLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYLOADBIO">xmlSecOpenSSLAppKeyLoadBIO</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadBIO" title="xmlSecOpenSSLAppKeyLoadBIO ()">xmlSecOpenSSLAppKeyLoadBIO</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOAD">xmlSecOpenSSLAppPkcs12Load</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12Load" title="xmlSecOpenSSLAppPkcs12Load ()">xmlSecOpenSSLAppPkcs12Load</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOADMEMORY">xmlSecOpenSSLAppPkcs12LoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadMemory" title="xmlSecOpenSSLAppPkcs12LoadMemory ()">xmlSecOpenSSLAppPkcs12LoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPPKCS12LOADBIO">xmlSecOpenSSLAppPkcs12LoadBIO</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadBIO" title="xmlSecOpenSSLAppPkcs12LoadBIO ()">xmlSecOpenSSLAppPkcs12LoadBIO</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOAD">xmlSecOpenSSLAppKeyCertLoad</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoad" title="xmlSecOpenSSLAppKeyCertLoad ()">xmlSecOpenSSLAppKeyCertLoad</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOADMEMORY">xmlSecOpenSSLAppKeyCertLoadMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadMemory" title="xmlSecOpenSSLAppKeyCertLoadMemory ()">xmlSecOpenSSLAppKeyCertLoadMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYCERTLOADBIO">xmlSecOpenSSLAppKeyCertLoadBIO</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadBIO" title="xmlSecOpenSSLAppKeyCertLoadBIO ()">xmlSecOpenSSLAppKeyCertLoadBIO</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPKEYFROMCERTLOADBIO">xmlSecOpenSSLAppKeyFromCertLoadBIO</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyFromCertLoadBIO" title="xmlSecOpenSSLAppKeyFromCertLoadBIO ()">xmlSecOpenSSLAppKeyFromCertLoadBIO</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">void</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPGETDEFAULTPWDCALLBACK">xmlSecOpenSSLAppGetDefaultPwdCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppGetDefaultPwdCallback" title="xmlSecOpenSSLAppGetDefaultPwdCallback ()">xmlSecOpenSSLAppGetDefaultPwdCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-APP.DESCRIPTION"></a><h2>Description</h2>
-<p>Application functions implementation for OpenSSL.</p>
+<div class="refsect1">
+<a name="xmlsec-openssl-app.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-APP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPINIT"></a><h3>xmlSecOpenSSLAppInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppInit (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *config</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-openssl-app.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppInit"></a><h3>xmlSecOpenSSLAppInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppInit (<em class="parameter"><code>const <font><span class="type">char</span></font> *config</code></em>);</pre>
<p>General crypto engine initialization. This function is used
by XMLSec command line utility and called before
-<code class="PARAMETER">xmlSecInit</code>
+<em class="parameter"><code>xmlSecInit</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN29110"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29112"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>config</p></td>
-<td><p>the path to certs.</p></td>
-<td> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>the path to certs.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN29121"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPSHUTDOWN"></a><h3>xmlSecOpenSSLAppShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppShutdown"></a><h3>xmlSecOpenSSLAppShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>General crypto engine shutdown. This function is used
by XMLSec command line utility and called after
-<code class="PARAMETER">xmlSecShutdown</code>
+<em class="parameter"><code>xmlSecShutdown</code></em>
function.</p>
-<div class="REFSECT3">
-<a name="AEN29135"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPDEFAULTKEYSMNGRINIT"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppDefaultKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
-<p>Initializes <code class="PARAMETER">mngr</code>
- with simple keys store <a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID"><span class="TYPE">xmlSecSimpleKeysStoreId</span></a>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrInit"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppDefaultKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
+<p>Initializes <em class="parameter"><code>mngr</code></em>
+ with simple keys store <a class="link" href="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId" title="xmlSecSimpleKeysStoreId"><span class="type">xmlSecSimpleKeysStoreId</span></a>
and a default OpenSSL crypto key data stores.</p>
-<div class="REFSECT3">
-<a name="AEN29152"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29154"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN29163"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPDEFAULTKEYSMNGRADOPTKEY"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecOpenSSLAppDefaultKeysMngrAdoptKey
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
-<p>Adds <code class="PARAMETER">key</code>
- to the keys manager <code class="PARAMETER">mngr</code>
- created with <a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecOpenSSLAppDefaultKeysMngrInit</span></a>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
+<p>Adds <em class="parameter"><code>key</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
+ created with <a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrInit" title="xmlSecOpenSSLAppDefaultKeysMngrInit ()"><span class="type">xmlSecOpenSSLAppDefaultKeysMngrInit</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN29184"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29186"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN29201"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPDEFAULTKEYSMNGRLOAD"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppDefaultKeysMngrLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *uri</code>);</pre>
-<p>Loads XML keys file from <code class="PARAMETER">uri</code>
- to the keys manager <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrLoad"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppDefaultKeysMngrLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *uri</code></em>);</pre>
+<p>Loads XML keys file from <em class="parameter"><code>uri</code></em>
+ to the keys manager <em class="parameter"><code>mngr</code></em>
created
-with <a href="xmlsec-openssl-app.html#XMLSECOPENSSLAPPDEFAULTKEYSMNGRINIT"><span class="TYPE">xmlSecOpenSSLAppDefaultKeysMngrInit</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN29222"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29224"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with <a class="link" href="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrInit" title="xmlSecOpenSSLAppDefaultKeysMngrInit ()"><span class="type">xmlSecOpenSSLAppDefaultKeysMngrInit</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN29239"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPDEFAULTKEYSMNGRSAVE"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrSave ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppDefaultKeysMngrSave (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Saves keys from <code class="PARAMETER">mngr</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrSave"></a><h3>xmlSecOpenSSLAppDefaultKeysMngrSave ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppDefaultKeysMngrSave (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Saves keys from <em class="parameter"><code>mngr</code></em>
to XML keys file.</p>
-<div class="REFSECT3">
-<a name="AEN29260"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29262"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrSave.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the destination filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the destination filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the type of keys to save (public/private/symmetric).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the type of keys to save (public/private/symmetric).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN29283"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppDefaultKeysMngrSave.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYSMNGRCERTLOAD"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeysMngrCertLoad (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoad"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeysMngrCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>filename</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN29308"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29310"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate in <code class="PARAMETER">filename</code>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate in <em class="parameter"><code>filename</code></em>
trusted or not.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29338"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYSMNGRCERTLOADMEMORY"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadMemory"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecOpenSSLAppKeysMngrCertLoadMemory
- (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
-<p>Reads cert from binary buffer <code class="PARAMETER">data</code>
+ (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
+<p>Reads cert from binary buffer <em class="parameter"><code>data</code></em>
and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN29366"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29368"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate trusted or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29401"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYSMNGRCERTLOADBIO"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoadBIO ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeysMngrCertLoadBIO (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER"><font><span class="TYPE">BIO</span></font> *bio</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadBIO"></a><h3>xmlSecOpenSSLAppKeysMngrCertLoadBIO ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeysMngrCertLoadBIO (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code><font><span class="type">BIO</span></font> *bio</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Reads cert from an OpenSSL BIO object and adds to the list of trusted or known
-untrusted certs in <code class="PARAMETER">store</code>
+untrusted certs in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN29425"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29427"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadBIO.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bio</p></td>
-<td><p>the certificate BIO.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bio</p></td>
+<td class="parameter_description"><p>the certificate BIO.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the flag that indicates is the certificate trusted or not.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the flag that indicates is the certificate trusted or not.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29454"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrCertLoadBIO.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYSMNGRADDCERTSPATH"></a><h3>xmlSecOpenSSLAppKeysMngrAddCertsPath ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeysMngrAddCertsPath (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *path</code>);</pre>
-<p>Reads cert from <code class="PARAMETER">path</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsPath"></a><h3>xmlSecOpenSSLAppKeysMngrAddCertsPath ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeysMngrAddCertsPath (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *path</code></em>);</pre>
+<p>Reads cert from <em class="parameter"><code>path</code></em>
and adds to the list of trusted certificates.</p>
-<div class="REFSECT3">
-<a name="AEN29472"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29474"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsPath.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>path</p></td>
-<td><p>the path to trusted certificates.</p></td>
-<td> </td>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p>the path to trusted certificates.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29489"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsPath.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYSMNGRADDCERTSFILE"></a><h3>xmlSecOpenSSLAppKeysMngrAddCertsFile ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeysMngrAddCertsFile (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>);</pre>
-<p>Reads certs from <code class="PARAMETER">file</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsFile"></a><h3>xmlSecOpenSSLAppKeysMngrAddCertsFile ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeysMngrAddCertsFile (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>);</pre>
+<p>Reads certs from <em class="parameter"><code>file</code></em>
and adds to the list of trusted certificates.
-It is possible for <code class="PARAMETER">file</code>
+It is possible for <em class="parameter"><code>file</code></em>
to contain multiple certs.</p>
-<div class="REFSECT3">
-<a name="AEN29508"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29510"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsFile.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>mngr</p></td>
-<td><p>the keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>file</p></td>
-<td><p>the file containing trusted certificates.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the file containing trusted certificates.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29525"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeysMngrAddCertsFile.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYLOAD"></a><h3>xmlSecOpenSSLAppKeyLoad ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppKeyLoad (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyLoad"></a><h3>xmlSecOpenSSLAppKeyLoad ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppKeyLoad (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the a file.</p>
-<div class="REFSECT3">
-<a name="AEN29551"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29553"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29586"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoad.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYLOADMEMORY"></a><h3>xmlSecOpenSSLAppKeyLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppKeyLoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyLoadMemory"></a><h3>xmlSecOpenSSLAppKeyLoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppKeyLoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the memory buffer.</p>
-<div class="REFSECT3">
-<a name="AEN29615"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29617"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the binary key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of binary key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of binary key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29656"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYLOADBIO"></a><h3>xmlSecOpenSSLAppKeyLoadBIO ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppKeyLoadBIO (<code class="PARAMETER"><font><span class="TYPE">BIO</span></font> *bio</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyLoadBIO"></a><h3>xmlSecOpenSSLAppKeyLoadBIO ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppKeyLoadBIO (<em class="parameter"><code><font><span class="type">BIO</span></font> *bio</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key from the an OpenSSL BIO object.</p>
-<div class="REFSECT3">
-<a name="AEN29682"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29684"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoadBIO.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bio</p></td>
-<td><p>the key BIO.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bio</p></td>
+<td class="parameter_description"><p>the key BIO.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the key file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the key file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the key file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the key file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the key password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the key password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29717"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyLoadBIO.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPPKCS12LOAD"></a><h3>xmlSecOpenSSLAppPkcs12Load ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppPkcs12Load (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppPkcs12Load"></a><h3>xmlSecOpenSSLAppPkcs12Load ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppPkcs12Load (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 file.
For uniformity, call xmlSecOpenSSLAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN29740"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29742"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12Load.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>filename</p></td>
-<td><p>the PKCS12 key filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the PKCS12 key filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29769"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12Load.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPPKCS12LOADMEMORY"></a><h3>xmlSecOpenSSLAppPkcs12LoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppPkcs12LoadMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppPkcs12LoadMemory"></a><h3>xmlSecOpenSSLAppPkcs12LoadMemory ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppPkcs12LoadMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 data in memory buffer.
For uniformity, call xmlSecOpenSSLAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN29795"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29797"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12LoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the PKCS12 binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the PKCS12 binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the PKCS12 binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29830"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12LoadMemory.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPPKCS12LOADBIO"></a><h3>xmlSecOpenSSLAppPkcs12LoadBIO ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppPkcs12LoadBIO (<code class="PARAMETER"><font><span class="TYPE">BIO</span></font> *bio</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *pwd</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallback</code>,
- <code class="PARAMETER"><font><span class="TYPE">void</span></font> *pwdCallbackCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppPkcs12LoadBIO"></a><h3>xmlSecOpenSSLAppPkcs12LoadBIO ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppPkcs12LoadBIO (<em class="parameter"><code><font><span class="type">BIO</span></font> *bio</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *pwd</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallback</code></em>,
+ <em class="parameter"><code><font><span class="type">void</span></font> *pwdCallbackCtx</code></em>);</pre>
<p>Reads key and all associated certificates from the PKCS12 data in an OpenSSL BIO object.
For uniformity, call xmlSecOpenSSLAppKeyLoad instead of this function. Pass
in format=xmlSecKeyDataFormatPkcs12.</p>
-<div class="REFSECT3">
-<a name="AEN29853"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29855"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12LoadBIO.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bio</p></td>
-<td><p>the PKCS12 key bio.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bio</p></td>
+<td class="parameter_description"><p>the PKCS12 key bio.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwd</p></td>
-<td><p>the PKCS12 file password.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwd</p></td>
+<td class="parameter_description"><p>the PKCS12 file password.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallback</p></td>
-<td><p>the password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallback</p></td>
+<td class="parameter_description"><p>the password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pwdCallbackCtx</p></td>
-<td><p>the user context for password callback.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pwdCallbackCtx</p></td>
+<td class="parameter_description"><p>the user context for password callback.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29882"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppPkcs12LoadBIO.returns"></a><h4>Returns</h4>
<p> pointer to the key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYCERTLOAD"></a><h3>xmlSecOpenSSLAppKeyCertLoad ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeyCertLoad (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
-<p>Reads the certificate from $<code class="PARAMETER">filename</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyCertLoad"></a><h3>xmlSecOpenSSLAppKeyCertLoad ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeyCertLoad (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
+<p>Reads the certificate from $<em class="parameter"><code>filename</code></em>
and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN29903"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29905"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoad.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>filename</p></td>
-<td><p>the certificate filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certificate filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29926"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoad.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYCERTLOADMEMORY"></a><h3>xmlSecOpenSSLAppKeyCertLoadMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeyCertLoadMemory (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyCertLoadMemory"></a><h3>xmlSecOpenSSLAppKeyCertLoadMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeyCertLoadMemory (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Reads the certificate from memory buffer and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN29949"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN29951"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoadMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the certificate binary data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the certificate binary data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the certificate binary data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the certificate binary data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN29978"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoadMemory.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYCERTLOADBIO"></a><h3>xmlSecOpenSSLAppKeyCertLoadBIO ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLAppKeyCertLoadBIO (<code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>,
- <code class="PARAMETER"><font><span class="TYPE">BIO</span></font> *bio</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyCertLoadBIO"></a><h3>xmlSecOpenSSLAppKeyCertLoadBIO ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLAppKeyCertLoadBIO (<em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
+ <em class="parameter"><code><font><span class="type">BIO</span></font> *bio</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Reads the certificate from memory buffer and adds it to key.</p>
-<div class="REFSECT3">
-<a name="AEN29998"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30000"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoadBIO.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bio</p></td>
-<td><p>the certificate bio.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bio</p></td>
+<td class="parameter_description"><p>the certificate bio.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the certificate file format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the certificate file format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN30021"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyCertLoadBIO.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPKEYFROMCERTLOADBIO"></a><h3>xmlSecOpenSSLAppKeyFromCertLoadBIO ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keys.html#XMLSECKEY"><span class="RETURNVALUE">xmlSecKeyPtr</span></a>
-xmlSecOpenSSLAppKeyFromCertLoadBIO (<code class="PARAMETER"><font><span class="TYPE">BIO</span></font> *bio</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATAFORMAT"><span class="TYPE">xmlSecKeyDataFormat</span></a> format</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppKeyFromCertLoadBIO"></a><h3>xmlSecOpenSSLAppKeyFromCertLoadBIO ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="returnvalue">xmlSecKeyPtr</span></a>
+xmlSecOpenSSLAppKeyFromCertLoadBIO (<em class="parameter"><code><font><span class="type">BIO</span></font> *bio</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataFormat" title="enum xmlSecKeyDataFormat"><span class="type">xmlSecKeyDataFormat</span></a> format</code></em>);</pre>
<p>Loads public key from cert.</p>
-<div class="REFSECT3">
-<a name="AEN30038"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30040"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyFromCertLoadBIO.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>bio</p></td>
-<td><p>the BIO.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bio</p></td>
+<td class="parameter_description"><p>the BIO.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>format</p></td>
-<td><p>the cert format.</p></td>
-<td> </td>
+<td class="parameter_name"><p>format</p></td>
+<td class="parameter_description"><p>the cert format.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN30055"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppKeyFromCertLoadBIO.returns"></a><h4>Returns</h4>
<p> pointer to key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLAPPGETDEFAULTPWDCALLBACK"></a><h3>xmlSecOpenSSLAppGetDefaultPwdCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font> *
-xmlSecOpenSSLAppGetDefaultPwdCallback (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLAppGetDefaultPwdCallback"></a><h3>xmlSecOpenSSLAppGetDefaultPwdCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font> *
+xmlSecOpenSSLAppGetDefaultPwdCallback (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets default password callback.</p>
-<div class="REFSECT3">
-<a name="AEN30068"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLAppGetDefaultPwdCallback.returns"></a><h4>Returns</h4>
<p> default password callback.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-APP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-openssl-app.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-ref.html"><b>&lt;&lt;&lt; XML Security Library for OpenSLL API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-bn.html"><b>bn &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-bn.html b/docs/api/xmlsec-openssl-bn.html
index 138747cf..0f3ce994 100644
--- a/docs/api/xmlsec-openssl-bn.html
+++ b/docs/api/xmlsec-openssl-bn.html
@@ -1,244 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>bn</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="PREVIOUS" title="app" href="xmlsec-openssl-app.html">
-<link rel="NEXT" title="crypto" href="xmlsec-openssl-crypto.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>bn: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="prev" href="xmlsec-openssl-app.html" title="app">
+<link rel="next" href="xmlsec-openssl-crypto.html" title="crypto">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-openssl-bn.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-app.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-crypto.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-OPENSSL-BN"></a>bn</h1>
-<div class="REFNAMEDIV">
-<a name="AEN30079"></a><h2>Name</h2>bn -- Big numbers helper functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-BN.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30084"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-openssl-bn"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-openssl-bn.top_of_page"></a>bn</span></h2>
+<p>bn — Big numbers (BIGNUM) support functions implementation for OpenSSL.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-openssl-bn.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-bn.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>
-<font><span class="RETURNVALUE">BIGNUM</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-bn.html#XMLSECOPENSSLNODEGETBNVALUE">xmlSecOpenSSLNodeGetBNValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">BIGNUM</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeGetBNValue" title="xmlSecOpenSSLNodeGetBNValue ()">xmlSecOpenSSLNodeGetBNValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-bn.html#XMLSECOPENSSLNODESETBNVALUE">xmlSecOpenSSLNodeSetBNValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeSetBNValue" title="xmlSecOpenSSLNodeSetBNValue ()">xmlSecOpenSSLNodeSetBNValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-BN.DESCRIPTION"></a><h2>Description</h2>
-<p>Big numbers helper functions.</p>
+<div class="refsect1">
+<a name="xmlsec-openssl-bn.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-BN.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLNODEGETBNVALUE"></a><h3>xmlSecOpenSSLNodeGetBNValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">BIGNUM</span></font> *
-xmlSecOpenSSLNodeGetBNValue (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER"><font><span class="TYPE">BIGNUM</span></font> **a</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-openssl-bn.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecOpenSSLNodeGetBNValue"></a><h3>xmlSecOpenSSLNodeGetBNValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">BIGNUM</span></font> *
+xmlSecOpenSSLNodeGetBNValue (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code><font><span class="type">BIGNUM</span></font> **a</code></em>);</pre>
<p>Converts the node content from CryptoBinary format
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-CryptoBinary</span></font>)
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-CryptoBinary</span></font>)
to a BIGNUM. If no BIGNUM buffer provided then a new
BIGNUM is created (caller is responsible for freeing it).</p>
-<div class="REFSECT3">
-<a name="AEN30122"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30124"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLNodeGetBNValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cur</p></td>
-<td><p>the poitner to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>a</p></td>
-<td><p>the BIGNUM buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>a</p></td>
+<td class="parameter_description"><p>the BIGNUM buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN30139"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLNodeGetBNValue.returns"></a><h4>Returns</h4>
<p> a pointer to BIGNUM produced from CryptoBinary string
or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLNODESETBNVALUE"></a><h3>xmlSecOpenSSLNodeSetBNValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLNodeSetBNValue (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER">const <font><span class="TYPE">BIGNUM</span></font> *a</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> addLineBreaks</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLNodeSetBNValue"></a><h3>xmlSecOpenSSLNodeSetBNValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLNodeSetBNValue (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">BIGNUM</span></font> *a</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> addLineBreaks</code></em>);</pre>
<p>Converts BIGNUM to CryptoBinary string
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-CryptoBinary</span></font>)
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-CryptoBinary</span></font>)
and sets it as the content of the given node. If the
addLineBreaks is set then line breaks are added
before and after the CryptoBinary string.</p>
-<div class="REFSECT3">
-<a name="AEN30161"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30163"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLNodeSetBNValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>a</p></td>
-<td><p>the BIGNUM.</p></td>
-<td> </td>
+<td class="parameter_name"><p>a</p></td>
+<td class="parameter_description"><p>the BIGNUM.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>addLineBreaks</p></td>
-<td><p>if the flag is equal to 1 then
+<td class="parameter_name"><p>addLineBreaks</p></td>
+<td class="parameter_description"><p>if the flag is equal to 1 then
linebreaks will be added before and after
new buffer content.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN30184"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLNodeSetBNValue.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 otherwise.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-BN.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-openssl-bn.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-app.html"><b>&lt;&lt;&lt; app</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-crypto.html"><b>crypto &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-crypto.html b/docs/api/xmlsec-openssl-crypto.html
index 017def09..1b354b25 100644
--- a/docs/api/xmlsec-openssl-crypto.html
+++ b/docs/api/xmlsec-openssl-crypto.html
@@ -1,2533 +1,2806 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>crypto</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="PREVIOUS" title="bn" href="xmlsec-openssl-bn.html">
-<link rel="NEXT" title="evp" href="xmlsec-openssl-evp.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>crypto: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="prev" href="xmlsec-openssl-bn.html" title="bn">
+<link rel="next" href="xmlsec-openssl-evp.html" title="evp">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-bn.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-openssl-crypto.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-bn.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-evp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-OPENSSL-CRYPTO"></a>crypto</h1>
-<div class="REFNAMEDIV">
-<a name="AEN30195"></a><h2>Name</h2>crypto -- Crypto transforms implementation for OpenSSL.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-CRYPTO.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30200"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
+<div class="refentry">
+<a name="xmlsec-openssl-crypto"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-openssl-crypto.top_of_page"></a>crypto</span></h2>
+<p>crypto — Crypto transforms implementation for OpenSSL.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECCRYPTOGETFUNCTIONS-OPENSSL">xmlSecCryptoGetFunctions_openssl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecCryptoGetFunctions-openssl" title="xmlSecCryptoGetFunctions_openssl ()">xmlSecCryptoGetFunctions_openssl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLINIT">xmlSecOpenSSLInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLInit" title="xmlSecOpenSSLInit ()">xmlSecOpenSSLInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLSHUTDOWN">xmlSecOpenSSLShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLShutdown" title="xmlSecOpenSSLShutdown ()">xmlSecOpenSSLShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYSMNGRINIT">xmlSecOpenSSLKeysMngrInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeysMngrInit" title="xmlSecOpenSSLKeysMngrInit ()">xmlSecOpenSSLKeysMngrInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLGENERATERANDOM">xmlSecOpenSSLGenerateRandom</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLGenerateRandom" title="xmlSecOpenSSLGenerateRandom ()">xmlSecOpenSSLGenerateRandom</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLSETDEFAULTTRUSTEDCERTSFOLDER">xmlSecOpenSSLSetDefaultTrustedCertsFolder</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLSetDefaultTrustedCertsFolder" title="xmlSecOpenSSLSetDefaultTrustedCertsFolder ()">xmlSecOpenSSLSetDefaultTrustedCertsFolder</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLGETDEFAULTTRUSTEDCERTSFOLDER">xmlSecOpenSSLGetDefaultTrustedCertsFolder</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLGetDefaultTrustedCertsFolder" title="xmlSecOpenSSLGetDefaultTrustedCertsFolder ()">xmlSecOpenSSLGetDefaultTrustedCertsFolder</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESGETKLASS">xmlSecOpenSSLKeyDataAesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesGetKlass" title="xmlSecOpenSSLKeyDataAesGetKlass ()">xmlSecOpenSSLKeyDataAesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESSET">xmlSecOpenSSLKeyDataAesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesSet" title="xmlSecOpenSSLKeyDataAesSet ()">xmlSecOpenSSLKeyDataAesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES128CBCGETKLASS">xmlSecOpenSSLTransformAes128CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcGetKlass" title="xmlSecOpenSSLTransformAes128CbcGetKlass ()">xmlSecOpenSSLTransformAes128CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES192CBCGETKLASS">xmlSecOpenSSLTransformAes192CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcGetKlass" title="xmlSecOpenSSLTransformAes192CbcGetKlass ()">xmlSecOpenSSLTransformAes192CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES256CBCGETKLASS">xmlSecOpenSSLTransformAes256CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcGetKlass" title="xmlSecOpenSSLTransformAes256CbcGetKlass ()">xmlSecOpenSSLTransformAes256CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128GETKLASS">xmlSecOpenSSLTransformKWAes128GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmGetKlass" title="xmlSecOpenSSLTransformAes128GcmGetKlass ()">xmlSecOpenSSLTransformAes128GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES192GETKLASS">xmlSecOpenSSLTransformKWAes192GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmGetKlass" title="xmlSecOpenSSLTransformAes192GcmGetKlass ()">xmlSecOpenSSLTransformAes192GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES256GETKLASS">xmlSecOpenSSLTransformKWAes256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmGetKlass" title="xmlSecOpenSSLTransformAes256GcmGetKlass ()">xmlSecOpenSSLTransformAes256GcmGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESGETKLASS">xmlSecOpenSSLKeyDataDesGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128GetKlass" title="xmlSecOpenSSLTransformKWAes128GetKlass ()">xmlSecOpenSSLTransformKWAes128GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESSET">xmlSecOpenSSLKeyDataDesSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192GetKlass" title="xmlSecOpenSSLTransformKWAes192GetKlass ()">xmlSecOpenSSLTransformKWAes192GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDES3CBCGETKLASS">xmlSecOpenSSLTransformDes3CbcGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256GetKlass" title="xmlSecOpenSSLTransformKWAes256GetKlass ()">xmlSecOpenSSLTransformKWAes256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3GETKLASS">xmlSecOpenSSLTransformKWDes3GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesGetKlass" title="xmlSecOpenSSLKeyDataDesGetKlass ()">xmlSecOpenSSLKeyDataDesGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETKLASS">xmlSecOpenSSLKeyDataDsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesSet" title="xmlSecOpenSSLKeyDataDesSet ()">xmlSecOpenSSLKeyDataDesSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAADOPTDSA">xmlSecOpenSSLKeyDataDsaAdoptDsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcGetKlass" title="xmlSecOpenSSLTransformDes3CbcGetKlass ()">xmlSecOpenSSLTransformDes3CbcGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">DSA</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETDSA">xmlSecOpenSSLKeyDataDsaGetDsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3GetKlass" title="xmlSecOpenSSLTransformKWDes3GetKlass ()">xmlSecOpenSSLTransformKWDes3GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAADOPTEVP">xmlSecOpenSSLKeyDataDsaAdoptEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetKlass" title="xmlSecOpenSSLKeyDataDsaGetKlass ()">xmlSecOpenSSLKeyDataDsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EVP_PKEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAGETEVP">xmlSecOpenSSLKeyDataDsaGetEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptDsa" title="xmlSecOpenSSLKeyDataDsaAdoptDsa ()">xmlSecOpenSSLKeyDataDsaAdoptDsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA1GETKLASS">xmlSecOpenSSLTransformDsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">DSA</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetDsa" title="xmlSecOpenSSLKeyDataDsaGetDsa ()">xmlSecOpenSSLKeyDataDsaGetDsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA256GETKLASS">xmlSecOpenSSLTransformDsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptEvp" title="xmlSecOpenSSLKeyDataDsaAdoptEvp ()">xmlSecOpenSSLKeyDataDsaAdoptEvp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">EVP_PKEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetEvp" title="xmlSecOpenSSLKeyDataDsaGetEvp ()">xmlSecOpenSSLKeyDataDsaGetEvp</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1GetKlass" title="xmlSecOpenSSLTransformDsaSha1GetKlass ()">xmlSecOpenSSLTransformDsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETKLASS">xmlSecOpenSSLKeyDataEcdsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256GetKlass" title="xmlSecOpenSSLTransformDsaSha256GetKlass ()">xmlSecOpenSSLTransformDsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAADOPTECDSA">xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetKlass" title="xmlSecOpenSSLKeyDataEcdsaGetKlass ()">xmlSecOpenSSLKeyDataEcdsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EC_KEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETECDSA">xmlSecOpenSSLKeyDataEcdsaGetEcdsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa" title="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ()">xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAADOPTEVP">xmlSecOpenSSLKeyDataEcdsaAdoptEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">EC_KEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEcdsa" title="xmlSecOpenSSLKeyDataEcdsaGetEcdsa ()">xmlSecOpenSSLKeyDataEcdsaGetEcdsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EVP_PKEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAGETEVP">xmlSecOpenSSLKeyDataEcdsaGetEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEvp" title="xmlSecOpenSSLKeyDataEcdsaAdoptEvp ()">xmlSecOpenSSLKeyDataEcdsaAdoptEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA1GETKLASS">xmlSecOpenSSLTransformEcdsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">EVP_PKEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEvp" title="xmlSecOpenSSLKeyDataEcdsaGetEvp ()">xmlSecOpenSSLKeyDataEcdsaGetEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA224GETKLASS">xmlSecOpenSSLTransformEcdsaSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1GetKlass" title="xmlSecOpenSSLTransformEcdsaSha1GetKlass ()">xmlSecOpenSSLTransformEcdsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA256GETKLASS">xmlSecOpenSSLTransformEcdsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224GetKlass" title="xmlSecOpenSSLTransformEcdsaSha224GetKlass ()">xmlSecOpenSSLTransformEcdsaSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA384GETKLASS">xmlSecOpenSSLTransformEcdsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256GetKlass" title="xmlSecOpenSSLTransformEcdsaSha256GetKlass ()">xmlSecOpenSSLTransformEcdsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA512GETKLASS">xmlSecOpenSSLTransformEcdsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384GetKlass" title="xmlSecOpenSSLTransformEcdsaSha384GetKlass ()">xmlSecOpenSSLTransformEcdsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOST2001GETKLASS">xmlSecOpenSSLKeyDataGost2001GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512GetKlass" title="xmlSecOpenSSLTransformEcdsaSha512GetKlass ()">xmlSecOpenSSLTransformEcdsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOST2001GOSTR3411-94GETKLASS">xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001GetKlass" title="xmlSecOpenSSLKeyDataGost2001GetKlass ()">xmlSecOpenSSLKeyDataGost2001GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-94GETKLASS">xmlSecOpenSSLTransformGostR3411_94GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass" title="xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass ()">xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOSTR3410-2012-256GETKLASS">xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-94GetKlass" title="xmlSecOpenSSLTransformGostR3411_94GetKlass ()">xmlSecOpenSSLTransformGostR3411_94GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOSTR3410-2012-512GETKLASS">xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass" title="xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass ()">xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-256GETKLASS">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass" title="xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass ()">xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-512GETKLASS">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256GetKlass" title="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass ()">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-2012-256GETKLASS">xmlSecOpenSSLTransformGostR3411_2012_256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512GetKlass" title="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass ()">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-2012-512GETKLASS">xmlSecOpenSSLTransformGostR3411_2012_512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-256GetKlass" title="xmlSecOpenSSLTransformGostR3411_2012_256GetKlass ()">xmlSecOpenSSLTransformGostR3411_2012_256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLHMACGETMINOUTPUTLENGTH">xmlSecOpenSSLHmacGetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-512GetKlass" title="xmlSecOpenSSLTransformGostR3411_2012_512GetKlass ()">xmlSecOpenSSLTransformGostR3411_2012_512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLHMACSETMINOUTPUTLENGTH">xmlSecOpenSSLHmacSetMinOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacGetMinOutputLength" title="xmlSecOpenSSLHmacGetMinOutputLength ()">xmlSecOpenSSLHmacGetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACGETKLASS">xmlSecOpenSSLKeyDataHmacGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacSetMinOutputLength" title="xmlSecOpenSSLHmacSetMinOutputLength ()">xmlSecOpenSSLHmacSetMinOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACSET">xmlSecOpenSSLKeyDataHmacSet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacGetKlass" title="xmlSecOpenSSLKeyDataHmacGetKlass ()">xmlSecOpenSSLKeyDataHmacGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACMD5GETKLASS">xmlSecOpenSSLTransformHmacMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacSet" title="xmlSecOpenSSLKeyDataHmacSet ()">xmlSecOpenSSLKeyDataHmacSet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACRIPEMD160GETKLASS">xmlSecOpenSSLTransformHmacRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5GetKlass" title="xmlSecOpenSSLTransformHmacMd5GetKlass ()">xmlSecOpenSSLTransformHmacMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1GETKLASS">xmlSecOpenSSLTransformHmacSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160GetKlass" title="xmlSecOpenSSLTransformHmacRipemd160GetKlass ()">xmlSecOpenSSLTransformHmacRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA224GETKLASS">xmlSecOpenSSLTransformHmacSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1GetKlass" title="xmlSecOpenSSLTransformHmacSha1GetKlass ()">xmlSecOpenSSLTransformHmacSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA256GETKLASS">xmlSecOpenSSLTransformHmacSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224GetKlass" title="xmlSecOpenSSLTransformHmacSha224GetKlass ()">xmlSecOpenSSLTransformHmacSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA384GETKLASS">xmlSecOpenSSLTransformHmacSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256GetKlass" title="xmlSecOpenSSLTransformHmacSha256GetKlass ()">xmlSecOpenSSLTransformHmacSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA512GETKLASS">xmlSecOpenSSLTransformHmacSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384GetKlass" title="xmlSecOpenSSLTransformHmacSha384GetKlass ()">xmlSecOpenSSLTransformHmacSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMMD5GETKLASS">xmlSecOpenSSLTransformMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512GetKlass" title="xmlSecOpenSSLTransformHmacSha512GetKlass ()">xmlSecOpenSSLTransformHmacSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160GETKLASS">xmlSecOpenSSLTransformRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5GetKlass" title="xmlSecOpenSSLTransformMd5GetKlass ()">xmlSecOpenSSLTransformMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETKLASS">xmlSecOpenSSLKeyDataRsaGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160GetKlass" title="xmlSecOpenSSLTransformRipemd160GetKlass ()">xmlSecOpenSSLTransformRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAADOPTRSA">xmlSecOpenSSLKeyDataRsaAdoptRsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetKlass" title="xmlSecOpenSSLKeyDataRsaGetKlass ()">xmlSecOpenSSLKeyDataRsaGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">RSA</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETRSA">xmlSecOpenSSLKeyDataRsaGetRsa</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptRsa" title="xmlSecOpenSSLKeyDataRsaAdoptRsa ()">xmlSecOpenSSLKeyDataRsaAdoptRsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAADOPTEVP">xmlSecOpenSSLKeyDataRsaAdoptEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">RSA</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetRsa" title="xmlSecOpenSSLKeyDataRsaGetRsa ()">xmlSecOpenSSLKeyDataRsaGetRsa</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EVP_PKEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAGETEVP">xmlSecOpenSSLKeyDataRsaGetEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptEvp" title="xmlSecOpenSSLKeyDataRsaAdoptEvp ()">xmlSecOpenSSLKeyDataRsaAdoptEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAMD5GETKLASS">xmlSecOpenSSLTransformRsaMd5GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">EVP_PKEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetEvp" title="xmlSecOpenSSLKeyDataRsaGetEvp ()">xmlSecOpenSSLKeyDataRsaGetEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSARIPEMD160GETKLASS">xmlSecOpenSSLTransformRsaRipemd160GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5GetKlass" title="xmlSecOpenSSLTransformRsaMd5GetKlass ()">xmlSecOpenSSLTransformRsaMd5GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1GETKLASS">xmlSecOpenSSLTransformRsaSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160GetKlass" title="xmlSecOpenSSLTransformRsaRipemd160GetKlass ()">xmlSecOpenSSLTransformRsaRipemd160GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA224GETKLASS">xmlSecOpenSSLTransformRsaSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1GetKlass" title="xmlSecOpenSSLTransformRsaSha1GetKlass ()">xmlSecOpenSSLTransformRsaSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA256GETKLASS">xmlSecOpenSSLTransformRsaSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224GetKlass" title="xmlSecOpenSSLTransformRsaSha224GetKlass ()">xmlSecOpenSSLTransformRsaSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA384GETKLASS">xmlSecOpenSSLTransformRsaSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256GetKlass" title="xmlSecOpenSSLTransformRsaSha256GetKlass ()">xmlSecOpenSSLTransformRsaSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA512GETKLASS">xmlSecOpenSSLTransformRsaSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384GetKlass" title="xmlSecOpenSSLTransformRsaSha384GetKlass ()">xmlSecOpenSSLTransformRsaSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1GETKLASS">xmlSecOpenSSLTransformRsaPkcs1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512GetKlass" title="xmlSecOpenSSLTransformRsaSha512GetKlass ()">xmlSecOpenSSLTransformRsaSha512GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPGETKLASS">xmlSecOpenSSLTransformRsaOaepGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1GetKlass" title="xmlSecOpenSSLTransformRsaPkcs1GetKlass ()">xmlSecOpenSSLTransformRsaPkcs1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1GETKLASS">xmlSecOpenSSLTransformSha1GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepGetKlass" title="xmlSecOpenSSLTransformRsaOaepGetKlass ()">xmlSecOpenSSLTransformRsaOaepGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA224GETKLASS">xmlSecOpenSSLTransformSha224GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1GetKlass" title="xmlSecOpenSSLTransformSha1GetKlass ()">xmlSecOpenSSLTransformSha1GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA256GETKLASS">xmlSecOpenSSLTransformSha256GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224GetKlass" title="xmlSecOpenSSLTransformSha224GetKlass ()">xmlSecOpenSSLTransformSha224GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA384GETKLASS">xmlSecOpenSSLTransformSha384GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256GetKlass" title="xmlSecOpenSSLTransformSha256GetKlass ()">xmlSecOpenSSLTransformSha256GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA512GETKLASS">xmlSecOpenSSLTransformSha512GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384GetKlass" title="xmlSecOpenSSLTransformSha384GetKlass ()">xmlSecOpenSSLTransformSha384GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-ERRORS-LIB:CAPS">XMLSEC_OPENSSL_ERRORS_LIB</a></td>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512GetKlass" title="xmlSecOpenSSLTransformSha512GetKlass ()">xmlSecOpenSSLTransformSha512GetKlass</a> <span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLERRORSDEFAULTCALLBACK">xmlSecOpenSSLErrorsDefaultCallback</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLErrorsDefaultCallback" title="xmlSecOpenSSLErrorsDefaultCallback ()">xmlSecOpenSSLErrorsDefaultCallback</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-CRYPTO.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN30755"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAAESID">xmlSecOpenSSLKeyDataAesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-API-100:CAPS" title="XMLSEC_OPENSSL_API_100">XMLSEC_OPENSSL_API_100</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-API-110:CAPS" title="XMLSEC_OPENSSL_API_110">XMLSEC_OPENSSL_API_110</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-AES:CAPS" title="XMLSEC_NO_AES">XMLSEC_NO_AES</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-DES:CAPS" title="XMLSEC_NO_DES">XMLSEC_NO_DES</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-DSA:CAPS" title="XMLSEC_NO_DSA">XMLSEC_NO_DSA</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-ECDSA:CAPS" title="XMLSEC_NO_ECDSA">XMLSEC_NO_ECDSA</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-GOST:CAPS" title="XMLSEC_NO_GOST">XMLSEC_NO_GOST</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-GOST2012:CAPS" title="XMLSEC_NO_GOST2012">XMLSEC_NO_GOST2012</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-HMAC:CAPS" title="XMLSEC_NO_HMAC">XMLSEC_NO_HMAC</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-MD5:CAPS" title="XMLSEC_NO_MD5">XMLSEC_NO_MD5</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-RIPEMD160:CAPS" title="XMLSEC_NO_RIPEMD160">XMLSEC_NO_RIPEMD160</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-RSA:CAPS" title="XMLSEC_NO_RSA">XMLSEC_NO_RSA</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA1:CAPS" title="XMLSEC_NO_SHA1">XMLSEC_NO_SHA1</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA256:CAPS" title="XMLSEC_NO_SHA256">XMLSEC_NO_SHA256</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA224:CAPS" title="XMLSEC_NO_SHA224">XMLSEC_NO_SHA224</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA384:CAPS" title="XMLSEC_NO_SHA384">XMLSEC_NO_SHA384</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES128CBCID">xmlSecOpenSSLTransformAes128CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA512:CAPS" title="XMLSEC_NO_SHA512">XMLSEC_NO_SHA512</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES192CBCID">xmlSecOpenSSLTransformAes192CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#XMLSEC-NO-X509:CAPS" title="XMLSEC_NO_X509">XMLSEC_NO_X509</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMAES256CBCID">xmlSecOpenSSLTransformAes256CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesId" title="xmlSecOpenSSLKeyDataAesId">xmlSecOpenSSLKeyDataAesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128ID">xmlSecOpenSSLTransformKWAes128Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcId" title="xmlSecOpenSSLTransformAes128CbcId">xmlSecOpenSSLTransformAes128CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES192ID">xmlSecOpenSSLTransformKWAes192Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcId" title="xmlSecOpenSSLTransformAes192CbcId">xmlSecOpenSSLTransformAes192CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES256ID">xmlSecOpenSSLTransformKWAes256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcId" title="xmlSecOpenSSLTransformAes256CbcId">xmlSecOpenSSLTransformAes256CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADESID">xmlSecOpenSSLKeyDataDesId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmId" title="xmlSecOpenSSLTransformAes128GcmId">xmlSecOpenSSLTransformAes128GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDES3CBCID">xmlSecOpenSSLTransformDes3CbcId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmId" title="xmlSecOpenSSLTransformAes192GcmId">xmlSecOpenSSLTransformAes192GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3ID">xmlSecOpenSSLTransformKWDes3Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmId" title="xmlSecOpenSSLTransformAes256GcmId">xmlSecOpenSSLTransformAes256GcmId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATADSAID">xmlSecOpenSSLKeyDataDsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128Id" title="xmlSecOpenSSLTransformKWAes128Id">xmlSecOpenSSLTransformKWAes128Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA1ID">xmlSecOpenSSLTransformDsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192Id" title="xmlSecOpenSSLTransformKWAes192Id">xmlSecOpenSSLTransformKWAes192Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMDSASHA256ID">xmlSecOpenSSLTransformDsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256Id" title="xmlSecOpenSSLTransformKWAes256Id">xmlSecOpenSSLTransformKWAes256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAECDSAID">xmlSecOpenSSLKeyDataEcdsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesId" title="xmlSecOpenSSLKeyDataDesId">xmlSecOpenSSLKeyDataDesId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA1ID">xmlSecOpenSSLTransformEcdsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcId" title="xmlSecOpenSSLTransformDes3CbcId">xmlSecOpenSSLTransformDes3CbcId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA224ID">xmlSecOpenSSLTransformEcdsaSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3Id" title="xmlSecOpenSSLTransformKWDes3Id">xmlSecOpenSSLTransformKWDes3Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA256ID">xmlSecOpenSSLTransformEcdsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaId" title="xmlSecOpenSSLKeyDataDsaId">xmlSecOpenSSLKeyDataDsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA384ID">xmlSecOpenSSLTransformEcdsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1Id" title="xmlSecOpenSSLTransformDsaSha1Id">xmlSecOpenSSLTransformDsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMECDSASHA512ID">xmlSecOpenSSLTransformEcdsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256Id" title="xmlSecOpenSSLTransformDsaSha256Id">xmlSecOpenSSLTransformDsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOST2001ID">xmlSecOpenSSLKeyDataGost2001Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaId" title="xmlSecOpenSSLKeyDataEcdsaId">xmlSecOpenSSLKeyDataEcdsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOST2001GOSTR3411-94ID">xmlSecOpenSSLTransformGost2001GostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1Id" title="xmlSecOpenSSLTransformEcdsaSha1Id">xmlSecOpenSSLTransformEcdsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-94ID">xmlSecOpenSSLTransformGostR3411_94Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224Id" title="xmlSecOpenSSLTransformEcdsaSha224Id">xmlSecOpenSSLTransformEcdsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOSTR3410-2012-256ID">xmlSecOpenSSLKeyDataGostR3410_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256Id" title="xmlSecOpenSSLTransformEcdsaSha256Id">xmlSecOpenSSLTransformEcdsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAGOSTR3410-2012-512ID">xmlSecOpenSSLKeyDataGostR3410_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384Id" title="xmlSecOpenSSLTransformEcdsaSha384Id">xmlSecOpenSSLTransformEcdsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-256ID">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512Id" title="xmlSecOpenSSLTransformEcdsaSha512Id">xmlSecOpenSSLTransformEcdsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-512ID">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001Id" title="xmlSecOpenSSLKeyDataGost2001Id">xmlSecOpenSSLKeyDataGost2001Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-2012-256ID">xmlSecOpenSSLTransformGostR3411_2012_256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGost2001GostR3411-94Id" title="xmlSecOpenSSLTransformGost2001GostR3411_94Id">xmlSecOpenSSLTransformGost2001GostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMGOSTR3411-2012-512ID">xmlSecOpenSSLTransformGostR3411_2012_512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-94Id" title="xmlSecOpenSSLTransformGostR3411_94Id">xmlSecOpenSSLTransformGostR3411_94Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATAHMACID">xmlSecOpenSSLKeyDataHmacId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-256Id" title="xmlSecOpenSSLKeyDataGostR3410_2012_256Id">xmlSecOpenSSLKeyDataGostR3410_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACMD5ID">xmlSecOpenSSLTransformHmacMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-512Id" title="xmlSecOpenSSLKeyDataGostR3410_2012_512Id">xmlSecOpenSSLKeyDataGostR3410_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACRIPEMD160ID">xmlSecOpenSSLTransformHmacRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256Id" title="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1ID">xmlSecOpenSSLTransformHmacSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512Id" title="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id">xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA224ID">xmlSecOpenSSLTransformHmacSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-256Id" title="xmlSecOpenSSLTransformGostR3411_2012_256Id">xmlSecOpenSSLTransformGostR3411_2012_256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA256ID">xmlSecOpenSSLTransformHmacSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-512Id" title="xmlSecOpenSSLTransformGostR3411_2012_512Id">xmlSecOpenSSLTransformGostR3411_2012_512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA384ID">xmlSecOpenSSLTransformHmacSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacId" title="xmlSecOpenSSLKeyDataHmacId">xmlSecOpenSSLKeyDataHmacId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA512ID">xmlSecOpenSSLTransformHmacSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5Id" title="xmlSecOpenSSLTransformHmacMd5Id">xmlSecOpenSSLTransformHmacMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMMD5ID">xmlSecOpenSSLTransformMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160Id" title="xmlSecOpenSSLTransformHmacRipemd160Id">xmlSecOpenSSLTransformHmacRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160ID">xmlSecOpenSSLTransformRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1Id" title="xmlSecOpenSSLTransformHmacSha1Id">xmlSecOpenSSLTransformHmacSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLKEYDATARSAID">xmlSecOpenSSLKeyDataRsaId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224Id" title="xmlSecOpenSSLTransformHmacSha224Id">xmlSecOpenSSLTransformHmacSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAMD5ID">xmlSecOpenSSLTransformRsaMd5Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256Id" title="xmlSecOpenSSLTransformHmacSha256Id">xmlSecOpenSSLTransformHmacSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSARIPEMD160ID">xmlSecOpenSSLTransformRsaRipemd160Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384Id" title="xmlSecOpenSSLTransformHmacSha384Id">xmlSecOpenSSLTransformHmacSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1ID">xmlSecOpenSSLTransformRsaSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512Id" title="xmlSecOpenSSLTransformHmacSha512Id">xmlSecOpenSSLTransformHmacSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA224ID">xmlSecOpenSSLTransformRsaSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5Id" title="xmlSecOpenSSLTransformMd5Id">xmlSecOpenSSLTransformMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA256ID">xmlSecOpenSSLTransformRsaSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160Id" title="xmlSecOpenSSLTransformRipemd160Id">xmlSecOpenSSLTransformRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA384ID">xmlSecOpenSSLTransformRsaSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaId" title="xmlSecOpenSSLKeyDataRsaId">xmlSecOpenSSLKeyDataRsaId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA512ID">xmlSecOpenSSLTransformRsaSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5Id" title="xmlSecOpenSSLTransformRsaMd5Id">xmlSecOpenSSLTransformRsaMd5Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1ID">xmlSecOpenSSLTransformRsaPkcs1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160Id" title="xmlSecOpenSSLTransformRsaRipemd160Id">xmlSecOpenSSLTransformRsaRipemd160Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPID">xmlSecOpenSSLTransformRsaOaepId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1Id" title="xmlSecOpenSSLTransformRsaSha1Id">xmlSecOpenSSLTransformRsaSha1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1ID">xmlSecOpenSSLTransformSha1Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224Id" title="xmlSecOpenSSLTransformRsaSha224Id">xmlSecOpenSSLTransformRsaSha224Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA224ID">xmlSecOpenSSLTransformSha224Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256Id" title="xmlSecOpenSSLTransformRsaSha256Id">xmlSecOpenSSLTransformRsaSha256Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA256ID">xmlSecOpenSSLTransformSha256Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384Id" title="xmlSecOpenSSLTransformRsaSha384Id">xmlSecOpenSSLTransformRsaSha384Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA384ID">xmlSecOpenSSLTransformSha384Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512Id" title="xmlSecOpenSSLTransformRsaSha512Id">xmlSecOpenSSLTransformRsaSha512Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA512ID">xmlSecOpenSSLTransformSha512Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1Id" title="xmlSecOpenSSLTransformRsaPkcs1Id">xmlSecOpenSSLTransformRsaPkcs1Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-ERRORS-FUNCTION:CAPS">XMLSEC_OPENSSL_ERRORS_FUNCTION</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepId" title="xmlSecOpenSSLTransformRsaOaepId">xmlSecOpenSSLTransformRsaOaepId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1Id" title="xmlSecOpenSSLTransformSha1Id">xmlSecOpenSSLTransformSha1Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224Id" title="xmlSecOpenSSLTransformSha224Id">xmlSecOpenSSLTransformSha224Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256Id" title="xmlSecOpenSSLTransformSha256Id">xmlSecOpenSSLTransformSha256Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384Id" title="xmlSecOpenSSLTransformSha384Id">xmlSecOpenSSLTransformSha384Id</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512Id" title="xmlSecOpenSSLTransformSha512Id">xmlSecOpenSSLTransformSha512Id</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-CRYPTO.DESCRIPTION"></a><h2>Description</h2>
-<p>Crypto transforms implementation for OpenSSL.</p>
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-CRYPTO.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECCRYPTOGETFUNCTIONS-OPENSSL"></a><h3>xmlSecCryptoGetFunctions_openssl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecCryptoDLFunctionsPtr</span></font>
-xmlSecCryptoGetFunctions_openssl (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecCryptoGetFunctions-openssl"></a><h3>xmlSecCryptoGetFunctions_openssl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecCryptoDLFunctionsPtr</span></font>
+xmlSecCryptoGetFunctions_openssl (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the pointer to xmlsec-openssl functions table.</p>
-<div class="REFSECT3">
-<a name="AEN30989"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCryptoGetFunctions-openssl.returns"></a><h4>Returns</h4>
<p> the xmlsec-openssl functions table or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLINIT"></a><h3>xmlSecOpenSSLInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLInit"></a><h3>xmlSecOpenSSLInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine initialization.</p>
-<div class="REFSECT3">
-<a name="AEN31002"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLSHUTDOWN"></a><h3>xmlSecOpenSSLShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLShutdown"></a><h3>xmlSecOpenSSLShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>XMLSec library specific crypto engine shutdown.</p>
-<div class="REFSECT3">
-<a name="AEN31015"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLShutdown.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYSMNGRINIT"></a><h3>xmlSecOpenSSLKeysMngrInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeysMngrInit (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> mngr</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeysMngrInit"></a><h3>xmlSecOpenSSLKeysMngrInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeysMngrInit (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> mngr</code></em>);</pre>
<p>Adds OpenSSL specific key data stores in keys manager.</p>
-<div class="REFSECT3">
-<a name="AEN31029"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31031"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeysMngrInit.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>mngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31040"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeysMngrInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLGENERATERANDOM"></a><h3>xmlSecOpenSSLGenerateRandom ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLGenerateRandom (<code class="PARAMETER"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Generates <code class="PARAMETER">size</code>
- random bytes and puts result in <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLGenerateRandom"></a><h3>xmlSecOpenSSLGenerateRandom ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLGenerateRandom (<em class="parameter"><code><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Generates <em class="parameter"><code>size</code></em>
+ random bytes and puts result in <em class="parameter"><code>buffer</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN31059"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31061"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLGenerateRandom.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the destination buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the destination buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the numer of bytes to generate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the numer of bytes to generate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31076"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLGenerateRandom.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLSETDEFAULTTRUSTEDCERTSFOLDER"></a><h3>xmlSecOpenSSLSetDefaultTrustedCertsFolder ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLSetDefaultTrustedCertsFolder"></a><h3>xmlSecOpenSSLSetDefaultTrustedCertsFolder ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecOpenSSLSetDefaultTrustedCertsFolder
- (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *path</code>);</pre>
+ (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *path</code></em>);</pre>
<p>Sets the default trusted certs folder.</p>
-<div class="REFSECT3">
-<a name="AEN31090"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31092"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLSetDefaultTrustedCertsFolder.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>path</p></td>
-<td><p>the default trusted certs path.</p></td>
-<td> </td>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p>the default trusted certs path.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31101"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLSetDefaultTrustedCertsFolder.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLGETDEFAULTTRUSTEDCERTSFOLDER"></a><h3>xmlSecOpenSSLGetDefaultTrustedCertsFolder ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">xmlChar</span></font> *
+<div class="refsect2">
+<a name="xmlSecOpenSSLGetDefaultTrustedCertsFolder"></a><h3>xmlSecOpenSSLGetDefaultTrustedCertsFolder ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
xmlSecOpenSSLGetDefaultTrustedCertsFolder
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the default trusted certs folder.</p>
-<div class="REFSECT3">
-<a name="AEN31114"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLGetDefaultTrustedCertsFolder.returns"></a><h4>Returns</h4>
<p> the default trusted cert folder.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAAESGETKLASS"></a><h3>xmlSecOpenSSLKeyDataAesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataAesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataAesGetKlass"></a><h3>xmlSecOpenSSLKeyDataAesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataAesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31127"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataAesGetKlass.returns"></a><h4>Returns</h4>
<p> AES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAAESSET"></a><h3>xmlSecOpenSSLKeyDataAesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataAesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataAesSet"></a><h3>xmlSecOpenSSLKeyDataAesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataAesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of AES key data.</p>
-<div class="REFSECT3">
-<a name="AEN31147"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31149"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataAesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to AES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to AES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31170"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataAesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES128CBCGETKLASS"></a><h3>xmlSecOpenSSLTransformAes128CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes128CbcGetKlass"></a><h3>xmlSecOpenSSLTransformAes128CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformAes128CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 128 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31183"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes128CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 128 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES192CBCGETKLASS"></a><h3>xmlSecOpenSSLTransformAes192CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes192CbcGetKlass"></a><h3>xmlSecOpenSSLTransformAes192CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformAes192CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 192 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31196"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes192CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 192 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES256CBCGETKLASS"></a><h3>xmlSecOpenSSLTransformAes256CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes256CbcGetKlass"></a><h3>xmlSecOpenSSLTransformAes256CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformAes256CbcGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>AES 256 CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31209"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes256CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to AES 256 CBC encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES128GETKLASS"></a><h3>xmlSecOpenSSLTransformKWAes128GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes128GcmGetKlass"></a><h3>xmlSecOpenSSLTransformAes128GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformAes128GcmGetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 128 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes128GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 128 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes192GcmGetKlass"></a><h3>xmlSecOpenSSLTransformAes192GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformAes192GcmGetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 192 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes192GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 192 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes256GcmGetKlass"></a><h3>xmlSecOpenSSLTransformAes256GcmGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformAes256GcmGetKlass
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>AES 256 GCM encryption transform klass.</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformAes256GcmGetKlass.returns"></a><h4>Returns</h4>
+<p> pointer to AES 256 GCM encryption transform.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes128GetKlass"></a><h3>xmlSecOpenSSLTransformKWAes128GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformKWAes128GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-128 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31222"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformKWAes128GetKlass.returns"></a><h4>Returns</h4>
<p> AES-128 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES192GETKLASS"></a><h3>xmlSecOpenSSLTransformKWAes192GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes192GetKlass"></a><h3>xmlSecOpenSSLTransformKWAes192GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformKWAes192GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-192 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31235"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformKWAes192GetKlass.returns"></a><h4>Returns</h4>
<p> AES-192 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES256GETKLASS"></a><h3>xmlSecOpenSSLTransformKWAes256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes256GetKlass"></a><h3>xmlSecOpenSSLTransformKWAes256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformKWAes256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The AES-256 kew wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31248"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformKWAes256GetKlass.returns"></a><h4>Returns</h4>
<p> AES-256 kew wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADESGETKLASS"></a><h3>xmlSecOpenSSLKeyDataDesGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataDesGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDesGetKlass"></a><h3>xmlSecOpenSSLKeyDataDesGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataDesGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DES key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31261"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDesGetKlass.returns"></a><h4>Returns</h4>
<p> DES key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADESSET"></a><h3>xmlSecOpenSSLKeyDataDesSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataDesSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDesSet"></a><h3>xmlSecOpenSSLKeyDataDesSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataDesSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of DES key data.</p>
-<div class="REFSECT3">
-<a name="AEN31281"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31283"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDesSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DES key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DES key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31304"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDesSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDES3CBCGETKLASS"></a><h3>xmlSecOpenSSLTransformDes3CbcGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformDes3CbcGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDes3CbcGetKlass"></a><h3>xmlSecOpenSSLTransformDes3CbcGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformDes3CbcGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Triple DES CBC encryption transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31317"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformDes3CbcGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to Triple DES encryption transform.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWDES3GETKLASS"></a><h3>xmlSecOpenSSLTransformKWDes3GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformKWDes3GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWDes3GetKlass"></a><h3>xmlSecOpenSSLTransformKWDes3GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformKWDes3GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Triple DES key wrapper transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31330"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformKWDes3GetKlass.returns"></a><h4>Returns</h4>
<p> Triple DES key wrapper transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAGETKLASS"></a><h3>xmlSecOpenSSLKeyDataDsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataDsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaGetKlass"></a><h3>xmlSecOpenSSLKeyDataDsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataDsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31343"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to DSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAADOPTDSA"></a><h3>xmlSecOpenSSLKeyDataDsaAdoptDsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataDsaAdoptDsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">DSA</span></font> *dsa</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptDsa"></a><h3>xmlSecOpenSSLKeyDataDsaAdoptDsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataDsaAdoptDsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">DSA</span></font> *dsa</code></em>);</pre>
<p>Sets the value of DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31360"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31362"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptDsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dsa</p></td>
-<td><p>the pointer to OpenSSL DSA key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsa</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL DSA key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31377"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptDsa.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAGETDSA"></a><h3>xmlSecOpenSSLKeyDataDsaGetDsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">DSA</span></font> *
-xmlSecOpenSSLKeyDataDsaGetDsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaGetDsa"></a><h3>xmlSecOpenSSLKeyDataDsaGetDsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">DSA</span></font> *
+xmlSecOpenSSLKeyDataDsaGetDsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL DSA key from DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31391"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31393"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaGetDsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31402"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaGetDsa.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL DSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAADOPTEVP"></a><h3>xmlSecOpenSSLKeyDataDsaAdoptEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataDsaAdoptEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptEvp"></a><h3>xmlSecOpenSSLKeyDataDsaAdoptEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataDsaAdoptEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
<p>Sets the DSA key data value to OpenSSL EVP key.</p>
-<div class="REFSECT3">
-<a name="AEN31419"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31421"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to OpenSSL EVP key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL EVP key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31436"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaAdoptEvp.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAGETEVP"></a><h3>xmlSecOpenSSLKeyDataDsaGetEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EVP_PKEY</span></font> *
-xmlSecOpenSSLKeyDataDsaGetEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaGetEvp"></a><h3>xmlSecOpenSSLKeyDataDsaGetEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EVP_PKEY</span></font> *
+xmlSecOpenSSLKeyDataDsaGetEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL EVP key from DSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31450"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31452"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaGetEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to DSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to DSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31461"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataDsaGetEvp.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL EVP key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDSASHA1GETKLASS"></a><h3>xmlSecOpenSSLTransformDsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformDsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDsaSha1GetKlass"></a><h3>xmlSecOpenSSLTransformDsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformDsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31474"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformDsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDSASHA256GETKLASS"></a><h3>xmlSecOpenSSLTransformDsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDsaSha256GetKlass"></a><h3>xmlSecOpenSSLTransformDsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformDsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The DSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31487"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformDsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> DSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAGETKLASS"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataEcdsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetKlass"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataEcdsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31500"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to ECDSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAADOPTECDSA"></a><h3>xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">EC_KEY</span></font> *ecdsa</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa"></a><h3>xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">EC_KEY</span></font> *ecdsa</code></em>);</pre>
<p>Sets the value of ECDSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31517"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31519"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to ECDSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to ECDSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ecdsa</p></td>
-<td><p>the pointer to OpenSSL ECDSA key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ecdsa</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL ECDSA key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31534"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAGETECDSA"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetEcdsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EC_KEY</span></font> *
-xmlSecOpenSSLKeyDataEcdsaGetEcdsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEcdsa"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetEcdsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EC_KEY</span></font> *
+xmlSecOpenSSLKeyDataEcdsaGetEcdsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL ECDSA key from ECDSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31548"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31550"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEcdsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to ECDSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to ECDSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31559"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEcdsa.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL ECDSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAADOPTEVP"></a><h3>xmlSecOpenSSLKeyDataEcdsaAdoptEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataEcdsaAdoptEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEvp"></a><h3>xmlSecOpenSSLKeyDataEcdsaAdoptEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataEcdsaAdoptEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
<p>Sets the ECDSA key data value to OpenSSL EVP key.</p>
-<div class="REFSECT3">
-<a name="AEN31576"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31578"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to ECDSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to ECDSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to OpenSSL EVP key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL EVP key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN31593"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaAdoptEvp.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAGETEVP"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EVP_PKEY</span></font> *
-xmlSecOpenSSLKeyDataEcdsaGetEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEvp"></a><h3>xmlSecOpenSSLKeyDataEcdsaGetEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EVP_PKEY</span></font> *
+xmlSecOpenSSLKeyDataEcdsaGetEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL EVP key from ECDSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN31607"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31609"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to ECDSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to ECDSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31618"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataEcdsaGetEvp.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL EVP key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA1GETKLASS"></a><h3>xmlSecOpenSSLTransformEcdsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha1GetKlass"></a><h3>xmlSecOpenSSLTransformEcdsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformEcdsaSha1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31631"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformEcdsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA224GETKLASS"></a><h3>xmlSecOpenSSLTransformEcdsaSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha224GetKlass"></a><h3>xmlSecOpenSSLTransformEcdsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformEcdsaSha224GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA224 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31644"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformEcdsaSha224GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA224 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA256GETKLASS"></a><h3>xmlSecOpenSSLTransformEcdsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha256GetKlass"></a><h3>xmlSecOpenSSLTransformEcdsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformEcdsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31657"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformEcdsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA384GETKLASS"></a><h3>xmlSecOpenSSLTransformEcdsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha384GetKlass"></a><h3>xmlSecOpenSSLTransformEcdsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformEcdsaSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31670"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformEcdsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA512GETKLASS"></a><h3>xmlSecOpenSSLTransformEcdsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha512GetKlass"></a><h3>xmlSecOpenSSLTransformEcdsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformEcdsaSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The ECDSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31683"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformEcdsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> ECDSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOST2001GETKLASS"></a><h3>xmlSecOpenSSLKeyDataGost2001GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataGost2001GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGost2001GetKlass"></a><h3>xmlSecOpenSSLKeyDataGost2001GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataGost2001GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST2001 key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31696"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataGost2001GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST2001 key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOST2001GOSTR3411-94GETKLASS"></a><h3>xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass"></a><h3>xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST2001-GOSTR3411_94 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31709"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> GOST2001-GOSTR3411_94 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-94GETKLASS"></a><h3>xmlSecOpenSSLTransformGostR3411_94GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-94GetKlass"></a><h3>xmlSecOpenSSLTransformGostR3411_94GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGostR3411_94GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOSTR3411_94 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31722"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformGostR3411-94GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOSTR3411_94 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOSTR3410-2012-256GETKLASS"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 256 bit key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31735"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.10-2012 256 bit key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOSTR3410-2012-512GETKLASS"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The GOST R 34.10-2012 512 bit key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31748"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.10-2012 512 bit key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-256GETKLASS"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256GetKlass"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p></p>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-512GETKLASS"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512GetKlass"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p></p>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-2012-256GETKLASS"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-256GetKlass"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGostR3411_2012_256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOST R 34.11-2012 256 bit digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31781"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.11-2012 256 bit digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-2012-512GETKLASS"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-512GetKlass"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformGostR3411_2012_512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>GOST R 34.11-2012 512 bit digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31794"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to GOST R 34.11-2012 512 bit digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLHMACGETMINOUTPUTLENGTH"></a><h3>xmlSecOpenSSLHmacGetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLHmacGetMinOutputLength (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLHmacGetMinOutputLength"></a><h3>xmlSecOpenSSLHmacGetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLHmacGetMinOutputLength (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets the value of min HMAC length.</p>
-<div class="REFSECT3">
-<a name="AEN31807"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLHmacGetMinOutputLength.returns"></a><h4>Returns</h4>
<p> the min HMAC output length</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLHMACSETMINOUTPUTLENGTH"></a><h3>xmlSecOpenSSLHmacSetMinOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecOpenSSLHmacSetMinOutputLength (<code class="PARAMETER"><font><span class="TYPE">int</span></font> min_length</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLHmacSetMinOutputLength"></a><h3>xmlSecOpenSSLHmacSetMinOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecOpenSSLHmacSetMinOutputLength (<em class="parameter"><code><font><span class="type">int</span></font> min_length</code></em>);</pre>
<p>Sets the min HMAC output length</p>
-<div class="REFSECT3">
-<a name="AEN31821"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31823"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLHmacSetMinOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>min_length</p></td>
-<td><p>the new min length</p></td>
-<td> </td>
+<td class="parameter_name"><p>min_length</p></td>
+<td class="parameter_description"><p>the new min length</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAHMACGETKLASS"></a><h3>xmlSecOpenSSLKeyDataHmacGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataHmacGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataHmacGetKlass"></a><h3>xmlSecOpenSSLKeyDataHmacGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataHmacGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN31842"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataHmacGetKlass.returns"></a><h4>Returns</h4>
<p> HMAC key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAHMACSET"></a><h3>xmlSecOpenSSLKeyDataHmacSet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataHmacSet (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufSize</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataHmacSet"></a><h3>xmlSecOpenSSLKeyDataHmacSet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataHmacSet (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufSize</code></em>);</pre>
<p>Sets the value of HMAC key data.</p>
-<div class="REFSECT3">
-<a name="AEN31862"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN31864"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataHmacSet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to HMAC key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to HMAC key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the pointer to key value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the pointer to key value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufSize</p></td>
-<td><p>the key value size (in bytes).</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufSize</p></td>
+<td class="parameter_description"><p>the key value size (in bytes).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN31885"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataHmacSet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACMD5GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformHmacMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacMd5GetKlass"></a><h3>xmlSecOpenSSLTransformHmacMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformHmacMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-MD5 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31898"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacMd5GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-MD5 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACRIPEMD160GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacRipemd160GetKlass"></a><h3>xmlSecOpenSSLTransformHmacRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-RIPEMD160 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31911"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-RIPEMD160 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA1GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha1GetKlass"></a><h3>xmlSecOpenSSLTransformHmacSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacSha1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA1 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31924"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacSha1GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA1 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA224GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha224GetKlass"></a><h3>xmlSecOpenSSLTransformHmacSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacSha224GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA224 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31937"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacSha224GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA224 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA256GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha256GetKlass"></a><h3>xmlSecOpenSSLTransformHmacSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA256 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31950"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacSha256GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA256 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA384GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha384GetKlass"></a><h3>xmlSecOpenSSLTransformHmacSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA384 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31963"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacSha384GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA384 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA512GETKLASS"></a><h3>xmlSecOpenSSLTransformHmacSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha512GetKlass"></a><h3>xmlSecOpenSSLTransformHmacSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformHmacSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The HMAC-SHA512 transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31976"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformHmacSha512GetKlass.returns"></a><h4>Returns</h4>
<p> the HMAC-SHA512 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMMD5GETKLASS"></a><h3>xmlSecOpenSSLTransformMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformMd5GetKlass"></a><h3>xmlSecOpenSSLTransformMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>MD5 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN31989"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformMd5GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to MD5 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRIPEMD160GETKLASS"></a><h3>xmlSecOpenSSLTransformRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRipemd160GetKlass"></a><h3>xmlSecOpenSSLTransformRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>RIPEMD-160 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32002"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to RIPEMD-160 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAGETKLASS"></a><h3>xmlSecOpenSSLKeyDataRsaGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataRsaGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaGetKlass"></a><h3>xmlSecOpenSSLKeyDataRsaGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataRsaGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The OpenSSL RSA key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN32015"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL RSA key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAADOPTRSA"></a><h3>xmlSecOpenSSLKeyDataRsaAdoptRsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataRsaAdoptRsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">RSA</span></font> *rsa</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptRsa"></a><h3>xmlSecOpenSSLKeyDataRsaAdoptRsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataRsaAdoptRsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">RSA</span></font> *rsa</code></em>);</pre>
<p>Sets the value of RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN32032"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32034"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptRsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>rsa</p></td>
-<td><p>the pointer to OpenSSL RSA key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>rsa</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL RSA key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN32049"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptRsa.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAGETRSA"></a><h3>xmlSecOpenSSLKeyDataRsaGetRsa ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">RSA</span></font> *
-xmlSecOpenSSLKeyDataRsaGetRsa (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaGetRsa"></a><h3>xmlSecOpenSSLKeyDataRsaGetRsa ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">RSA</span></font> *
+xmlSecOpenSSLKeyDataRsaGetRsa (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL RSA key from RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN32063"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32065"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaGetRsa.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN32074"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaGetRsa.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL RSA key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAADOPTEVP"></a><h3>xmlSecOpenSSLKeyDataRsaAdoptEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataRsaAdoptEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptEvp"></a><h3>xmlSecOpenSSLKeyDataRsaAdoptEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataRsaAdoptEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
<p>Sets the RSA key data value to OpenSSL EVP key.</p>
-<div class="REFSECT3">
-<a name="AEN32091"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32093"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to OpenSSL EVP key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL EVP key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN32108"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaAdoptEvp.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAGETEVP"></a><h3>xmlSecOpenSSLKeyDataRsaGetEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EVP_PKEY</span></font> *
-xmlSecOpenSSLKeyDataRsaGetEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaGetEvp"></a><h3>xmlSecOpenSSLKeyDataRsaGetEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EVP_PKEY</span></font> *
+xmlSecOpenSSLKeyDataRsaGetEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the OpenSSL EVP key from RSA key data.</p>
-<div class="REFSECT3">
-<a name="AEN32122"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32124"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaGetEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to RSA key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to RSA key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN32133"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRsaGetEvp.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL EVP key or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAMD5GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaMd5GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformRsaMd5GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaMd5GetKlass"></a><h3>xmlSecOpenSSLTransformRsaMd5GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformRsaMd5GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-MD5 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32146"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaMd5GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-MD5 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSARIPEMD160GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaRipemd160GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaRipemd160GetKlass"></a><h3>xmlSecOpenSSLTransformRsaRipemd160GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaRipemd160GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32159"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaRipemd160GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-RIPEMD160 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA1GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformRsaSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha1GetKlass"></a><h3>xmlSecOpenSSLTransformRsaSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformRsaSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA1 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32172"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaSha1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA1 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA224GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha224GetKlass"></a><h3>xmlSecOpenSSLTransformRsaSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaSha224GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA224 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32185"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaSha224GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA224 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA256GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha256GetKlass"></a><h3>xmlSecOpenSSLTransformRsaSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaSha256GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA256 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32198"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaSha256GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA256 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA384GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha384GetKlass"></a><h3>xmlSecOpenSSLTransformRsaSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaSha384GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA384 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32211"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaSha384GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA384 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA512GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha512GetKlass"></a><h3>xmlSecOpenSSLTransformRsaSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaSha512GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-SHA512 signature transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32224"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaSha512GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-SHA512 signature transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAPKCS1GETKLASS"></a><h3>xmlSecOpenSSLTransformRsaPkcs1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaPkcs1GetKlass"></a><h3>xmlSecOpenSSLTransformRsaPkcs1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecOpenSSLTransformRsaPkcs1GetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-PKCS1 key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32237"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaPkcs1GetKlass.returns"></a><h4>Returns</h4>
<p> RSA-PKCS1 key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAOAEPGETKLASS"></a><h3>xmlSecOpenSSLTransformRsaOaepGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformRsaOaepGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaOaepGetKlass"></a><h3>xmlSecOpenSSLTransformRsaOaepGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformRsaOaepGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The RSA-OAEP key transport transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32250"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformRsaOaepGetKlass.returns"></a><h4>Returns</h4>
<p> RSA-OAEP key transport transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA1GETKLASS"></a><h3>xmlSecOpenSSLTransformSha1GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformSha1GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha1GetKlass"></a><h3>xmlSecOpenSSLTransformSha1GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformSha1GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-1 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32263"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformSha1GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-1 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA224GETKLASS"></a><h3>xmlSecOpenSSLTransformSha224GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformSha224GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha224GetKlass"></a><h3>xmlSecOpenSSLTransformSha224GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformSha224GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-224 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32276"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformSha224GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-224 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA256GETKLASS"></a><h3>xmlSecOpenSSLTransformSha256GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformSha256GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha256GetKlass"></a><h3>xmlSecOpenSSLTransformSha256GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformSha256GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-256 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32289"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformSha256GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-256 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA384GETKLASS"></a><h3>xmlSecOpenSSLTransformSha384GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformSha384GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha384GetKlass"></a><h3>xmlSecOpenSSLTransformSha384GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformSha384GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-384 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32302"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformSha384GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-384 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA512GETKLASS"></a><h3>xmlSecOpenSSLTransformSha512GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecOpenSSLTransformSha512GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha512GetKlass"></a><h3>xmlSecOpenSSLTransformSha512GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecOpenSSLTransformSha512GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>SHA-512 digest transform klass.</p>
-<div class="REFSECT3">
-<a name="AEN32315"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLTransformSha512GetKlass.returns"></a><h4>Returns</h4>
<p> pointer to SHA-512 digest transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-OPENSSL-ERRORS-LIB:CAPS"></a><h3>XMLSEC_OPENSSL_ERRORS_LIB</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_OPENSSL_ERRORS_LIB (ERR_LIB_USER + 57)</pre>
-<p>Macro. The XMLSec library klass for OpenSSL errors reporting functions.</p>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLERRORSDEFAULTCALLBACK"></a><h3>xmlSecOpenSSLErrorsDefaultCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecOpenSSLErrorsDefaultCallback (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> line</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *func</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorObject</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *errorSubject</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> reason</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *msg</code>);</pre>
-<p>The default OpenSSL errors reporting callback function.</p>
-<div class="REFSECT3">
-<a name="AEN32353"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32355"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecOpenSSLErrorsDefaultCallback"></a><h3>xmlSecOpenSSLErrorsDefaultCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecOpenSSLErrorsDefaultCallback (<em class="parameter"><code>const <font><span class="type">char</span></font> *file</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> line</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *func</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorObject</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *errorSubject</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> reason</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *msg</code></em>);</pre>
+<p>The errors reporting callback function.</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLErrorsDefaultCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>file</p></td>
-<td><p>the error location file name (__FILE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the error location file name (__FILE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>line</p></td>
-<td><p>the error location line number (__LINE__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the error location line number (__LINE__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>func</p></td>
-<td><p>the error location function name (__FUNCTION__ macro).</p></td>
-<td> </td>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>the error location function name (__FUNCTION__ macro).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorObject</p></td>
-<td><p>the error specific error object</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorObject</p></td>
+<td class="parameter_description"><p>the error specific error object</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>errorSubject</p></td>
-<td><p>the error specific error subject.</p></td>
-<td> </td>
+<td class="parameter_name"><p>errorSubject</p></td>
+<td class="parameter_description"><p>the error specific error subject.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>reason</p></td>
-<td><p>the error code.</p></td>
-<td> </td>
+<td class="parameter_name"><p>reason</p></td>
+<td class="parameter_description"><p>the error code.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>msg</p></td>
-<td><p>the additional error message.</p></td>
-<td> </td>
+<td class="parameter_name"><p>msg</p></td>
+<td class="parameter_description"><p>the additional error message.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-crypto.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="XMLSEC-OPENSSL-API-100:CAPS"></a><h3>XMLSEC_OPENSSL_API_100</h3>
+<pre class="programlisting">#define XMLSEC_OPENSSL_API_100 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-OPENSSL-API-110:CAPS"></a><h3>XMLSEC_OPENSSL_API_110</h3>
+<pre class="programlisting">#define XMLSEC_OPENSSL_API_110 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-AES:CAPS"></a><h3>XMLSEC_NO_AES</h3>
+<pre class="programlisting">#define XMLSEC_NO_AES 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-DES:CAPS"></a><h3>XMLSEC_NO_DES</h3>
+<pre class="programlisting">#define XMLSEC_NO_DES 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-DSA:CAPS"></a><h3>XMLSEC_NO_DSA</h3>
+<pre class="programlisting">#define XMLSEC_NO_DSA 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-ECDSA:CAPS"></a><h3>XMLSEC_NO_ECDSA</h3>
+<pre class="programlisting">#define XMLSEC_NO_ECDSA 1
+</pre>
</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-GOST:CAPS"></a><h3>XMLSEC_NO_GOST</h3>
+<pre class="programlisting">#define XMLSEC_NO_GOST 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-GOST2012:CAPS"></a><h3>XMLSEC_NO_GOST2012</h3>
+<pre class="programlisting">#define XMLSEC_NO_GOST2012 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-HMAC:CAPS"></a><h3>XMLSEC_NO_HMAC</h3>
+<pre class="programlisting">#define XMLSEC_NO_HMAC 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-MD5:CAPS"></a><h3>XMLSEC_NO_MD5</h3>
+<pre class="programlisting">#define XMLSEC_NO_MD5 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-RIPEMD160:CAPS"></a><h3>XMLSEC_NO_RIPEMD160</h3>
+<pre class="programlisting">#define XMLSEC_NO_RIPEMD160 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-RSA:CAPS"></a><h3>XMLSEC_NO_RSA</h3>
+<pre class="programlisting">#define XMLSEC_NO_RSA 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-SHA1:CAPS"></a><h3>XMLSEC_NO_SHA1</h3>
+<pre class="programlisting">#define XMLSEC_NO_SHA1 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-SHA256:CAPS"></a><h3>XMLSEC_NO_SHA256</h3>
+<pre class="programlisting">#define XMLSEC_NO_SHA256 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-SHA224:CAPS"></a><h3>XMLSEC_NO_SHA224</h3>
+<pre class="programlisting">#define XMLSEC_NO_SHA224 1
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-SHA384:CAPS"></a><h3>XMLSEC_NO_SHA384</h3>
+<pre class="programlisting">#define XMLSEC_NO_SHA384 1
+</pre>
</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-SHA512:CAPS"></a><h3>XMLSEC_NO_SHA512</h3>
+<pre class="programlisting">#define XMLSEC_NO_SHA512 1
+</pre>
</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-NO-X509:CAPS"></a><h3>XMLSEC_NO_X509</h3>
+<pre class="programlisting">#define XMLSEC_NO_X509 1
+</pre>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-CRYPTO.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAAESID"></a><h3>xmlSecOpenSSLKeyDataAesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataAesId</pre>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataAesId"></a><h3>xmlSecOpenSSLKeyDataAesId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataAesId</pre>
<p>The AES key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES128CBCID"></a><h3>xmlSecOpenSSLTransformAes128CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformAes128CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes128CbcId"></a><h3>xmlSecOpenSSLTransformAes128CbcId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes128CbcId</pre>
<p>The AES128 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES192CBCID"></a><h3>xmlSecOpenSSLTransformAes192CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformAes192CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes192CbcId"></a><h3>xmlSecOpenSSLTransformAes192CbcId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes192CbcId</pre>
<p>The AES192 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMAES256CBCID"></a><h3>xmlSecOpenSSLTransformAes256CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformAes256CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes256CbcId"></a><h3>xmlSecOpenSSLTransformAes256CbcId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes256CbcId</pre>
<p>The AES256 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES128ID"></a><h3>xmlSecOpenSSLTransformKWAes128Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformKWAes128Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes128GcmId"></a><h3>xmlSecOpenSSLTransformAes128GcmId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes128GcmId</pre>
+<p>The AES128 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes192GcmId"></a><h3>xmlSecOpenSSLTransformAes192GcmId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes192GcmId</pre>
+<p>The AES192 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformAes256GcmId"></a><h3>xmlSecOpenSSLTransformAes256GcmId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformAes256GcmId</pre>
+<p>The AES256 GCM cipher transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes128Id"></a><h3>xmlSecOpenSSLTransformKWAes128Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformKWAes128Id</pre>
<p>The AES 128 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES192ID"></a><h3>xmlSecOpenSSLTransformKWAes192Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformKWAes192Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes192Id"></a><h3>xmlSecOpenSSLTransformKWAes192Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformKWAes192Id</pre>
<p>The AES 192 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWAES256ID"></a><h3>xmlSecOpenSSLTransformKWAes256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformKWAes256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWAes256Id"></a><h3>xmlSecOpenSSLTransformKWAes256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformKWAes256Id</pre>
<p>The AES 256 key wrap transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADESID"></a><h3>xmlSecOpenSSLKeyDataDesId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataDesId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDesId"></a><h3>xmlSecOpenSSLKeyDataDesId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataDesId</pre>
<p>The DES key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDES3CBCID"></a><h3>xmlSecOpenSSLTransformDes3CbcId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformDes3CbcId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDes3CbcId"></a><h3>xmlSecOpenSSLTransformDes3CbcId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformDes3CbcId</pre>
<p>The DES3 CBC cipher transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMKWDES3ID"></a><h3>xmlSecOpenSSLTransformKWDes3Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformKWDes3Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformKWDes3Id"></a><h3>xmlSecOpenSSLTransformKWDes3Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformKWDes3Id</pre>
<p>The DES3 KW transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATADSAID"></a><h3>xmlSecOpenSSLKeyDataDsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataDsaId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataDsaId"></a><h3>xmlSecOpenSSLKeyDataDsaId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataDsaId</pre>
<p>The DSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDSASHA1ID"></a><h3>xmlSecOpenSSLTransformDsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformDsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDsaSha1Id"></a><h3>xmlSecOpenSSLTransformDsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformDsaSha1Id</pre>
<p>The DSA SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMDSASHA256ID"></a><h3>xmlSecOpenSSLTransformDsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformDsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformDsaSha256Id"></a><h3>xmlSecOpenSSLTransformDsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformDsaSha256Id</pre>
<p>The DSA SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAECDSAID"></a><h3>xmlSecOpenSSLKeyDataEcdsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataEcdsaId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataEcdsaId"></a><h3>xmlSecOpenSSLKeyDataEcdsaId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataEcdsaId</pre>
<p>The ECDSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA1ID"></a><h3>xmlSecOpenSSLTransformEcdsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformEcdsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha1Id"></a><h3>xmlSecOpenSSLTransformEcdsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformEcdsaSha1Id</pre>
<p>The ECDSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA224ID"></a><h3>xmlSecOpenSSLTransformEcdsaSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformEcdsaSha224Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha224Id"></a><h3>xmlSecOpenSSLTransformEcdsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformEcdsaSha224Id</pre>
<p>The ECDSA-SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA256ID"></a><h3>xmlSecOpenSSLTransformEcdsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformEcdsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha256Id"></a><h3>xmlSecOpenSSLTransformEcdsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformEcdsaSha256Id</pre>
<p>The ECDSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA384ID"></a><h3>xmlSecOpenSSLTransformEcdsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformEcdsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha384Id"></a><h3>xmlSecOpenSSLTransformEcdsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformEcdsaSha384Id</pre>
<p>The ECDSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMECDSASHA512ID"></a><h3>xmlSecOpenSSLTransformEcdsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformEcdsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformEcdsaSha512Id"></a><h3>xmlSecOpenSSLTransformEcdsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformEcdsaSha512Id</pre>
<p>The ECDSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOST2001ID"></a><h3>xmlSecOpenSSLKeyDataGost2001Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataGost2001Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGost2001Id"></a><h3>xmlSecOpenSSLKeyDataGost2001Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataGost2001Id</pre>
<p>The GOST2001 key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOST2001GOSTR3411-94ID"></a><h3>xmlSecOpenSSLTransformGost2001GostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGost2001GostR3411_94Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGost2001GostR3411-94Id"></a><h3>xmlSecOpenSSLTransformGost2001GostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGost2001GostR3411_94Id</pre>
<p>The GOST2001 GOSTR3411_94 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-94ID"></a><h3>xmlSecOpenSSLTransformGostR3411_94Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGostR3411_94Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-94Id"></a><h3>xmlSecOpenSSLTransformGostR3411_94Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGostR3411_94Id</pre>
<p>The GOSTR3411_94 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOSTR3410-2012-256ID"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataGostR3410_2012_256Id</pre>
-<p></p>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-256Id"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataGostR3410_2012_256Id</pre>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAGOSTR3410-2012-512ID"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataGostR3410_2012_512Id</pre>
-<p></p>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataGostR3410-2012-512Id"></a><h3>xmlSecOpenSSLKeyDataGostR3410_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataGostR3410_2012_512Id</pre>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-256ID"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256Id"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id</pre>
<p>The GOST R 34.10-2012 - GOST R 3411-2012 256 bit signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3410-2012GOSTR3411-2012-512ID"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512Id"></a><h3>xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id</pre>
<p>The GOST R 34.10-2012 - GOST R 3411-2012 512 bit signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-2012-256ID"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGostR3411_2012_256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-256Id"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGostR3411_2012_256Id</pre>
<p>The GOST R 34.11-2012 256 bit hash transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMGOSTR3411-2012-512ID"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformGostR3411_2012_512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformGostR3411-2012-512Id"></a><h3>xmlSecOpenSSLTransformGostR3411_2012_512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformGostR3411_2012_512Id</pre>
<p>The GOST R 34.11-2012 512 bit hash transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAHMACID"></a><h3>xmlSecOpenSSLKeyDataHmacId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataHmacId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataHmacId"></a><h3>xmlSecOpenSSLKeyDataHmacId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataHmacId</pre>
<p>The DHMAC key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACMD5ID"></a><h3>xmlSecOpenSSLTransformHmacMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacMd5Id"></a><h3>xmlSecOpenSSLTransformHmacMd5Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacMd5Id</pre>
<p>The HMAC with MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACRIPEMD160ID"></a><h3>xmlSecOpenSSLTransformHmacRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacRipemd160Id"></a><h3>xmlSecOpenSSLTransformHmacRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacRipemd160Id</pre>
<p>The HMAC with RipeMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA1ID"></a><h3>xmlSecOpenSSLTransformHmacSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha1Id"></a><h3>xmlSecOpenSSLTransformHmacSha1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacSha1Id</pre>
<p>The HMAC with SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA224ID"></a><h3>xmlSecOpenSSLTransformHmacSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacSha224Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha224Id"></a><h3>xmlSecOpenSSLTransformHmacSha224Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacSha224Id</pre>
<p>The HMAC with SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA256ID"></a><h3>xmlSecOpenSSLTransformHmacSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha256Id"></a><h3>xmlSecOpenSSLTransformHmacSha256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacSha256Id</pre>
<p>The HMAC with SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA384ID"></a><h3>xmlSecOpenSSLTransformHmacSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha384Id"></a><h3>xmlSecOpenSSLTransformHmacSha384Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacSha384Id</pre>
<p>The HMAC with SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMHMACSHA512ID"></a><h3>xmlSecOpenSSLTransformHmacSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformHmacSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformHmacSha512Id"></a><h3>xmlSecOpenSSLTransformHmacSha512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformHmacSha512Id</pre>
<p>The HMAC with SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMMD5ID"></a><h3>xmlSecOpenSSLTransformMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformMd5Id"></a><h3>xmlSecOpenSSLTransformMd5Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformMd5Id</pre>
<p>The MD5 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRIPEMD160ID"></a><h3>xmlSecOpenSSLTransformRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRipemd160Id"></a><h3>xmlSecOpenSSLTransformRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRipemd160Id</pre>
<p>The RIPEMD160 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARSAID"></a><h3>xmlSecOpenSSLKeyDataRsaId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataRsaId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRsaId"></a><h3>xmlSecOpenSSLKeyDataRsaId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataRsaId</pre>
<p>The RSA key klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAMD5ID"></a><h3>xmlSecOpenSSLTransformRsaMd5Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaMd5Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaMd5Id"></a><h3>xmlSecOpenSSLTransformRsaMd5Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaMd5Id</pre>
<p>The RSA-MD5 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSARIPEMD160ID"></a><h3>xmlSecOpenSSLTransformRsaRipemd160Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaRipemd160Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaRipemd160Id"></a><h3>xmlSecOpenSSLTransformRsaRipemd160Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaRipemd160Id</pre>
<p>The RSA-RIPEMD160 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA1ID"></a><h3>xmlSecOpenSSLTransformRsaSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha1Id"></a><h3>xmlSecOpenSSLTransformRsaSha1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaSha1Id</pre>
<p>The RSA-SHA1 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA224ID"></a><h3>xmlSecOpenSSLTransformRsaSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaSha224Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha224Id"></a><h3>xmlSecOpenSSLTransformRsaSha224Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaSha224Id</pre>
<p>The RSA-SHA224 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA256ID"></a><h3>xmlSecOpenSSLTransformRsaSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha256Id"></a><h3>xmlSecOpenSSLTransformRsaSha256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaSha256Id</pre>
<p>The RSA-SHA256 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA384ID"></a><h3>xmlSecOpenSSLTransformRsaSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha384Id"></a><h3>xmlSecOpenSSLTransformRsaSha384Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaSha384Id</pre>
<p>The RSA-SHA384 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSASHA512ID"></a><h3>xmlSecOpenSSLTransformRsaSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaSha512Id"></a><h3>xmlSecOpenSSLTransformRsaSha512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaSha512Id</pre>
<p>The RSA-SHA512 signature transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAPKCS1ID"></a><h3>xmlSecOpenSSLTransformRsaPkcs1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaPkcs1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaPkcs1Id"></a><h3>xmlSecOpenSSLTransformRsaPkcs1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaPkcs1Id</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMRSAOAEPID"></a><h3>xmlSecOpenSSLTransformRsaOaepId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformRsaOaepId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformRsaOaepId"></a><h3>xmlSecOpenSSLTransformRsaOaepId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformRsaOaepId</pre>
<p>The RSA PKCS1 key transport transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA1ID"></a><h3>xmlSecOpenSSLTransformSha1Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformSha1Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha1Id"></a><h3>xmlSecOpenSSLTransformSha1Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformSha1Id</pre>
<p>The SHA1 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA224ID"></a><h3>xmlSecOpenSSLTransformSha224Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformSha224Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha224Id"></a><h3>xmlSecOpenSSLTransformSha224Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformSha224Id</pre>
<p>The SHA224 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA256ID"></a><h3>xmlSecOpenSSLTransformSha256Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformSha256Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha256Id"></a><h3>xmlSecOpenSSLTransformSha256Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformSha256Id</pre>
<p>The SHA256 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA384ID"></a><h3>xmlSecOpenSSLTransformSha384Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformSha384Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha384Id"></a><h3>xmlSecOpenSSLTransformSha384Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformSha384Id</pre>
<p>The SHA384 digest transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLTRANSFORMSHA512ID"></a><h3>xmlSecOpenSSLTransformSha512Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLTransformSha512Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLTransformSha512Id"></a><h3>xmlSecOpenSSLTransformSha512Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLTransformSha512Id</pre>
<p>The SHA512 digest transform klass.</p>
</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-OPENSSL-ERRORS-FUNCTION:CAPS"></a><h3>XMLSEC_OPENSSL_ERRORS_FUNCTION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_OPENSSL_ERRORS_FUNCTION 0</pre>
-<p>Macro. The XMLSec library functions OpenSSL errors reporting functions.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-bn.html"><b>&lt;&lt;&lt; bn</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-evp.html"><b>evp &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-evp.html b/docs/api/xmlsec-openssl-evp.html
index 4cbb836d..6bec7001 100644
--- a/docs/api/xmlsec-openssl-evp.html
+++ b/docs/api/xmlsec-openssl-evp.html
@@ -1,290 +1,208 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>evp</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="PREVIOUS" title="crypto" href="xmlsec-openssl-crypto.html">
-<link rel="NEXT" title="x509" href="xmlsec-openssl-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>evp: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="prev" href="xmlsec-openssl-crypto.html" title="crypto">
+<link rel="next" href="xmlsec-openssl-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-openssl-evp.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-crypto.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-OPENSSL-EVP"></a>evp</h1>
-<div class="REFNAMEDIV">
-<a name="AEN32731"></a><h2>Name</h2>evp -- EVP keys data implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-EVP.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32736"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-openssl-evp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-openssl-evp.top_of_page"></a>evp</span></h2>
+<p>evp — Private/public (EVP) keys implementation for OpenSSL.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-openssl-evp.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-evp.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDATAADOPTEVP">xmlSecOpenSSLEvpKeyDataAdoptEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataAdoptEvp" title="xmlSecOpenSSLEvpKeyDataAdoptEvp ()">xmlSecOpenSSLEvpKeyDataAdoptEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EVP_PKEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDATAGETEVP">xmlSecOpenSSLEvpKeyDataGetEvp</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">EVP_PKEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataGetEvp" title="xmlSecOpenSSLEvpKeyDataGetEvp ()">xmlSecOpenSSLEvpKeyDataGetEvp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">EVP_PKEY</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYDUP">xmlSecOpenSSLEvpKeyDup</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">EVP_PKEY</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDup" title="xmlSecOpenSSLEvpKeyDup ()">xmlSecOpenSSLEvpKeyDup</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-evp.html#XMLSECOPENSSLEVPKEYADOPT">xmlSecOpenSSLEvpKeyAdopt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyAdopt" title="xmlSecOpenSSLEvpKeyAdopt ()">xmlSecOpenSSLEvpKeyAdopt</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-evp.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-EVP.DESCRIPTION"></a><h2>Description</h2>
-<p>EVP keys data implementation.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-EVP.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLEVPKEYDATAADOPTEVP"></a><h3>xmlSecOpenSSLEvpKeyDataAdoptEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLEvpKeyDataAdoptEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
+<div class="refsect1">
+<a name="xmlsec-openssl-evp.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecOpenSSLEvpKeyDataAdoptEvp"></a><h3>xmlSecOpenSSLEvpKeyDataAdoptEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLEvpKeyDataAdoptEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
<p>Sets the value of key data.</p>
-<div class="REFSECT3">
-<a name="AEN32786"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32788"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDataAdoptEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to OpenSSL EVP key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL EVP key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to EVP key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to EVP key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN32803"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDataAdoptEvp.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLEVPKEYDATAGETEVP"></a><h3>xmlSecOpenSSLEvpKeyDataGetEvp ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EVP_PKEY</span></font> *
-xmlSecOpenSSLEvpKeyDataGetEvp (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLEvpKeyDataGetEvp"></a><h3>xmlSecOpenSSLEvpKeyDataGetEvp ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EVP_PKEY</span></font> *
+xmlSecOpenSSLEvpKeyDataGetEvp (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the EVP_PKEY from the key data.</p>
-<div class="REFSECT3">
-<a name="AEN32817"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32819"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDataGetEvp.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to OpenSSL EVP data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL EVP data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN32828"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDataGetEvp.returns"></a><h4>Returns</h4>
<p> pointer to EVP_PKEY or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLEVPKEYDUP"></a><h3>xmlSecOpenSSLEvpKeyDup ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">EVP_PKEY</span></font> *
-xmlSecOpenSSLEvpKeyDup (<code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
-<p>Duplicates <code class="PARAMETER">pKey</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLEvpKeyDup"></a><h3>xmlSecOpenSSLEvpKeyDup ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">EVP_PKEY</span></font> *
+xmlSecOpenSSLEvpKeyDup (<em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
+<p>Duplicates <em class="parameter"><code>pKey</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN32843"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32845"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDup.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to EVP_PKEY.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to EVP_PKEY.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN32854"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyDup.returns"></a><h4>Returns</h4>
<p> pointer to newly created EVP_PKEY object or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLEVPKEYADOPT"></a><h3>xmlSecOpenSSLEvpKeyAdopt ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecOpenSSLEvpKeyAdopt (<code class="PARAMETER"><font><span class="TYPE">EVP_PKEY</span></font> *pKey</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLEvpKeyAdopt"></a><h3>xmlSecOpenSSLEvpKeyAdopt ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecOpenSSLEvpKeyAdopt (<em class="parameter"><code><font><span class="type">EVP_PKEY</span></font> *pKey</code></em>);</pre>
<p>Creates xmlsec key object from OpenSSL key object.</p>
-<div class="REFSECT3">
-<a name="AEN32868"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32870"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyAdopt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>pKey</p></td>
-<td><p>the pointer to EVP_PKEY.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pKey</p></td>
+<td class="parameter_description"><p>the pointer to EVP_PKEY.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN32879"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLEvpKeyAdopt.returns"></a><h4>Returns</h4>
<p> pointer to newly created xmlsec key or NULL if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-EVP.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-openssl-evp.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-crypto.html"><b>&lt;&lt;&lt; crypto</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-x509.html"><b>x509 &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-ref.html b/docs/api/xmlsec-openssl-ref.html
index 3ce8bd83..ea44de6c 100644
--- a/docs/api/xmlsec-openssl-ref.html
+++ b/docs/api/xmlsec-openssl-ref.html
@@ -1,136 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library for OpenSLL API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="x509" href="xmlsec-x509.html">
-<link rel="NEXT" title="app" href="xmlsec-openssl-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Library for OpenSLL API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-x509.html" title="x509">
+<link rel="next" href="xmlsec-openssl-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-OPENSSL-REF"></a>XML Security Library for OpenSLL API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-openssl-ref"></a>XML Security Library for OpenSLL API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
<dt>
-<a href="xmlsec-openssl-app.html">app</a> -- Application functions implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-app.html">app</a></span><span class="refpurpose"> — Application support functions for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-bn.html">bn</a> -- Big numbers helper functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-bn.html">bn</a></span><span class="refpurpose"> — Big numbers (BIGNUM) support functions implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-crypto.html">crypto</a> -- Crypto transforms implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-evp.html">evp</a> -- EVP keys data implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-evp.html">evp</a></span><span class="refpurpose"> — Private/public (EVP) keys implementation for OpenSSL.</span>
+</dt>
<dt>
-<a href="xmlsec-openssl-x509.html">x509</a> -- X509 certificates support implementation for OpenSSL.</dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for OpenSSL.</span>
+</dt>
</dl></div>
<p>This section contains the API reference for xmlsec-openssl. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-x509.html"><b>&lt;&lt;&lt; x509</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-openssl-x509.html b/docs/api/xmlsec-openssl-x509.html
index cdd1fdb7..3bc926b0 100644
--- a/docs/api/xmlsec-openssl-x509.html
+++ b/docs/api/xmlsec-openssl-x509.html
@@ -1,925 +1,846 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>x509</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<link rel="PREVIOUS" title="evp" href="xmlsec-openssl-evp.html">
-<link rel="NEXT" title="XML Security Library for GnuTLS API Reference." href="xmlsec-gnutls-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<link rel="prev" href="xmlsec-openssl-evp.html" title="evp">
+<link rel="next" href="xmlsec-gnutls-ref.html" title="XML Security Library for GnuTLS API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-openssl-evp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-openssl-x509.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-openssl-evp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-gnutls-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-OPENSSL-X509"></a>x509</h1>
-<div class="REFNAMEDIV">
-<a name="AEN32890"></a><h2>Name</h2>x509 -- X509 certificates support implementation for OpenSSL.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-X509.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN32895"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-openssl-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-openssl-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — X509 certificates implementation for OpenSSL.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETKLASS">xmlSecOpenSSLKeyDataX509GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKlass" title="xmlSecOpenSSLKeyDataX509GetKlass ()">xmlSecOpenSSLKeyDataX509GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">X509</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETKEYCERT">xmlSecOpenSSLKeyDataX509GetKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">X509</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKeyCert" title="xmlSecOpenSSLKeyDataX509GetKeyCert ()">xmlSecOpenSSLKeyDataX509GetKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTKEYCERT">xmlSecOpenSSLKeyDataX509AdoptKeyCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptKeyCert" title="xmlSecOpenSSLKeyDataX509AdoptKeyCert ()">xmlSecOpenSSLKeyDataX509AdoptKeyCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTCERT">xmlSecOpenSSLKeyDataX509AdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCert" title="xmlSecOpenSSLKeyDataX509AdoptCert ()">xmlSecOpenSSLKeyDataX509AdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">X509</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCERT">xmlSecOpenSSLKeyDataX509GetCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">X509</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCert" title="xmlSecOpenSSLKeyDataX509GetCert ()">xmlSecOpenSSLKeyDataX509GetCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCERTSSIZE">xmlSecOpenSSLKeyDataX509GetCertsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCertsSize" title="xmlSecOpenSSLKeyDataX509GetCertsSize ()">xmlSecOpenSSLKeyDataX509GetCertsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ADOPTCRL">xmlSecOpenSSLKeyDataX509AdoptCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCrl" title="xmlSecOpenSSLKeyDataX509AdoptCrl ()">xmlSecOpenSSLKeyDataX509AdoptCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">X509_CRL</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCRL">xmlSecOpenSSLKeyDataX509GetCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">X509_CRL</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrl" title="xmlSecOpenSSLKeyDataX509GetCrl ()">xmlSecOpenSSLKeyDataX509GetCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509GETCRLSSIZE">xmlSecOpenSSLKeyDataX509GetCrlsSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrlsSize" title="xmlSecOpenSSLKeyDataX509GetCrlsSize ()">xmlSecOpenSSLKeyDataX509GetCrlsSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509CERTGETKEY">xmlSecOpenSSLX509CertGetKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509CertGetKey" title="xmlSecOpenSSLX509CertGetKey ()">xmlSecOpenSSLX509CertGetKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATARAWX509CERTGETKLASS">xmlSecOpenSSLKeyDataRawX509CertGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertGetKlass" title="xmlSecOpenSSLKeyDataRawX509CertGetKlass ()">xmlSecOpenSSLKeyDataRawX509CertGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREGETKLASS">xmlSecOpenSSLX509StoreGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreGetKlass" title="xmlSecOpenSSLX509StoreGetKlass ()">xmlSecOpenSSLX509StoreGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">X509</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREFINDCERT">xmlSecOpenSSLX509StoreFindCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">X509</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreFindCert" title="xmlSecOpenSSLX509StoreFindCert ()">xmlSecOpenSSLX509StoreFindCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">X509</span></font> *</td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREVERIFY">xmlSecOpenSSLX509StoreVerify</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">X509</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreVerify" title="xmlSecOpenSSLX509StoreVerify ()">xmlSecOpenSSLX509StoreVerify</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADOPTCERT">xmlSecOpenSSLX509StoreAdoptCert</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCert" title="xmlSecOpenSSLX509StoreAdoptCert ()">xmlSecOpenSSLX509StoreAdoptCert</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADOPTCRL">xmlSecOpenSSLX509StoreAdoptCrl</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCrl" title="xmlSecOpenSSLX509StoreAdoptCrl ()">xmlSecOpenSSLX509StoreAdoptCrl</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADDCERTSPATH">xmlSecOpenSSLX509StoreAddCertsPath</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsPath" title="xmlSecOpenSSLX509StoreAddCertsPath ()">xmlSecOpenSSLX509StoreAddCertsPath</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADDCERTSFILE">xmlSecOpenSSLX509StoreAddCertsFile</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsFile" title="xmlSecOpenSSLX509StoreAddCertsFile ()">xmlSecOpenSSLX509StoreAddCertsFile</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-X509.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33026"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509:CAPS">XMLSEC_STACK_OF_X509</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509:CAPS" title="XMLSEC_STACK_OF_X509">XMLSEC_STACK_OF_X509</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509-CRL:CAPS">XMLSEC_STACK_OF_X509_CRL</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509-CRL:CAPS" title="XMLSEC_STACK_OF_X509_CRL">XMLSEC_STACK_OF_X509_CRL</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATAX509ID">xmlSecOpenSSLKeyDataX509Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509Id" title="xmlSecOpenSSLKeyDataX509Id">xmlSecOpenSSLKeyDataX509Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLKEYDATARAWX509CERTID">xmlSecOpenSSLKeyDataRawX509CertId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertId" title="xmlSecOpenSSLKeyDataRawX509CertId">xmlSecOpenSSLKeyDataRawX509CertId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREID">xmlSecOpenSSLX509StoreId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreId" title="xmlSecOpenSSLX509StoreId">xmlSecOpenSSLX509StoreId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-X509.DESCRIPTION"></a><h2>Description</h2>
-<p>X509 certificates support implementation for OpenSSL.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-X509.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETKLASS"></a><h3>xmlSecOpenSSLKeyDataX509GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
-xmlSecOpenSSLKeyDataX509GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The OpenSSL X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-X509Data</span></font>).</p>
-<div class="REFSECT3">
-<a name="AEN33066"></a><h4>Returns</h4>
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetKlass"></a><h3>xmlSecOpenSSLKeyDataX509GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
+xmlSecOpenSSLKeyDataX509GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The OpenSSL X509 key data klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-X509Data</span></font>).</p>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetKlass.returns"></a><h4>Returns</h4>
<p> the X509 data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETKEYCERT"></a><h3>xmlSecOpenSSLKeyDataX509GetKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">X509</span></font> *
-xmlSecOpenSSLKeyDataX509GetKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetKeyCert"></a><h3>xmlSecOpenSSLKeyDataX509GetKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">X509</span></font> *
+xmlSecOpenSSLKeyDataX509GetKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
<p>Gets the certificate from which the key was extracted.</p>
-<div class="REFSECT3">
-<a name="AEN33080"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33082"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33091"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetKeyCert.returns"></a><h4>Returns</h4>
<p> the key's certificate or NULL if key data was not used for key
extraction or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509ADOPTKEYCERT"></a><h3>xmlSecOpenSSLKeyDataX509AdoptKeyCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataX509AdoptKeyCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">X509</span></font> *cert</code>);</pre>
-<p>Sets the key's certificate in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509AdoptKeyCert"></a><h3>xmlSecOpenSSLKeyDataX509AdoptKeyCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataX509AdoptKeyCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">X509</span></font> *cert</code></em>);</pre>
+<p>Sets the key's certificate in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN33109"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33111"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptKeyCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to OpenSSL X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33126"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptKeyCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509ADOPTCERT"></a><h3>xmlSecOpenSSLKeyDataX509AdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataX509AdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">X509</span></font> *cert</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCert"></a><h3>xmlSecOpenSSLKeyDataX509AdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataX509AdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">X509</span></font> *cert</code></em>);</pre>
<p>Adds certificate to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN33143"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33145"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to OpenSSL X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33160"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETCERT"></a><h3>xmlSecOpenSSLKeyDataX509GetCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">X509</span></font> *
-xmlSecOpenSSLKeyDataX509GetCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetCert"></a><h3>xmlSecOpenSSLKeyDataX509GetCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">X509</span></font> *
+xmlSecOpenSSLKeyDataX509GetCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a certificate from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN33177"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33179"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired certificate position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired certificate position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33194"></a><h4>Returns</h4>
-<p> the pointer to certificate or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCert.returns"></a><h4>Returns</h4>
+<p> the pointer to certificate or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of certificates in <code class="PARAMETER">data</code>
+number of certificates in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETCERTSSIZE"></a><h3>xmlSecOpenSSLKeyDataX509GetCertsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecOpenSSLKeyDataX509GetCertsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetCertsSize"></a><h3>xmlSecOpenSSLKeyDataX509GetCertsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecOpenSSLKeyDataX509GetCertsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of certificates in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN33211"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33213"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCertsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33222"></a><h4>Returns</h4>
-<p> te number of certificates in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCertsSize.returns"></a><h4>Returns</h4>
+<p> te number of certificates in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509ADOPTCRL"></a><h3>xmlSecOpenSSLKeyDataX509AdoptCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLKeyDataX509AdoptCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><font><span class="TYPE">X509_CRL</span></font> *crl</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCrl"></a><h3>xmlSecOpenSSLKeyDataX509AdoptCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLKeyDataX509AdoptCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><font><span class="type">X509_CRL</span></font> *crl</code></em>);</pre>
<p>Adds CRL to the X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN33240"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33242"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>crl</p></td>
-<td><p>the pointer to OpenSSL X509 CRL.</p></td>
-<td> </td>
+<td class="parameter_name"><p>crl</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL X509 CRL.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33257"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509AdoptCrl.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETCRL"></a><h3>xmlSecOpenSSLKeyDataX509GetCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">X509_CRL</span></font> *
-xmlSecOpenSSLKeyDataX509GetCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> pos</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetCrl"></a><h3>xmlSecOpenSSLKeyDataX509GetCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">X509_CRL</span></font> *
+xmlSecOpenSSLKeyDataX509GetCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> pos</code></em>);</pre>
<p>Gets a CRL from X509 key data.</p>
-<div class="REFSECT3">
-<a name="AEN33274"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33276"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>pos</p></td>
-<td><p>the desired CRL position.</p></td>
-<td> </td>
+<td class="parameter_name"><p>pos</p></td>
+<td class="parameter_description"><p>the desired CRL position.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33291"></a><h4>Returns</h4>
-<p> the pointer to CRL or NULL if <code class="PARAMETER">pos</code>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCrl.returns"></a><h4>Returns</h4>
+<p> the pointer to CRL or NULL if <em class="parameter"><code>pos</code></em>
is larger than the
-number of CRLs in <code class="PARAMETER">data</code>
+number of CRLs in <em class="parameter"><code>data</code></em>
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509GETCRLSSIZE"></a><h3>xmlSecOpenSSLKeyDataX509GetCrlsSize ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="RETURNVALUE">xmlSecSize</span></a>
-xmlSecOpenSSLKeyDataX509GetCrlsSize (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="TYPE">xmlSecKeyDataPtr</span></a> data</code>);</pre>
-<p>Gets the number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509GetCrlsSize"></a><h3>xmlSecOpenSSLKeyDataX509GetCrlsSize ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="returnvalue">xmlSecSize</span></a>
+xmlSecOpenSSLKeyDataX509GetCrlsSize (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="type">xmlSecKeyDataPtr</span></a> data</code></em>);</pre>
+<p>Gets the number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN33308"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33310"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCrlsSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>data</p></td>
-<td><p>the pointer to X509 key data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33319"></a><h4>Returns</h4>
-<p> te number of CRLs in <code class="PARAMETER">data</code>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataX509GetCrlsSize.returns"></a><h4>Returns</h4>
+<p> te number of CRLs in <em class="parameter"><code>data</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509CERTGETKEY"></a><h3>xmlSecOpenSSLX509CertGetKey ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-keysdata.html#XMLSECKEYDATA"><span class="RETURNVALUE">xmlSecKeyDataPtr</span></a>
-xmlSecOpenSSLX509CertGetKey (<code class="PARAMETER"><font><span class="TYPE">X509</span></font> *cert</code>);</pre>
-<p>Extracts public key from the <code class="PARAMETER">cert</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509CertGetKey"></a><h3>xmlSecOpenSSLX509CertGetKey ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-keysdata.html#xmlSecKeyData" title="struct xmlSecKeyData"><span class="returnvalue">xmlSecKeyDataPtr</span></a>
+xmlSecOpenSSLX509CertGetKey (<em class="parameter"><code><font><span class="type">X509</span></font> *cert</code></em>);</pre>
+<p>Extracts public key from the <em class="parameter"><code>cert</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN33335"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33337"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509CertGetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>cert</p></td>
-<td><p>the certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33346"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509CertGetKey.returns"></a><h4>Returns</h4>
<p> public key value or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARAWX509CERTGETKLASS"></a><h3>xmlSecOpenSSLKeyDataRawX509CertGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataId</span></font>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRawX509CertGetKlass"></a><h3>xmlSecOpenSSLKeyDataRawX509CertGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecOpenSSLKeyDataRawX509CertGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The raw X509 certificates key data klass.</p>
-<div class="REFSECT3">
-<a name="AEN33359"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLKeyDataRawX509CertGetKlass.returns"></a><h4>Returns</h4>
<p> raw X509 certificates key data klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREGETKLASS"></a><h3>xmlSecOpenSSLX509StoreGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecKeyDataStoreId</span></font>
-xmlSecOpenSSLX509StoreGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreGetKlass"></a><h3>xmlSecOpenSSLX509StoreGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataStoreId</span></font>
+xmlSecOpenSSLX509StoreGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The OpenSSL X509 certificates key data store klass.</p>
-<div class="REFSECT3">
-<a name="AEN33372"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to OpenSSL X509 certificates key data store klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREFINDCERT"></a><h3>xmlSecOpenSSLX509StoreFindCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">X509</span></font> *
-xmlSecOpenSSLX509StoreFindCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *subjectName</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *issuerName</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *issuerSerial</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlChar</span></font> *ski</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code>);</pre>
-<p>Searches <code class="PARAMETER">store</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreFindCert"></a><h3>xmlSecOpenSSLX509StoreFindCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">X509</span></font> *
+xmlSecOpenSSLX509StoreFindCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *subjectName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerName</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *issuerSerial</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlChar</span></font> *ski</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Searches <em class="parameter"><code>store</code></em>
for a certificate that matches given criteria.</p>
-<div class="REFSECT3">
-<a name="AEN33402"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33404"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreFindCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>subjectName</p></td>
-<td><p>the desired certificate name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>subjectName</p></td>
+<td class="parameter_description"><p>the desired certificate name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>issuerName</p></td>
-<td><p>the desired certificate issuer name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>issuerName</p></td>
+<td class="parameter_description"><p>the desired certificate issuer name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>issuerSerial</p></td>
-<td><p>the desired certificate issuer serial number.</p></td>
-<td> </td>
+<td class="parameter_name"><p>issuerSerial</p></td>
+<td class="parameter_description"><p>the desired certificate issuer serial number.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ski</p></td>
-<td><p>the desired certificate SKI.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ski</p></td>
+<td class="parameter_description"><p>the desired certificate SKI.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33443"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreFindCert.returns"></a><h4>Returns</h4>
<p> pointer to found certificate or NULL if certificate is not found
or an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREVERIFY"></a><h3>xmlSecOpenSSLX509StoreVerify ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">X509</span></font> *
-xmlSecOpenSSLX509StoreVerify (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><a href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509:CAPS"><span class="TYPE">XMLSEC_STACK_OF_X509</span></a> *certs</code>,
- <code class="PARAMETER"><a href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509-CRL:CAPS"><span class="TYPE">XMLSEC_STACK_OF_X509_CRL</span></a> *crls</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code>);</pre>
-<p>Verifies <code class="PARAMETER">certs</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreVerify"></a><h3>xmlSecOpenSSLX509StoreVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">X509</span></font> *
+xmlSecOpenSSLX509StoreVerify (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509:CAPS" title="XMLSEC_STACK_OF_X509"><span class="type">XMLSEC_STACK_OF_X509</span></a> *certs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509-CRL:CAPS" title="XMLSEC_STACK_OF_X509_CRL"><span class="type">XMLSEC_STACK_OF_X509_CRL</span></a> *crls</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> *keyInfoCtx</code></em>);</pre>
+<p>Verifies <em class="parameter"><code>certs</code></em>
list.</p>
-<div class="REFSECT3">
-<a name="AEN33467"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33469"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>certs</p></td>
-<td><p>the untrusted certificates stack.</p></td>
-<td> </td>
+<td class="parameter_name"><p>certs</p></td>
+<td class="parameter_description"><p>the untrusted certificates stack.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>crls</p></td>
-<td><p>the crls stack.</p></td>
-<td> </td>
+<td class="parameter_name"><p>crls</p></td>
+<td class="parameter_description"><p>the crls stack.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33496"></a><h4>Returns</h4>
-<p> pointer to the first verified certificate from <code class="PARAMETER">certs</code>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreVerify.returns"></a><h4>Returns</h4>
+<p> pointer to the first verified certificate from <em class="parameter"><code>certs</code></em>
.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREADOPTCERT"></a><h3>xmlSecOpenSSLX509StoreAdoptCert ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLX509StoreAdoptCert (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">X509</span></font> *cert</code>,
- <code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATATYPE"><span class="TYPE">xmlSecKeyDataType</span></a> type</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreAdoptCert"></a><h3>xmlSecOpenSSLX509StoreAdoptCert ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLX509StoreAdoptCert (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">X509</span></font> *cert</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataType" title="xmlSecKeyDataType"><span class="type">xmlSecKeyDataType</span></a> type</code></em>);</pre>
<p>Adds trusted (root) or untrusted certificate to the store.</p>
-<div class="REFSECT3">
-<a name="AEN33517"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33519"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAdoptCert.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cert</p></td>
-<td><p>the pointer to OpenSSL X509 certificate.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cert</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL X509 certificate.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the certificate type (trusted/untrusted).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the certificate type (trusted/untrusted).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33540"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAdoptCert.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREADOPTCRL"></a><h3>xmlSecOpenSSLX509StoreAdoptCrl ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLX509StoreAdoptCrl (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER"><font><span class="TYPE">X509_CRL</span></font> *crl</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreAdoptCrl"></a><h3>xmlSecOpenSSLX509StoreAdoptCrl ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLX509StoreAdoptCrl (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code><font><span class="type">X509_CRL</span></font> *crl</code></em>);</pre>
<p>Adds X509 CRL to the store.</p>
-<div class="REFSECT3">
-<a name="AEN33557"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33559"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAdoptCrl.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to X509 key data store klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to X509 key data store klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>crl</p></td>
-<td><p>the pointer to OpenSSL X509_CRL.</p></td>
-<td> </td>
+<td class="parameter_name"><p>crl</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL X509_CRL.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33574"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAdoptCrl.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREADDCERTSPATH"></a><h3>xmlSecOpenSSLX509StoreAddCertsPath ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLX509StoreAddCertsPath (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *path</code>);</pre>
-<p>Adds all certs in the <code class="PARAMETER">path</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreAddCertsPath"></a><h3>xmlSecOpenSSLX509StoreAddCertsPath ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLX509StoreAddCertsPath (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *path</code></em>);</pre>
+<p>Adds all certs in the <em class="parameter"><code>path</code></em>
to the list of trusted certs
-in <code class="PARAMETER">store</code>
+in <em class="parameter"><code>store</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN33593"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33595"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAddCertsPath.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to OpenSSL x509 store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL x509 store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>path</p></td>
-<td><p>the path to the certs dir.</p></td>
-<td> </td>
+<td class="parameter_name"><p>path</p></td>
+<td class="parameter_description"><p>the path to the certs dir.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN33610"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAddCertsPath.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREADDCERTSFILE"></a><h3>xmlSecOpenSSLX509StoreAddCertsFile ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecOpenSSLX509StoreAddCertsFile (<code class="PARAMETER"><a href="xmlsec-keysdata.html#XMLSECKEYDATASTORE"><span class="TYPE">xmlSecKeyDataStorePtr</span></a> store</code>,
- <code class="PARAMETER">const <font><span class="TYPE">char</span></font> *file</code>);</pre>
-<p>Adds all certs in <code class="PARAMETER">file</code>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreAddCertsFile"></a><h3>xmlSecOpenSSLX509StoreAddCertsFile ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecOpenSSLX509StoreAddCertsFile (<em class="parameter"><code><a class="link" href="xmlsec-keysdata.html#xmlSecKeyDataStore" title="struct xmlSecKeyDataStore"><span class="type">xmlSecKeyDataStorePtr</span></a> store</code></em>,
+ <em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>);</pre>
+<p>Adds all certs in <em class="parameter"><code>file</code></em>
to the list of trusted certs
-in <code class="PARAMETER">store</code>
-. It is possible for <code class="PARAMETER">file</code>
+in <em class="parameter"><code>store</code></em>
+. It is possible for <em class="parameter"><code>file</code></em>
to contain multiple certs.</p>
-<div class="REFSECT3">
-<a name="AEN33630"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN33632"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAddCertsFile.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>store</p></td>
-<td><p>the pointer to OpenSSL x509 store.</p></td>
-<td> </td>
+<td class="parameter_name"><p>store</p></td>
+<td class="parameter_description"><p>the pointer to OpenSSL x509 store.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>file</p></td>
-<td><p>the certs file.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the certs file.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN33647"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecOpenSSLX509StoreAddCertsFile.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-OPENSSL-X509.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-openssl-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
<a name="XMLSEC-STACK-OF-X509:CAPS"></a><h3>XMLSEC_STACK_OF_X509</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_STACK_OF_X509 STACK_OF(X509)</pre>
+<pre class="programlisting">#define XMLSEC_STACK_OF_X509 STACK_OF(X509)
+</pre>
<p>Macro. To make docbook happy.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-STACK-OF-X509-CRL:CAPS"></a><h3>XMLSEC_STACK_OF_X509_CRL</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_STACK_OF_X509_CRL STACK_OF(X509_CRL)</pre>
+<pre class="programlisting">#define XMLSEC_STACK_OF_X509_CRL STACK_OF(X509_CRL)
+</pre>
<p>Macro. To make docbook happy.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATAX509ID"></a><h3>xmlSecOpenSSLKeyDataX509Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataX509Id</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataX509Id"></a><h3>xmlSecOpenSSLKeyDataX509Id</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataX509Id</pre>
<p>The OpenSSL X509 data klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLKEYDATARAWX509CERTID"></a><h3>xmlSecOpenSSLKeyDataRawX509CertId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLKeyDataRawX509CertId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLKeyDataRawX509CertId"></a><h3>xmlSecOpenSSLKeyDataRawX509CertId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLKeyDataRawX509CertId</pre>
<p>The OpenSSL raw X509 certificate klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECOPENSSLX509STOREID"></a><h3>xmlSecOpenSSLX509StoreId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecOpenSSLX509StoreId</pre>
+<div class="refsect2">
+<a name="xmlSecOpenSSLX509StoreId"></a><h3>xmlSecOpenSSLX509StoreId</h3>
+<pre class="programlisting">#define xmlSecOpenSSLX509StoreId</pre>
<p>The OpenSSL X509 store klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-openssl-evp.html"><b>&lt;&lt;&lt; evp</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-gnutls-ref.html"><b>XML Security Library for GnuTLS API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-parser.html b/docs/api/xmlsec-parser.html
index 4f62d66c..1f094838 100644
--- a/docs/api/xmlsec-parser.html
+++ b/docs/api/xmlsec-parser.html
@@ -1,333 +1,253 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>parser</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="nodeset" href="xmlsec-nodeset.html">
-<link rel="NEXT" title="templates" href="xmlsec-templates.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>parser: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-nodeset.html" title="nodeset">
+<link rel="next" href="xmlsec-templates.html" title="templates">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-parser.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-nodeset.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-nodeset.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-templates.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-PARSER"></a>parser</h1>
-<div class="REFNAMEDIV">
-<a name="AEN16837"></a><h2>Name</h2>parser -- Parser transform implementation.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-PARSER.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16842"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-parser"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-parser.top_of_page"></a>parser</span></h2>
+<p>parser — XML parser functions and the XML parser transform implementation.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-parser.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-parser.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlDocPtr</span></font></td>
-<td>
-<a href="xmlsec-parser.html#XMLSECPARSEFILE">xmlSecParseFile</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlDocPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-parser.html#xmlSecParseFile" title="xmlSecParseFile ()">xmlSecParseFile</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlDocPtr</span></font></td>
-<td>
-<a href="xmlsec-parser.html#XMLSECPARSEMEMORY">xmlSecParseMemory</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlDocPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-parser.html#xmlSecParseMemory" title="xmlSecParseMemory ()">xmlSecParseMemory</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlDocPtr</span></font></td>
-<td>
-<a href="xmlsec-parser.html#XMLSECPARSEMEMORYEXT">xmlSecParseMemoryExt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlDocPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-parser.html#xmlSecParseMemoryExt" title="xmlSecParseMemoryExt ()">xmlSecParseMemoryExt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-parser.html#XMLSECTRANSFORMXMLPARSERGETKLASS">xmlSecTransformXmlParserGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-parser.html#xmlSecTransformXmlParserGetKlass" title="xmlSecTransformXmlParserGetKlass ()">xmlSecTransformXmlParserGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-PARSER.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16875"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-parser.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td>#define</td>
-<td><a href="xmlsec-parser.html#XMLSECTRANSFORMXMLPARSERID">xmlSecTransformXmlParserId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-parser.html#xmlSecTransformXmlParserId" title="xmlSecTransformXmlParserId">xmlSecTransformXmlParserId</a></td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-PARSER.DESCRIPTION"></a><h2>Description</h2>
-<p>Parser transform implementation.</p>
+<div class="refsect1">
+<a name="xmlsec-parser.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-PARSER.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECPARSEFILE"></a><h3>xmlSecParseFile ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlDocPtr</span></font>
-xmlSecParseFile (<code class="PARAMETER">const <font><span class="TYPE">char</span></font> *filename</code>);</pre>
-<p>Loads XML Doc from file <code class="PARAMETER">filename</code>
+<div class="refsect1">
+<a name="xmlsec-parser.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecParseFile"></a><h3>xmlSecParseFile ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlDocPtr</span></font>
+xmlSecParseFile (<em class="parameter"><code>const <font><span class="type">char</span></font> *filename</code></em>);</pre>
+<p>Loads XML Doc from file <em class="parameter"><code>filename</code></em>
. We need a special version because of
-c14n issue. The code is copied from <font><code class="FUNCTION">xmlSAXParseFileWithData()</code></font> function.</p>
-<div class="REFSECT3">
-<a name="AEN16901"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16903"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+c14n issue. The code is copied from <font><code class="function">xmlSAXParseFileWithData()</code></font> function.</p>
+<div class="refsect3">
+<a name="xmlSecParseFile.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>filename</p></td>
-<td><p>the filename.</p></td>
-<td> </td>
+<td class="parameter_name"><p>filename</p></td>
+<td class="parameter_description"><p>the filename.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN16912"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecParseFile.returns"></a><h4>Returns</h4>
<p> pointer to the loaded XML document or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPARSEMEMORY"></a><h3>xmlSecParseMemory ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlDocPtr</span></font>
-xmlSecParseMemory (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> recovery</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecParseMemory"></a><h3>xmlSecParseMemory ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlDocPtr</span></font>
+xmlSecParseMemory (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> recovery</code></em>);</pre>
<p>Loads XML Doc from memory. We need a special version because of
-c14n issue. The code is copied from <font><code class="FUNCTION">xmlSAXParseMemory()</code></font> function.</p>
-<div class="REFSECT3">
-<a name="AEN16934"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16936"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+c14n issue. The code is copied from <font><code class="function">xmlSAXParseMemory()</code></font> function.</p>
+<div class="refsect3">
+<a name="xmlSecParseMemory.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>buffer</p></td>
-<td><p>the input buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the input buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the input buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the input buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>recovery</p></td>
-<td><p>the flag.</p></td>
-<td> </td>
+<td class="parameter_name"><p>recovery</p></td>
+<td class="parameter_description"><p>the flag.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN16957"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecParseMemory.returns"></a><h4>Returns</h4>
<p> pointer to the loaded XML document or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPARSEMEMORYEXT"></a><h3>xmlSecParseMemoryExt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlDocPtr</span></font>
-xmlSecParseMemoryExt (<code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *prefix</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> prefixSize</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bufferSize</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *postfix</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> postfixSize</code>);</pre>
-<p>Loads XML Doc from 3 chunks of memory: <code class="PARAMETER">prefix</code>
-, <code class="PARAMETER">buffer</code>
- and <code class="PARAMETER">postfix</code>
+<div class="refsect2">
+<a name="xmlSecParseMemoryExt"></a><h3>xmlSecParseMemoryExt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlDocPtr</span></font>
+xmlSecParseMemoryExt (<em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *prefix</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> prefixSize</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bufferSize</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *postfix</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> postfixSize</code></em>);</pre>
+<p>Loads XML Doc from 3 chunks of memory: <em class="parameter"><code>prefix</code></em>
+, <em class="parameter"><code>buffer</code></em>
+ and <em class="parameter"><code>postfix</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN16989"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN16991"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecParseMemoryExt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>prefix</p></td>
-<td><p>the first part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>prefix</p></td>
+<td class="parameter_description"><p>the first part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>prefixSize</p></td>
-<td><p>the size of the first part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>prefixSize</p></td>
+<td class="parameter_description"><p>the size of the first part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buffer</p></td>
-<td><p>the second part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the second part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bufferSize</p></td>
-<td><p>the size of the second part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>bufferSize</p></td>
+<td class="parameter_description"><p>the size of the second part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>postfix</p></td>
-<td><p>the third part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>postfix</p></td>
+<td class="parameter_description"><p>the third part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>postfixSize</p></td>
-<td><p>the size of the third part of the input.</p></td>
-<td> </td>
+<td class="parameter_name"><p>postfixSize</p></td>
+<td class="parameter_description"><p>the size of the third part of the input.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17030"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecParseMemoryExt.returns"></a><h4>Returns</h4>
<p> pointer to the loaded XML document or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXMLPARSERGETKLASS"></a><h3>xmlSecTransformXmlParserGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformXmlParserGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXmlParserGetKlass"></a><h3>xmlSecTransformXmlParserGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformXmlParserGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The XML parser transform.</p>
-<div class="REFSECT3">
-<a name="AEN17043"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformXmlParserGetKlass.returns"></a><h4>Returns</h4>
<p> XML parser transform klass.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-PARSER.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXMLPARSERID"></a><h3>xmlSecTransformXmlParserId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformXmlParserId</pre>
+<div class="refsect1">
+<a name="xmlsec-parser.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecTransformXmlParserId"></a><h3>xmlSecTransformXmlParserId</h3>
+<pre class="programlisting">#define xmlSecTransformXmlParserId</pre>
<p>The XML Parser transform klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-nodeset.html"><b>&lt;&lt;&lt; nodeset</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-templates.html"><b>templates &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-ref.html b/docs/api/xmlsec-ref.html
index 6f504cf7..cf5d523a 100644
--- a/docs/api/xmlsec-ref.html
+++ b/docs/api/xmlsec-ref.html
@@ -1,172 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Core Library API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="PREVIOUS" title="XML Security Library API Reference." href="xmlsec-reference.html">
-<link rel="NEXT" title="app" href="xmlsec-app.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>XML Security Core Library API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="prev" href="xmlsec-reference.html" title="Part II. XML Security Library API Reference.">
+<link rel="next" href="xmlsec-app.html" title="app">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-reference.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-reference.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-app.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-REF"></a>XML Security Core Library API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-ref"></a>XML Security Core Library API Reference.</h2></div></div></div>
+<div class="toc"><dl class="toc">
<dt>
-<a href="xmlsec-app.html">app</a> -- Crypto-engine independent application support function.</dt>
+<span class="refentrytitle"><a href="xmlsec-app.html">app</a></span><span class="refpurpose"> — Crypto-engine independent application support functions.</span>
+</dt>
<dt>
-<a href="xmlsec-base64.html">base64</a> -- Base64 encoding/decoding functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-base64.html">base64</a></span><span class="refpurpose"> — Base64 encoding/decoding functions and base64 transform implementation.</span>
+</dt>
<dt>
-<a href="xmlsec-bn.html">bn</a> -- Big numbers support functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-bn.html">bn</a></span><span class="refpurpose"> — Big numbers support functions.</span>
+</dt>
<dt>
-<a href="xmlsec-buffer.html">buffer</a> -- Binary buffer implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-buffer.html">buffer</a></span><span class="refpurpose"> — Binary memory buffer functions.</span>
+</dt>
<dt>
-<a href="xmlsec-dl.html">dl</a> -- Dynamic crypto-engine library loading support.</dt>
+<span class="refentrytitle"><a href="xmlsec-dl.html">dl</a></span><span class="refpurpose"> — Dynamic crypto-engine library loading functions.</span>
+</dt>
<dt>
-<a href="xmlsec-errors.html">errors</a> -- Error/log messages support.</dt>
+<span class="refentrytitle"><a href="xmlsec-errors.html">errors</a></span><span class="refpurpose"> — Error reporting and logging functions.</span>
+</dt>
<dt>
-<a href="xmlsec-io.html">io</a> -- Input/output support.</dt>
+<span class="refentrytitle"><a href="xmlsec-io.html">io</a></span><span class="refpurpose"> — Input/output functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keyinfo.html">keyinfo</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser.</dt>
+<span class="refentrytitle"><a href="xmlsec-keyinfo.html">keyinfo</a></span><span class="refpurpose"> — &lt;dsig:KeyInfo/&gt; node parser functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keysdata.html">keysdata</a> -- Crypto key data object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-keysdata.html">keysdata</a></span><span class="refpurpose"> — Crypto key data object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keys.html">keys</a> -- Crypto key object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-keys.html">keys</a></span><span class="refpurpose"> — Crypto key object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-keysmngr.html">keysmngr</a> -- Keys manager object support.</dt>
+<span class="refentrytitle"><a href="xmlsec-keysmngr.html">keysmngr</a></span><span class="refpurpose"> — Keys manager object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-list.html">list</a> -- Generic list structure implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-list.html">list</a></span><span class="refpurpose"> — Generic list structure functions.</span>
+</dt>
<dt>
-<a href="xmlsec-membuf.html">membuf</a> -- Memory buffer transform implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-membuf.html">membuf</a></span><span class="refpurpose"> — Memory buffer transform functions.</span>
+</dt>
<dt>
-<a href="xmlsec-nodeset.html">nodeset</a> -- Nodeset object implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-nodeset.html">nodeset</a></span><span class="refpurpose"> — XML nodes set functions</span>
+</dt>
<dt>
-<a href="xmlsec-parser.html">parser</a> -- Parser transform implementation.</dt>
+<span class="refentrytitle"><a href="xmlsec-parser.html">parser</a></span><span class="refpurpose"> — XML parser functions and the XML parser transform implementation.</span>
+</dt>
<dt>
-<a href="xmlsec-templates.html">templates</a> -- Dynamic templates creation functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-templates.html">templates</a></span><span class="refpurpose"> — XML signature and encryption template functions.</span>
+</dt>
<dt>
-<a href="xmlsec-transforms.html">transforms</a> -- Transform object definition.</dt>
+<span class="refentrytitle"><a href="xmlsec-transforms.html">transforms</a></span><span class="refpurpose"> — Transform object functions.</span>
+</dt>
<dt>
-<a href="xmlsec-version.html">version</a> -- Version macros.</dt>
+<span class="refentrytitle"><a href="xmlsec-version.html">version</a></span><span class="refpurpose"> — Version macros.</span>
+</dt>
<dt>
-<a href="xmlsec-xmldsig.html">xmldsig</a> -- XML Digital Signature support.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmldsig.html">xmldsig</a></span><span class="refpurpose"> — XML Digital Signature functions.</span>
+</dt>
<dt>
-<a href="xmlsec-xmlenc.html">xmlenc</a> -- XML Encryption support.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmlenc.html">xmlenc</a></span><span class="refpurpose"> — XML Encryption support.</span>
+</dt>
<dt>
-<a href="xmlsec-xmlsec.html">xmlsec</a> -- Utility functions.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmlsec.html">xmlsec</a></span><span class="refpurpose"> — Utility functions.</span>
+</dt>
<dt>
-<a href="xmlsec-xmltree.html">xmltree</a> -- XML tree operations.</dt>
+<span class="refentrytitle"><a href="xmlsec-xmltree.html">xmltree</a></span><span class="refpurpose"> — XML tree functions.</span>
+</dt>
<dt>
-<a href="xmlsec-x509.html">x509</a> -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser.</dt>
+<span class="refentrytitle"><a href="xmlsec-x509.html">x509</a></span><span class="refpurpose"> — &lt;dsig:X509Certificate/&gt; node parser functions.</span>
+</dt>
</dl></div>
<p>This section contains the API reference for xmlsec. All
the public interfaces are documented here. This reference guide is
build by extracting comments from the code sources. </p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-reference.html"><b>&lt;&lt;&lt; XML Security Library API Reference.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-app.html"><b>app &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-reference.html b/docs/api/xmlsec-reference.html
index 55430814..b4f10675 100644
--- a/docs/api/xmlsec-reference.html
+++ b/docs/api/xmlsec-reference.html
@@ -1,129 +1,203 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>XML Security Library API Reference.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="PREVIOUS" title="APPENDIX B. XML Security Library Encryption Klasses." href="xmlsec-encryption-klasses.html">
-<link rel="NEXT" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Part II. XML Security Library API Reference.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="index.html" title="XML Security Library Reference Manual">
+<link rel="prev" href="xmlsec-encryption-klasses.html" title="APPENDIX B. XML Security Library Encryption Klasses.">
+<link rel="next" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-encryption-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="xmlsec-encryption-klasses.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="PART">
-<a name="XMLSEC-REFERENCE"></a><div class="TITLEPAGE">
-<h1 class="TITLE">II. XML Security Library API Reference.</h1>
-<div class="TOC"><dl>
-<dt><b>Table of Contents</b></dt>
-<dt><a href="xmlsec-ref.html">XML Security Core Library API Reference.</a></dt>
-<dt><a href="xmlsec-openssl-ref.html">XML Security Library for OpenSLL API Reference.</a></dt>
-<dt><a href="xmlsec-gnutls-ref.html">XML Security Library for GnuTLS API Reference.</a></dt>
-<dt><a href="xmlsec-gcrypt-ref.html">XML Security Library for GCrypt API Reference.</a></dt>
-<dt><a href="xmlsec-nss-ref.html">XML Security Library for NSS API Reference.</a></dt>
-<dt><a href="xmlsec-mscrypto-ref.html">XML Security Library for MSCrypto API Reference.</a></dt>
-<dt><a href="xmlsec-index.html">XML Security Library Reference Index</a></dt>
-</dl></div>
+<div class="part">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="xmlsec-reference"></a>Part II. XML Security Library API Reference.</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl class="toc">
+<dt><span class="chapter"><a href="xmlsec-ref.html">XML Security Core Library API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-app.html">app</a></span><span class="refpurpose"> — Crypto-engine independent application support functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-base64.html">base64</a></span><span class="refpurpose"> — Base64 encoding/decoding functions and base64 transform implementation.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-bn.html">bn</a></span><span class="refpurpose"> — Big numbers support functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-buffer.html">buffer</a></span><span class="refpurpose"> — Binary memory buffer functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-dl.html">dl</a></span><span class="refpurpose"> — Dynamic crypto-engine library loading functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-errors.html">errors</a></span><span class="refpurpose"> — Error reporting and logging functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-io.html">io</a></span><span class="refpurpose"> — Input/output functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-keyinfo.html">keyinfo</a></span><span class="refpurpose"> — &lt;dsig:KeyInfo/&gt; node parser functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-keysdata.html">keysdata</a></span><span class="refpurpose"> — Crypto key data object functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-keys.html">keys</a></span><span class="refpurpose"> — Crypto key object functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-keysmngr.html">keysmngr</a></span><span class="refpurpose"> — Keys manager object functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-list.html">list</a></span><span class="refpurpose"> — Generic list structure functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-membuf.html">membuf</a></span><span class="refpurpose"> — Memory buffer transform functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nodeset.html">nodeset</a></span><span class="refpurpose"> — XML nodes set functions</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-parser.html">parser</a></span><span class="refpurpose"> — XML parser functions and the XML parser transform implementation.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-templates.html">templates</a></span><span class="refpurpose"> — XML signature and encryption template functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-transforms.html">transforms</a></span><span class="refpurpose"> — Transform object functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-version.html">version</a></span><span class="refpurpose"> — Version macros.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-xmldsig.html">xmldsig</a></span><span class="refpurpose"> — XML Digital Signature functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-xmlenc.html">xmlenc</a></span><span class="refpurpose"> — XML Encryption support.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-xmlsec.html">xmlsec</a></span><span class="refpurpose"> — Utility functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-xmltree.html">xmltree</a></span><span class="refpurpose"> — XML tree functions.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-x509.html">x509</a></span><span class="refpurpose"> — &lt;dsig:X509Certificate/&gt; node parser functions.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-openssl-ref.html">XML Security Library for OpenSLL API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-app.html">app</a></span><span class="refpurpose"> — Application support functions for OpenSSL.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-bn.html">bn</a></span><span class="refpurpose"> — Big numbers (BIGNUM) support functions implementation for OpenSSL.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for OpenSSL.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-evp.html">evp</a></span><span class="refpurpose"> — Private/public (EVP) keys implementation for OpenSSL.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-openssl-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for OpenSSL.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-gnutls-ref.html">XML Security Library for GnuTLS API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-app.html">app</a></span><span class="refpurpose"> — Application support functions for GnuTLS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GnuTLS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gnutls-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for GnuTLS.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-gcrypt-ref.html">XML Security Library for GCrypt API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-app.html">app</a></span><span class="refpurpose"> — Application support functions for GCrypt.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-gcrypt-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for GCrypt.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-nss-ref.html">XML Security Library for NSS API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-app.html">app</a></span><span class="refpurpose"> — Application support functions for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-bignum.html">bignum</a></span><span class="refpurpose"> — Big numbers support functions implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-pkikeys.html">pkikeys</a></span><span class="refpurpose"> — Private/public keys implementation for NSS.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-nss-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for NSS.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-mscrypto-ref.html">XML Security Library for Microsoft Crypto API Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Crypto API.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Crypto API.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Crypto API.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Crypto API.</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscrypto-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Crypto API.</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-msccng-ref.html">XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference.</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-app.html">app</a></span><span class="refpurpose"> — Application support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-certkeys.html">certkeys</a></span><span class="refpurpose"> — Certificate keys support functions for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-crypto.html">crypto</a></span><span class="refpurpose"> — Crypto transforms implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-keysstore.html">keysstore</a></span><span class="refpurpose"> — Keys store implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="xmlsec-mscng-x509.html">x509</a></span><span class="refpurpose"> — X509 certificates implementation for Microsoft Cryptography API: Next Generation (CNG).</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="xmlsec-index.html">XML Security Library Reference Index</a></span></dt>
+</dl>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-encryption-klasses.html"><b>&lt;&lt;&lt; APPENDIX B. XML Security Library Encryption Klasses.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-ref.html"><b>XML Security Core Library API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-signature-klasses.html b/docs/api/xmlsec-signature-klasses.html
index 8ff675b8..d7b8d727 100644
--- a/docs/api/xmlsec-signature-klasses.html
+++ b/docs/api/xmlsec-signature-klasses.html
@@ -1,124 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>APPENDIX A. XML Security Library Signature Klasses.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Library Tutorial" href="xmlsec-notes.html">
-<link rel="PREVIOUS" title="Writing a custom keys manager." href="xmlsec-custom-keys-manager.html">
-<link rel="NEXT" title="APPENDIX B. XML Security Library Encryption Klasses." href="xmlsec-encryption-klasses.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>APPENDIX A. XML Security Library Signature Klasses.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-notes.html" title="Part I. XML Security Library Tutorial">
+<link rel="prev" href="xmlsec-custom-keys-manager.html" title="Writing a custom keys manager.">
+<link rel="next" href="xmlsec-encryption-klasses.html" title="APPENDIX B. XML Security Library Encryption Klasses.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-custom-keys-manager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-custom-keys-manager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-encryption-klasses.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="CHAPTER">
-<h1>
-<a name="XMLSEC-SIGNATURE-KLASSES"></a>APPENDIX A. XML Security Library Signature Klasses.</h1>
-<div class="FIGURE">
-<a name="AEN993"></a><p><b>Figure 1. XML Security Library Signature Klasses.</b></p>
-<p><img src="images/signature-structure.png" align="CENTER"></p>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="xmlsec-signature-klasses"></a>APPENDIX A. XML Security Library Signature Klasses.</h2></div></div></div>
+<div class="figure">
+<a name="id-1.2.16.2"></a><p class="title"><b>Figure 11. XML Security Library Signature Klasses.</b></p>
+<div class="figure-contents"><div align="center"><img src="images/signature-structure.png" align="middle" alt="XML Security Library Signature Klasses."></div></div>
</div>
+<br class="figure-break">
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-custom-keys-manager.html"><b>&lt;&lt;&lt; Writing a custom keys manager.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-encryption-klasses.html"><b>APPENDIX B. XML Security Library Encryption Klasses. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-templates.html b/docs/api/xmlsec-templates.html
index 3c4406c6..edc5ced0 100644
--- a/docs/api/xmlsec-templates.html
+++ b/docs/api/xmlsec-templates.html
@@ -1,2061 +1,1978 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>templates</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="parser" href="xmlsec-parser.html">
-<link rel="NEXT" title="transforms" href="xmlsec-transforms.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>templates: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-parser.html" title="parser">
+<link rel="next" href="xmlsec-transforms.html" title="transforms">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-parser.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-templates.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-parser.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-transforms.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-TEMPLATES"></a>templates</h1>
-<div class="REFNAMEDIV">
-<a name="AEN17059"></a><h2>Name</h2>templates -- Dynamic templates creation functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TEMPLATES.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17064"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-templates"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-templates.top_of_page"></a>templates</span></h2>
+<p>templates — XML signature and encryption template functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-templates.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-templates.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATURECREATE">xmlSecTmplSignatureCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureCreate" title="xmlSecTmplSignatureCreate ()">xmlSecTmplSignatureCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATURECREATENSPREF">xmlSecTmplSignatureCreateNsPref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureCreateNsPref" title="xmlSecTmplSignatureCreateNsPref ()">xmlSecTmplSignatureCreateNsPref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREENSUREKEYINFO">xmlSecTmplSignatureEnsureKeyInfo</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureEnsureKeyInfo" title="xmlSecTmplSignatureEnsureKeyInfo ()">xmlSecTmplSignatureEnsureKeyInfo</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREADDREFERENCE">xmlSecTmplSignatureAddReference</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureAddReference" title="xmlSecTmplSignatureAddReference ()">xmlSecTmplSignatureAddReference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREADDOBJECT">xmlSecTmplSignatureAddObject</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureAddObject" title="xmlSecTmplSignatureAddObject ()">xmlSecTmplSignatureAddObject</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREGETSIGNMETHODNODE">xmlSecTmplSignatureGetSignMethodNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureGetSignMethodNode" title="xmlSecTmplSignatureGetSignMethodNode ()">xmlSecTmplSignatureGetSignMethodNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLSIGNATUREGETC14NMETHODNODE">xmlSecTmplSignatureGetC14NMethodNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplSignatureGetC14NMethodNode" title="xmlSecTmplSignatureGetC14NMethodNode ()">xmlSecTmplSignatureGetC14NMethodNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLREFERENCEADDTRANSFORM">xmlSecTmplReferenceAddTransform</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceAddTransform" title="xmlSecTmplReferenceAddTransform ()">xmlSecTmplReferenceAddTransform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLOBJECTADDSIGNPROPERTIES">xmlSecTmplObjectAddSignProperties</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplObjectAddSignProperties" title="xmlSecTmplObjectAddSignProperties ()">xmlSecTmplObjectAddSignProperties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLOBJECTADDMANIFEST">xmlSecTmplObjectAddManifest</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplObjectAddManifest" title="xmlSecTmplObjectAddManifest ()">xmlSecTmplObjectAddManifest</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLMANIFESTADDREFERENCE">xmlSecTmplManifestAddReference</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplManifestAddReference" title="xmlSecTmplManifestAddReference ()">xmlSecTmplManifestAddReference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATACREATE">xmlSecTmplEncDataCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataCreate" title="xmlSecTmplEncDataCreate ()">xmlSecTmplEncDataCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSUREKEYINFO">xmlSecTmplEncDataEnsureKeyInfo</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureKeyInfo" title="xmlSecTmplEncDataEnsureKeyInfo ()">xmlSecTmplEncDataEnsureKeyInfo</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSUREENCPROPERTIES">xmlSecTmplEncDataEnsureEncProperties</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureEncProperties" title="xmlSecTmplEncDataEnsureEncProperties ()">xmlSecTmplEncDataEnsureEncProperties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAADDENCPROPERTY">xmlSecTmplEncDataAddEncProperty</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataAddEncProperty" title="xmlSecTmplEncDataAddEncProperty ()">xmlSecTmplEncDataAddEncProperty</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSURECIPHERVALUE">xmlSecTmplEncDataEnsureCipherValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherValue" title="xmlSecTmplEncDataEnsureCipherValue ()">xmlSecTmplEncDataEnsureCipherValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAENSURECIPHERREFERENCE">xmlSecTmplEncDataEnsureCipherReference</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherReference" title="xmlSecTmplEncDataEnsureCipherReference ()">xmlSecTmplEncDataEnsureCipherReference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLENCDATAGETENCMETHODNODE">xmlSecTmplEncDataGetEncMethodNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplEncDataGetEncMethodNode" title="xmlSecTmplEncDataGetEncMethodNode ()">xmlSecTmplEncDataGetEncMethodNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLCIPHERREFERENCEADDTRANSFORM">xmlSecTmplCipherReferenceAddTransform</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplCipherReferenceAddTransform" title="xmlSecTmplCipherReferenceAddTransform ()">xmlSecTmplCipherReferenceAddTransform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLREFERENCELISTADDDATAREFERENCE">xmlSecTmplReferenceListAddDataReference</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceListAddDataReference" title="xmlSecTmplReferenceListAddDataReference ()">xmlSecTmplReferenceListAddDataReference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLREFERENCELISTADDKEYREFERENCE">xmlSecTmplReferenceListAddKeyReference</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplReferenceListAddKeyReference" title="xmlSecTmplReferenceListAddKeyReference ()">xmlSecTmplReferenceListAddKeyReference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDKEYNAME">xmlSecTmplKeyInfoAddKeyName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyName" title="xmlSecTmplKeyInfoAddKeyName ()">xmlSecTmplKeyInfoAddKeyName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDKEYVALUE">xmlSecTmplKeyInfoAddKeyValue</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyValue" title="xmlSecTmplKeyInfoAddKeyValue ()">xmlSecTmplKeyInfoAddKeyValue</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDX509DATA">xmlSecTmplKeyInfoAddX509Data</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddX509Data" title="xmlSecTmplKeyInfoAddX509Data ()">xmlSecTmplKeyInfoAddX509Data</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDRETRIEVALMETHOD">xmlSecTmplKeyInfoAddRetrievalMethod</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddRetrievalMethod" title="xmlSecTmplKeyInfoAddRetrievalMethod ()">xmlSecTmplKeyInfoAddRetrievalMethod</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLRETRIEVALMETHODADDTRANSFORM">xmlSecTmplRetrievalMethodAddTransform</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplRetrievalMethodAddTransform" title="xmlSecTmplRetrievalMethodAddTransform ()">xmlSecTmplRetrievalMethodAddTransform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLKEYINFOADDENCRYPTEDKEY">xmlSecTmplKeyInfoAddEncryptedKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplKeyInfoAddEncryptedKey" title="xmlSecTmplKeyInfoAddEncryptedKey ()">xmlSecTmplKeyInfoAddEncryptedKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDISSUERSERIAL">xmlSecTmplX509DataAddIssuerSerial</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddIssuerSerial" title="xmlSecTmplX509DataAddIssuerSerial ()">xmlSecTmplX509DataAddIssuerSerial</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509ISSUERSERIALADDISSUERNAME">xmlSecTmplX509IssuerSerialAddIssuerName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddIssuerName" title="xmlSecTmplX509IssuerSerialAddIssuerName ()">xmlSecTmplX509IssuerSerialAddIssuerName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509ISSUERSERIALADDSERIALNUMBER">xmlSecTmplX509IssuerSerialAddSerialNumber</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddSerialNumber" title="xmlSecTmplX509IssuerSerialAddSerialNumber ()">xmlSecTmplX509IssuerSerialAddSerialNumber</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDSUBJECTNAME">xmlSecTmplX509DataAddSubjectName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddSubjectName" title="xmlSecTmplX509DataAddSubjectName ()">xmlSecTmplX509DataAddSubjectName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDSKI">xmlSecTmplX509DataAddSKI</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddSKI" title="xmlSecTmplX509DataAddSKI ()">xmlSecTmplX509DataAddSKI</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDCERTIFICATE">xmlSecTmplX509DataAddCertificate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddCertificate" title="xmlSecTmplX509DataAddCertificate ()">xmlSecTmplX509DataAddCertificate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLX509DATAADDCRL">xmlSecTmplX509DataAddCRL</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplX509DataAddCRL" title="xmlSecTmplX509DataAddCRL ()">xmlSecTmplX509DataAddCRL</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDHMACOUTPUTLENGTH">xmlSecTmplTransformAddHmacOutputLength</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddHmacOutputLength" title="xmlSecTmplTransformAddHmacOutputLength ()">xmlSecTmplTransformAddHmacOutputLength</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDRSAOAEPPARAM">xmlSecTmplTransformAddRsaOaepParam</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddRsaOaepParam" title="xmlSecTmplTransformAddRsaOaepParam ()">xmlSecTmplTransformAddRsaOaepParam</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXSLTSTYLESHEET">xmlSecTmplTransformAddXsltStylesheet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXsltStylesheet" title="xmlSecTmplTransformAddXsltStylesheet ()">xmlSecTmplTransformAddXsltStylesheet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDC14NINCLNAMESPACES">xmlSecTmplTransformAddC14NInclNamespaces</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddC14NInclNamespaces" title="xmlSecTmplTransformAddC14NInclNamespaces ()">xmlSecTmplTransformAddC14NInclNamespaces</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPATH">xmlSecTmplTransformAddXPath</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPath" title="xmlSecTmplTransformAddXPath ()">xmlSecTmplTransformAddXPath</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPATH2">xmlSecTmplTransformAddXPath2</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPath2" title="xmlSecTmplTransformAddXPath2 ()">xmlSecTmplTransformAddXPath2</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPOINTER">xmlSecTmplTransformAddXPointer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-templates.html#xmlSecTmplTransformAddXPointer" title="xmlSecTmplTransformAddXPointer ()">xmlSecTmplTransformAddXPointer</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TEMPLATES.DESCRIPTION"></a><h2>Description</h2>
-<p>Dynamic templates creation functions.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TEMPLATES.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATURECREATE"></a><h3>xmlSecTmplSignatureCreate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureCreate (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> c14nMethodId</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> signMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Creates new &lt;dsig:Signature/&gt; node with the mandatory &lt;dsig:SignedInfo/&gt;,
-&lt;dsig:CanonicalizationMethod/&gt;, &lt;dsig:SignatureMethod/&gt; and
-&lt;dsig:SignatureValue/&gt; children and sub-children.
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-templates.description"></a><h2>Description</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-templates.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecTmplSignatureCreate"></a><h3>xmlSecTmplSignatureCreate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureCreate (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> c14nMethodId</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> signMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Creates new <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node with the mandatory <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a>,</p>
+<a class="ulink" href="" target="_top">&lt;dsig:CanonicalizationMethod/&gt;</a>, <a class="ulink" href="" target="_top">&lt;dsig:SignatureMethod/&gt;</a> and
+<a class="ulink" href="" target="_top">&lt;dsig:SignatureValue/&gt;</a> children and sub-children.
The application is responsible for inserting the returned node
-in the XML document.</p>
-<div class="REFSECT3">
-<a name="AEN17379"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17381"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+in the XML document.
+<div class="refsect3">
+<a name="xmlSecTmplSignatureCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to signature document or NULL; in the
-second case, application must later call <code class="PARAMETER">xmlSetTreeDoc</code>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to signature document or NULL; in the
+second case, application must later call <em class="parameter"><code>xmlSetTreeDoc</code></em>
to ensure that all the children nodes have correct
pointer to XML document.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>c14nMethodId</p></td>
-<td><p>the signature canonicalization method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>c14nMethodId</p></td>
+<td class="parameter_description"><p>the signature canonicalization method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>signMethodId</p></td>
-<td><p>the signature method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signMethodId</p></td>
+<td class="parameter_description"><p>the signature method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17409"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Signature/&gt; node or NULL if an
+<div class="refsect3">
+<a name="xmlSecTmplSignatureCreate.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node or NULL if an
error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATURECREATENSPREF"></a><h3>xmlSecTmplSignatureCreateNsPref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureCreateNsPref (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> c14nMethodId</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> signMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nsPrefix</code>);</pre>
-<p>Creates new &lt;dsig:Signature/&gt; node with the mandatory
-&lt;dsig:SignedInfo/&gt;, &lt;dsig:CanonicalizationMethod/&gt;,
-&lt;dsig:SignatureMethod/&gt; and &lt;dsig:SignatureValue/&gt; children and
+<div class="refsect2">
+<a name="xmlSecTmplSignatureCreateNsPref"></a><h3>xmlSecTmplSignatureCreateNsPref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureCreateNsPref (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> c14nMethodId</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> signMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nsPrefix</code></em>);</pre>
+<p>Creates new <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node with the mandatory</p>
+<a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a>, <a class="ulink" href="" target="_top">&lt;dsig:CanonicalizationMethod/&gt;</a>,
+<a class="ulink" href="" target="_top">&lt;dsig:SignatureMethod/&gt;</a> and <a class="ulink" href="" target="_top">&lt;dsig:SignatureValue/&gt;</a> children and
sub-children. This method differs from xmlSecTmplSignatureCreate in
that it will define the http://www.w3.org/2000/09/xmldsig#
namespace with the given prefix that will be used for all of the
appropriate child nodes. The application is responsible for
-inserting the returned node in the XML document.</p>
-<div class="REFSECT3">
-<a name="AEN17435"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17437"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+inserting the returned node in the XML document.
+<div class="refsect3">
+<a name="xmlSecTmplSignatureCreateNsPref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to signature document or NULL; in the
-second case, application must later call <code class="PARAMETER">xmlSetTreeDoc</code>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to signature document or NULL; in the
+second case, application must later call <em class="parameter"><code>xmlSetTreeDoc</code></em>
to ensure that all the children nodes have correct
pointer to XML document.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>c14nMethodId</p></td>
-<td><p>the signature canonicalization method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>c14nMethodId</p></td>
+<td class="parameter_description"><p>the signature canonicalization method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>signMethodId</p></td>
-<td><p>the signature method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signMethodId</p></td>
+<td class="parameter_description"><p>the signature method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nsPrefix</p></td>
-<td><p>the namespace prefix for the signature element (e.g. "dsig"), or NULL</p></td>
-<td> </td>
+<td class="parameter_name"><p>nsPrefix</p></td>
+<td class="parameter_description"><p>the namespace prefix for the signature element (e.g. "dsig"), or NULL</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17471"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Signature/&gt; node or NULL if an
+<div class="refsect3">
+<a name="xmlSecTmplSignatureCreateNsPref.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node or NULL if an
error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATUREENSUREKEYINFO"></a><h3>xmlSecTmplSignatureEnsureKeyInfo ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureEnsureKeyInfo (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> signNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Adds (if necessary) &lt;dsig:KeyInfo/&gt; node to the &lt;dsig:Signature/&gt;
-node <code class="PARAMETER">signNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplSignatureEnsureKeyInfo"></a><h3>xmlSecTmplSignatureEnsureKeyInfo ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureEnsureKeyInfo (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> signNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Adds (if necessary) <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a>
+node <em class="parameter"><code>signNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17489"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17491"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplSignatureEnsureKeyInfo.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>signNode</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17506"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:KeyInfo/&gt; node or NULL if an
+<div class="refsect3">
+<a name="xmlSecTmplSignatureEnsureKeyInfo.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node or NULL if an
error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATUREADDREFERENCE"></a><h3>xmlSecTmplSignatureAddReference ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureAddReference (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> signNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> digestMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>);</pre>
-<p>Adds &lt;dsig:Reference/&gt; node with given URI (<code class="PARAMETER">uri</code>
-), Id (<code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecTmplSignatureAddReference"></a><h3>xmlSecTmplSignatureAddReference ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureAddReference (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> signNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> digestMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node with given URI (<em class="parameter"><code>uri</code></em>
+), Id (<em class="parameter"><code>id</code></em>
) and
-Type (<code class="PARAMETER">type</code>
-) attributes and the required children &lt;dsig:DigestMethod/&gt; and
-&lt;dsig:DigestValue/&gt; to the &lt;dsig:SignedInfo/&gt; child of <code class="PARAMETER">signNode</code>
-.</p>
-<div class="REFSECT3">
-<a name="AEN17536"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17538"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+Type (<em class="parameter"><code>type</code></em>
+) attributes and the required children <a class="ulink" href="" target="_top">&lt;dsig:DigestMethod/&gt;</a> and</p>
+<a class="ulink" href="" target="_top">&lt;dsig:DigestValue/&gt;</a> to the <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> child of <em class="parameter"><code>signNode</code></em>.
+<div class="refsect3">
+<a name="xmlSecTmplSignatureAddReference.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>signNode</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>digestMethodId</p></td>
-<td><p>the reference digest method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>digestMethodId</p></td>
+<td class="parameter_description"><p>the reference digest method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the reference node uri (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the reference node uri (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the reference node type (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the reference node type (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17571"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Reference/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplSignatureAddReference.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATUREADDOBJECT"></a><h3>xmlSecTmplSignatureAddObject ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureAddObject (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> signNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *mimeType</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *encoding</code>);</pre>
-<p>Adds &lt;dsig:Object/&gt; node to the &lt;dsig:Signature/&gt; node <code class="PARAMETER">signNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplSignatureAddObject"></a><h3>xmlSecTmplSignatureAddObject ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureAddObject (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> signNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *mimeType</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *encoding</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node <em class="parameter"><code>signNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17595"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17597"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplSignatureAddObject.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>signNode</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mimeType</p></td>
-<td><p>the object mime type (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>mimeType</p></td>
+<td class="parameter_description"><p>the object mime type (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>encoding</p></td>
-<td><p>the object encoding (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>encoding</p></td>
+<td class="parameter_description"><p>the object encoding (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17624"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Object/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplSignatureAddObject.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATUREGETSIGNMETHODNODE"></a><h3>xmlSecTmplSignatureGetSignMethodNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureGetSignMethodNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> signNode</code>);</pre>
-<p>Gets pointer to &lt;dsig:SignatureMethod/&gt; child of &lt;dsig:KeyInfo/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN17638"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17640"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplSignatureGetSignMethodNode"></a><h3>xmlSecTmplSignatureGetSignMethodNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureGetSignMethodNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> signNode</code></em>);</pre>
+<p>Gets pointer to <a class="ulink" href="" target="_top">&lt;dsig:SignatureMethod/&gt;</a> child of <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplSignatureGetSignMethodNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>signNode</p></td>
-<td><p>the pointer to &lt;dsig:Signature /&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature /&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN17649"></a><h4>Returns</h4>
-<p> pointer to &lt;dsig:SignatureMethod /&gt; node or NULL if an error occurs.</p>
+<div class="refsect3">
+<a name="xmlSecTmplSignatureGetSignMethodNode.returns"></a><h4>Returns</h4>
+<p> pointer to <a class="ulink" href="" target="_top">&lt;dsig:SignatureMethod /&gt;</a> node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLSIGNATUREGETC14NMETHODNODE"></a><h3>xmlSecTmplSignatureGetC14NMethodNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplSignatureGetC14NMethodNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> signNode</code>);</pre>
-<p>Gets pointer to &lt;dsig:CanonicalizationMethod/&gt; child of &lt;dsig:KeyInfo/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN17663"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17665"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplSignatureGetC14NMethodNode"></a><h3>xmlSecTmplSignatureGetC14NMethodNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplSignatureGetC14NMethodNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> signNode</code></em>);</pre>
+<p>Gets pointer to <a class="ulink" href="" target="_top">&lt;dsig:CanonicalizationMethod/&gt;</a> child of <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplSignatureGetC14NMethodNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>signNode</p></td>
-<td><p>the pointer to &lt;dsig:Signature /&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>signNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature /&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN17674"></a><h4>Returns</h4>
-<p> pointer to &lt;dsig:CanonicalizationMethod /&gt; node or NULL if an error occurs.</p>
+<div class="refsect3">
+<a name="xmlSecTmplSignatureGetC14NMethodNode.returns"></a><h4>Returns</h4>
+<p> pointer to <a class="ulink" href="" target="_top">&lt;dsig:CanonicalizationMethod /&gt;</a> node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLREFERENCEADDTRANSFORM"></a><h3>xmlSecTmplReferenceAddTransform ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplReferenceAddTransform (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> referenceNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Adds &lt;dsig:Transform/&gt; node to the &lt;dsig:Reference/&gt; node <code class="PARAMETER">referenceNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplReferenceAddTransform"></a><h3>xmlSecTmplReferenceAddTransform ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplReferenceAddTransform (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> referenceNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node <em class="parameter"><code>referenceNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17692"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17694"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplReferenceAddTransform.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>referenceNode</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>referenceNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform method id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform method id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN17709"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Transform/&gt; node or NULL if an
+<div class="refsect3">
+<a name="xmlSecTmplReferenceAddTransform.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node or NULL if an
error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLOBJECTADDSIGNPROPERTIES"></a><h3>xmlSecTmplObjectAddSignProperties ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplObjectAddSignProperties (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> objectNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *target</code>);</pre>
-<p>Adds &lt;dsig:SignatureProperties/&gt; node to the &lt;dsig:Object/&gt; node <code class="PARAMETER">objectNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplObjectAddSignProperties"></a><h3>xmlSecTmplObjectAddSignProperties ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplObjectAddSignProperties (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> objectNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *target</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:SignatureProperties/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node <em class="parameter"><code>objectNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17730"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17732"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplObjectAddSignProperties.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>objectNode</p></td>
-<td><p>the pointer to &lt;dsig:Object/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>objectNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>target</p></td>
-<td><p>the Target (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>target</p></td>
+<td class="parameter_description"><p>the Target (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN17753"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:SignatureProperties/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplObjectAddSignProperties.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:SignatureProperties/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLOBJECTADDMANIFEST"></a><h3>xmlSecTmplObjectAddManifest ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplObjectAddManifest (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> objectNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Adds &lt;dsig:Manifest/&gt; node to the &lt;dsig:Object/&gt; node <code class="PARAMETER">objectNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplObjectAddManifest"></a><h3>xmlSecTmplObjectAddManifest ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplObjectAddManifest (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> objectNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node <em class="parameter"><code>objectNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17771"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17773"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplObjectAddManifest.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>objectNode</p></td>
-<td><p>the pointer to &lt;dsig:Object/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>objectNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Object/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN17788"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Manifest/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplObjectAddManifest.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLMANIFESTADDREFERENCE"></a><h3>xmlSecTmplManifestAddReference ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplManifestAddReference (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> manifestNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> digestMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>);</pre>
-<p>Adds &lt;dsig:Reference/&gt; node with specified URI (<code class="PARAMETER">uri</code>
-), Id (<code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecTmplManifestAddReference"></a><h3>xmlSecTmplManifestAddReference ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplManifestAddReference (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> manifestNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> digestMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node with specified URI (<em class="parameter"><code>uri</code></em>
+), Id (<em class="parameter"><code>id</code></em>
) and
-Type (<code class="PARAMETER">type</code>
-) attributes and the required children &lt;dsig:DigestMethod/&gt; and
-&lt;dsig:DigestValue/&gt; to the &lt;dsig:Manifest/&gt; node <code class="PARAMETER">manifestNode</code>
-.</p>
-<div class="REFSECT3">
-<a name="AEN17818"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17820"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+Type (<em class="parameter"><code>type</code></em>
+) attributes and the required children <a class="ulink" href="" target="_top">&lt;dsig:DigestMethod/&gt;</a> and</p>
+<a class="ulink" href="" target="_top">&lt;dsig:DigestValue/&gt;</a> to the <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node <em class="parameter"><code>manifestNode</code></em>.
+<div class="refsect3">
+<a name="xmlSecTmplManifestAddReference.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>manifestNode</p></td>
-<td><p>the pointer to &lt;dsig:Manifest/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>manifestNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>digestMethodId</p></td>
-<td><p>the reference digest method.</p></td>
-<td> </td>
+<td class="parameter_name"><p>digestMethodId</p></td>
+<td class="parameter_description"><p>the reference digest method.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the node id (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the node id (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the reference node uri (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the reference node uri (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the reference node type (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the reference node type (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17853"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Reference/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplManifestAddReference.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATACREATE"></a><h3>xmlSecTmplEncDataCreate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataCreate (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> encMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *mimeType</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *encoding</code>);</pre>
-<p>Creates new &lt;enc:EncryptedData /&gt; node for encryption template.</p>
-<div class="REFSECT3">
-<a name="AEN17882"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17884"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataCreate"></a><h3>xmlSecTmplEncDataCreate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataCreate (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> encMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *mimeType</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *encoding</code></em>);</pre>
+<p>Creates new <a class="ulink" href="" target="_top">&lt;enc:EncryptedData /&gt;</a> node for encryption template.</p>
+<div class="refsect3">
+<a name="xmlSecTmplEncDataCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to signature document or NULL; in the later
-case, application must later call <code class="PARAMETER">xmlSetTreeDoc</code>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to signature document or NULL; in the later
+case, application must later call <em class="parameter"><code>xmlSetTreeDoc</code></em>
to ensure
that all the children nodes have correct pointer to XML document.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>encMethodId</p></td>
-<td><p>the encryption method (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>encMethodId</p></td>
+<td class="parameter_description"><p>the encryption method (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the Id attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the Id attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the Type attribute (optional)</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the Type attribute (optional)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mimeType</p></td>
-<td><p>the MimeType attribute (optional)</p></td>
-<td> </td>
+<td class="parameter_name"><p>mimeType</p></td>
+<td class="parameter_description"><p>the MimeType attribute (optional)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>encoding</p></td>
-<td><p>the Encoding attribute (optional)</p></td>
-<td> </td>
+<td class="parameter_name"><p>encoding</p></td>
+<td class="parameter_description"><p>the Encoding attribute (optional)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17924"></a><h4>Returns</h4>
-<p> the pointer newly created &lt;enc:EncryptedData/&gt; node or NULL
+<div class="refsect3">
+<a name="xmlSecTmplEncDataCreate.returns"></a><h4>Returns</h4>
+<p> the pointer newly created <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node or NULL
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAENSUREKEYINFO"></a><h3>xmlSecTmplEncDataEnsureKeyInfo ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataEnsureKeyInfo (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Adds &lt;dsig:KeyInfo/&gt; to the &lt;enc:EncryptedData/&gt; node <code class="PARAMETER">encNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataEnsureKeyInfo"></a><h3>xmlSecTmplEncDataEnsureKeyInfo ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataEnsureKeyInfo (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> to the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node <em class="parameter"><code>encNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17942"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17944"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureKeyInfo.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the Id attrbibute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the Id attrbibute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17959"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:KeyInfo/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureKeyInfo.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAENSUREENCPROPERTIES"></a><h3>xmlSecTmplEncDataEnsureEncProperties ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataEnsureEncProperties (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Adds &lt;enc:EncryptionProperties/&gt; node to the &lt;enc:EncryptedData/&gt;
-node <code class="PARAMETER">encNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataEnsureEncProperties"></a><h3>xmlSecTmplEncDataEnsureEncProperties ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataEnsureEncProperties (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:EncryptionProperties/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+node <em class="parameter"><code>encNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN17977"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN17979"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureEncProperties.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the Id attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the Id attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN17994"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:EncryptionProperties/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureEncProperties.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:EncryptionProperties/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAADDENCPROPERTY"></a><h3>xmlSecTmplEncDataAddEncProperty ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataAddEncProperty (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *target</code>);</pre>
-<p>Adds &lt;enc:EncryptionProperty/&gt; node (and the parent
-&lt;enc:EncryptionProperties/&gt; node if required) to the
-&lt;enc:EncryptedData/&gt; node <code class="PARAMETER">encNode</code>
-.</p>
-<div class="REFSECT3">
-<a name="AEN18015"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18017"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataAddEncProperty"></a><h3>xmlSecTmplEncDataAddEncProperty ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataAddEncProperty (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *target</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:EncryptionProperty/&gt;</a> node (and the parent</p>
+<a class="ulink" href="" target="_top">&lt;enc:EncryptionProperties/&gt;</a> node if required) to the
+<a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node <em class="parameter"><code>encNode</code></em>.
+<div class="refsect3">
+<a name="xmlSecTmplEncDataAddEncProperty.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the Id attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the Id attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>target</p></td>
-<td><p>the Target attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>target</p></td>
+<td class="parameter_description"><p>the Target attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18038"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:EncryptionProperty/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplEncDataAddEncProperty.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:EncryptionProperty/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAENSURECIPHERVALUE"></a><h3>xmlSecTmplEncDataEnsureCipherValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataEnsureCipherValue (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>);</pre>
-<p>Adds &lt;enc:CipherValue/&gt; to the &lt;enc:EncryptedData/&gt; node <code class="PARAMETER">encNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataEnsureCipherValue"></a><h3>xmlSecTmplEncDataEnsureCipherValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataEnsureCipherValue (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:CipherValue/&gt;</a> to the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node <em class="parameter"><code>encNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18053"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18055"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureCipherValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18064"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:CipherValue/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureCipherValue.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:CipherValue/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAENSURECIPHERREFERENCE"></a><h3>xmlSecTmplEncDataEnsureCipherReference ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplEncDataEnsureCipherReference"></a><h3>xmlSecTmplEncDataEnsureCipherReference ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
xmlSecTmplEncDataEnsureCipherReference
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Adds &lt;enc:CipherReference/&gt; node with specified URI attribute <code class="PARAMETER">uri</code>
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:CipherReference/&gt;</a> node with specified URI attribute <em class="parameter"><code>uri</code></em>
-to the &lt;enc:EncryptedData/&gt; node <code class="PARAMETER">encNode</code>
+to the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node <em class="parameter"><code>encNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18083"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18085"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureCipherReference.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URI attribute (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URI attribute (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18100"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:CipherReference/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplEncDataEnsureCipherReference.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:CipherReference/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLENCDATAGETENCMETHODNODE"></a><h3>xmlSecTmplEncDataGetEncMethodNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplEncDataGetEncMethodNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>);</pre>
-<p>Gets pointer to &lt;enc:EncrytpionMethod/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18114"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18116"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplEncDataGetEncMethodNode"></a><h3>xmlSecTmplEncDataGetEncMethodNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplEncDataGetEncMethodNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>);</pre>
+<p>Gets pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptionMethod/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplEncDataGetEncMethodNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EcnryptedData /&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EcnryptedData /&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18125"></a><h4>Returns</h4>
-<p> pointer to &lt;enc:EncryptionMethod /&gt; node or NULL if an error occurs.</p>
+<div class="refsect3">
+<a name="xmlSecTmplEncDataGetEncMethodNode.returns"></a><h4>Returns</h4>
+<p> pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptionMethod /&gt;</a> node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLCIPHERREFERENCEADDTRANSFORM"></a><h3>xmlSecTmplCipherReferenceAddTransform ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplCipherReferenceAddTransform (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cipherReferenceNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Adds &lt;dsig:Transform/&gt; node (and the parent &lt;dsig:Transforms/&gt; node)
-with specified transform methods <code class="PARAMETER">transform</code>
- to the &lt;enc:CipherReference/&gt;
-child node of the &lt;enc:EncryptedData/&gt; node <code class="PARAMETER">encNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplCipherReferenceAddTransform"></a><h3>xmlSecTmplCipherReferenceAddTransform ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplCipherReferenceAddTransform (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cipherReferenceNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node (and the parent <a class="ulink" href="" target="_top">&lt;dsig:Transforms/&gt;</a> node)
+with specified transform methods <em class="parameter"><code>transform</code></em>
+ to the <a class="ulink" href="" target="_top">&lt;enc:CipherReference/&gt;</a>
+child node of the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node <em class="parameter"><code>encNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18144"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18146"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplCipherReferenceAddTransform.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cipherReferenceNode</p></td>
-<td><p>the pointer to &lt;enc:CipherReference/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cipherReferenceNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:CipherReference/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18161"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;dsig:Transform/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplCipherReferenceAddTransform.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLREFERENCELISTADDDATAREFERENCE"></a><h3>xmlSecTmplReferenceListAddDataReference ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplReferenceListAddDataReference"></a><h3>xmlSecTmplReferenceListAddDataReference ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
xmlSecTmplReferenceListAddDataReference
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Adds &lt;enc:DataReference/&gt; and the parent &lt;enc:ReferenceList/&gt; node (if needed).</p>
-<div class="REFSECT3">
-<a name="AEN18178"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18180"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:DataReference/&gt;</a> and the parent <a class="ulink" href="" target="_top">&lt;enc:ReferenceList/&gt;</a> node (if needed).</p>
+<div class="refsect3">
+<a name="xmlSecTmplReferenceListAddDataReference.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>uri to reference (optional)</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>uri to reference (optional)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18195"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:DataReference/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplReferenceListAddDataReference.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:DataReference/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLREFERENCELISTADDKEYREFERENCE"></a><h3>xmlSecTmplReferenceListAddKeyReference ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplReferenceListAddKeyReference"></a><h3>xmlSecTmplReferenceListAddKeyReference ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
xmlSecTmplReferenceListAddKeyReference
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> encNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Adds &lt;enc:KeyReference/&gt; and the parent &lt;enc:ReferenceList/&gt; node (if needed).</p>
-<div class="REFSECT3">
-<a name="AEN18212"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18214"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> encNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:KeyReference/&gt;</a> and the parent <a class="ulink" href="" target="_top">&lt;enc:ReferenceList/&gt;</a> node (if needed).</p>
+<div class="refsect3">
+<a name="xmlSecTmplReferenceListAddKeyReference.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encNode</p></td>
-<td><p>the pointer to &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>uri to reference (optional)</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>uri to reference (optional)</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18229"></a><h4>Returns</h4>
-<p> the pointer to newly created &lt;enc:KeyReference/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplReferenceListAddKeyReference.returns"></a><h4>Returns</h4>
+<p> the pointer to newly created <a class="ulink" href="" target="_top">&lt;enc:KeyReference/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLKEYINFOADDKEYNAME"></a><h3>xmlSecTmplKeyInfoAddKeyName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplKeyInfoAddKeyName (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>);</pre>
-<p>Adds &lt;dsig:KeyName/&gt; node to the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplKeyInfoAddKeyName"></a><h3>xmlSecTmplKeyInfoAddKeyName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplKeyInfoAddKeyName (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18247"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18249"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddKeyName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the key name (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the key name (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18264"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:KeyName/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddKeyName.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLKEYINFOADDKEYVALUE"></a><h3>xmlSecTmplKeyInfoAddKeyValue ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplKeyInfoAddKeyValue (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>);</pre>
-<p>Adds &lt;dsig:KeyValue/&gt; node to the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplKeyInfoAddKeyValue"></a><h3>xmlSecTmplKeyInfoAddKeyValue ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplKeyInfoAddKeyValue (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18279"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18281"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddKeyValue.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18290"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:KeyValue/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddKeyValue.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLKEYINFOADDX509DATA"></a><h3>xmlSecTmplKeyInfoAddX509Data ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplKeyInfoAddX509Data (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>);</pre>
-<p>Adds &lt;dsig:X509Data/&gt; node to the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplKeyInfoAddX509Data"></a><h3>xmlSecTmplKeyInfoAddX509Data ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplKeyInfoAddX509Data (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18305"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18307"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddX509Data.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18316"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509Data/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddX509Data.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLKEYINFOADDRETRIEVALMETHOD"></a><h3>xmlSecTmplKeyInfoAddRetrievalMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplKeyInfoAddRetrievalMethod (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>);</pre>
-<p>Adds &lt;dsig:RetrievalMethod/&gt; node to the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplKeyInfoAddRetrievalMethod"></a><h3>xmlSecTmplKeyInfoAddRetrievalMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplKeyInfoAddRetrievalMethod (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18337"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18339"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddRetrievalMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URI attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URI attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the Type attribute(optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the Type attribute(optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18360"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:RetrievalMethod/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddRetrievalMethod.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLRETRIEVALMETHODADDTRANSFORM"></a><h3>xmlSecTmplRetrievalMethodAddTransform ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplRetrievalMethodAddTransform (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> retrMethodNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Adds &lt;dsig:Transform/&gt; node (and the parent &lt;dsig:Transforms/&gt; node
-if required) to the &lt;dsig:RetrievalMethod/&gt; node <code class="PARAMETER">retrMethod</code>
+<div class="refsect2">
+<a name="xmlSecTmplRetrievalMethodAddTransform"></a><h3>xmlSecTmplRetrievalMethodAddTransform ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplRetrievalMethodAddTransform (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> retrMethodNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node (and the parent <a class="ulink" href="" target="_top">&lt;dsig:Transforms/&gt;</a> node
+if required) to the <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> node <em class="parameter"><code>retrMethod</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18378"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18380"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplRetrievalMethodAddTransform.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>retrMethodNode</p></td>
-<td><p>the pointer to &lt;dsig:RetrievalMethod/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>retrMethodNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN18395"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:Transforms/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplRetrievalMethodAddTransform.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:Transforms/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLKEYINFOADDENCRYPTEDKEY"></a><h3>xmlSecTmplKeyInfoAddEncryptedKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplKeyInfoAddEncryptedKey (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> keyInfoNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> encMethodId</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *recipient</code>);</pre>
-<p>Adds &lt;enc:EncryptedKey/&gt; node with given attributes to
-the &lt;dsig:KeyInfo/&gt; node <code class="PARAMETER">keyInfoNode</code>
+<div class="refsect2">
+<a name="xmlSecTmplKeyInfoAddEncryptedKey"></a><h3>xmlSecTmplKeyInfoAddEncryptedKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplKeyInfoAddEncryptedKey (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> encMethodId</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *recipient</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node with given attributes to
+the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node <em class="parameter"><code>keyInfoNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18422"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18424"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddEncryptedKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>keyInfoNode</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>encMethodId</p></td>
-<td><p>the encryption method (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>encMethodId</p></td>
+<td class="parameter_description"><p>the encryption method (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the Id attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the Id attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the Type attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the Type attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>recipient</p></td>
-<td><p>the Recipient attribute (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>recipient</p></td>
+<td class="parameter_description"><p>the Recipient attribute (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18457"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;enc:EncryptedKey/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplKeyInfoAddEncryptedKey.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509DATAADDISSUERSERIAL"></a><h3>xmlSecTmplX509DataAddIssuerSerial ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplX509DataAddIssuerSerial (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509DataNode</code>);</pre>
-<p>Adds &lt;dsig:X509IssuerSerial/&gt; node to the given &lt;dsig:X509Data/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18471"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18473"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplX509DataAddIssuerSerial"></a><h3>xmlSecTmplX509DataAddIssuerSerial ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplX509DataAddIssuerSerial (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509DataNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node to the given <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddIssuerSerial.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>x509DataNode</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509DataNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18482"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509IssuerSerial/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddIssuerSerial.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509ISSUERSERIALADDISSUERNAME"></a><h3>xmlSecTmplX509IssuerSerialAddIssuerName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplX509IssuerSerialAddIssuerName"></a><h3>xmlSecTmplX509IssuerSerialAddIssuerName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
xmlSecTmplX509IssuerSerialAddIssuerName
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509IssuerSerialNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *issuerName</code>);</pre>
-<p>Adds &lt;dsig:X509IssuerName/&gt; node to the &lt;dsig:X509IssuerSerial/&gt; node <code class="PARAMETER">x509IssuerSerialNode</code>
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509IssuerSerialNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *issuerName</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerName/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node <em class="parameter"><code>x509IssuerSerialNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18500"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18502"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplX509IssuerSerialAddIssuerName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>x509IssuerSerialNode</p></td>
-<td><p>the pointer to &lt;dsig:X509IssuerSerial/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509IssuerSerialNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>issuerName</p></td>
-<td><p>the issuer name (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>issuerName</p></td>
+<td class="parameter_description"><p>the issuer name (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18517"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509IssuerName/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509IssuerSerialAddIssuerName.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerName/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509ISSUERSERIALADDSERIALNUMBER"></a><h3>xmlSecTmplX509IssuerSerialAddSerialNumber ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplX509IssuerSerialAddSerialNumber"></a><h3>xmlSecTmplX509IssuerSerialAddSerialNumber ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
xmlSecTmplX509IssuerSerialAddSerialNumber
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509IssuerSerialNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *serial</code>);</pre>
-<p>Adds &lt;dsig:X509SerialNumber/&gt; node to the &lt;dsig:X509IssuerSerial/&gt; node <code class="PARAMETER">x509IssuerSerialNode</code>
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509IssuerSerialNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *serial</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509SerialNumber/&gt;</a> node to the <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node <em class="parameter"><code>x509IssuerSerialNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18535"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18537"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplX509IssuerSerialAddSerialNumber.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>x509IssuerSerialNode</p></td>
-<td><p>the pointer to &lt;dsig:X509IssuerSerial/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509IssuerSerialNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>serial</p></td>
-<td><p>the serial number (optional).</p></td>
-<td> </td>
+<td class="parameter_name"><p>serial</p></td>
+<td class="parameter_description"><p>the serial number (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18552"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509SerialNumber/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509IssuerSerialAddSerialNumber.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509SerialNumber/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509DATAADDSUBJECTNAME"></a><h3>xmlSecTmplX509DataAddSubjectName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplX509DataAddSubjectName (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509DataNode</code>);</pre>
-<p>Adds &lt;dsig:X509SubjectName/&gt; node to the given &lt;dsig:X509Data/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18566"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18568"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplX509DataAddSubjectName"></a><h3>xmlSecTmplX509DataAddSubjectName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplX509DataAddSubjectName (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509DataNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509SubjectName/&gt;</a> node to the given <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddSubjectName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>x509DataNode</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509DataNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18577"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509SubjectName/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddSubjectName.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509SubjectName/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509DATAADDSKI"></a><h3>xmlSecTmplX509DataAddSKI ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplX509DataAddSKI (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509DataNode</code>);</pre>
-<p>Adds &lt;dsig:X509SKI/&gt; node to the given &lt;dsig:X509Data/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18591"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18593"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplX509DataAddSKI"></a><h3>xmlSecTmplX509DataAddSKI ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplX509DataAddSKI (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509DataNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509SKI/&gt;</a> node to the given <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddSKI.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>x509DataNode</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509DataNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18602"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509SKI/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddSKI.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509SKI/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509DATAADDCERTIFICATE"></a><h3>xmlSecTmplX509DataAddCertificate ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplX509DataAddCertificate (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509DataNode</code>);</pre>
-<p>Adds &lt;dsig:X509Certificate/&gt; node to the given &lt;dsig:X509Data/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18616"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18618"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplX509DataAddCertificate"></a><h3>xmlSecTmplX509DataAddCertificate ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplX509DataAddCertificate (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509DataNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509Certificate/&gt;</a> node to the given <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddCertificate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>x509DataNode</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509DataNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18627"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509Certificate/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddCertificate.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509Certificate/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLX509DATAADDCRL"></a><h3>xmlSecTmplX509DataAddCRL ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecTmplX509DataAddCRL (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> x509DataNode</code>);</pre>
-<p>Adds &lt;dsig:X509CRL/&gt; node to the given &lt;dsig:X509Data/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN18641"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18643"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTmplX509DataAddCRL"></a><h3>xmlSecTmplX509DataAddCRL ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecTmplX509DataAddCRL (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> x509DataNode</code></em>);</pre>
+<p>Adds <a class="ulink" href="" target="_top">&lt;dsig:X509CRL/&gt;</a> node to the given <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddCRL.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>x509DataNode</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>x509DataNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18652"></a><h4>Returns</h4>
-<p> the pointer to the newly created &lt;dsig:X509CRL/&gt; node or
+<div class="refsect3">
+<a name="xmlSecTmplX509DataAddCRL.returns"></a><h4>Returns</h4>
+<p> the pointer to the newly created <a class="ulink" href="" target="_top">&lt;dsig:X509CRL/&gt;</a> node or
NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDHMACOUTPUTLENGTH"></a><h3>xmlSecTmplTransformAddHmacOutputLength ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddHmacOutputLength"></a><h3>xmlSecTmplTransformAddHmacOutputLength ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecTmplTransformAddHmacOutputLength
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> bitsLen</code>);</pre>
-<p>Creates &lt;dsig:HMACOutputLength/&gt; child for the HMAC transform
-node <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> bitsLen</code></em>);</pre>
+<p>Creates <a class="ulink" href="" target="_top">&lt;dsig:HMACOutputLength/&gt;</a> child for the HMAC transform
+node <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18670"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18672"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddHmacOutputLength.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>bitsLen</p></td>
-<td><p>the required length in bits</p></td>
-<td> </td>
+<td class="parameter_name"><p>bitsLen</p></td>
+<td class="parameter_description"><p>the required length in bits</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18687"></a><h4>Returns</h4>
-<p> 0 on success and a negatie value otherwise.</p>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddHmacOutputLength.returns"></a><h4>Returns</h4>
+<p> 0 on success and a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDRSAOAEPPARAM"></a><h3>xmlSecTmplTransformAddRsaOaepParam ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTmplTransformAddRsaOaepParam (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buf</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Creates &lt;enc:OAEPParam/&gt; child node in the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddRsaOaepParam"></a><h3>xmlSecTmplTransformAddRsaOaepParam ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTmplTransformAddRsaOaepParam (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buf</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Creates <a class="ulink" href="" target="_top">&lt;enc:OAEPParam/&gt;</a> child node in the <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18708"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18710"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddRsaOaepParam.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buf</p></td>
-<td><p>the OAEP param buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buf</p></td>
+<td class="parameter_description"><p>the OAEP param buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the OAEP param buffer size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the OAEP param buffer size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18731"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddRsaOaepParam.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDXSLTSTYLESHEET"></a><h3>xmlSecTmplTransformAddXsltStylesheet ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTmplTransformAddXsltStylesheet (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *xslt</code>);</pre>
-<p>Writes the XSLT transform expression to the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddXsltStylesheet"></a><h3>xmlSecTmplTransformAddXsltStylesheet ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTmplTransformAddXsltStylesheet (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *xslt</code></em>);</pre>
+<p>Writes the XSLT transform expression to the <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18749"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18751"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXsltStylesheet.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>xslt</p></td>
-<td><p>the XSLT transform exspression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>xslt</p></td>
+<td class="parameter_description"><p>the XSLT transform expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18766"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXsltStylesheet.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDC14NINCLNAMESPACES"></a><h3>xmlSecTmplTransformAddC14NInclNamespaces ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddC14NInclNamespaces"></a><h3>xmlSecTmplTransformAddC14NInclNamespaces ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecTmplTransformAddC14NInclNamespaces
- (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *prefixList</code>);</pre>
-<p>Adds "inclusive" namespaces to the ExcC14N transform node <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *prefixList</code></em>);</pre>
+<p>Adds "inclusive" namespaces to the ExcC14N transform node <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18784"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18786"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddC14NInclNamespaces.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>prefixList</p></td>
-<td><p>the white space delimited list of namespace prefixes,
-where "<font><span class="TYPE">default</span></font>" indicates the default namespace
+<td class="parameter_name"><p>prefixList</p></td>
+<td class="parameter_description"><p>the white space delimited list of namespace prefixes,
+where "<font><span class="type">default</span></font>" indicates the default namespace
(optional).</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18803"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddC14NInclNamespaces.returns"></a><h4>Returns</h4>
<p> 0 if success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDXPATH"></a><h3>xmlSecTmplTransformAddXPath ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTmplTransformAddXPath (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *expression</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> **nsList</code>);</pre>
-<p>Writes XPath transform infromation to the &lt;dsig:Transform/&gt; node
-<code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddXPath"></a><h3>xmlSecTmplTransformAddXPath ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTmplTransformAddXPath (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *expression</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> **nsList</code></em>);</pre>
+<p>Writes XPath transform information to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node
+<em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18824"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18826"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPath.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to the &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>expression</p></td>
-<td><p>the XPath expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>expression</p></td>
+<td class="parameter_description"><p>the XPath expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nsList</p></td>
-<td><p>the NULL terminated list of namespace prefix/href pairs
+<td class="parameter_name"><p>nsList</p></td>
+<td class="parameter_description"><p>the NULL terminated list of namespace prefix/href pairs
(optional).</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18847"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPath.returns"></a><h4>Returns</h4>
<p> 0 for success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDXPATH2"></a><h3>xmlSecTmplTransformAddXPath2 ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTmplTransformAddXPath2 (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *type</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *expression</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> **nsList</code>);</pre>
-<p>Writes XPath2 transform infromation to the &lt;dsig:Transform/&gt; node
-<code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddXPath2"></a><h3>xmlSecTmplTransformAddXPath2 ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTmplTransformAddXPath2 (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *type</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *expression</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> **nsList</code></em>);</pre>
+<p>Writes XPath2 transform information to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node
+<em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18871"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18873"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPath2.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to the &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>type</p></td>
-<td><p>the XPath2 transform type ("union", "intersect" or "subtract").</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the XPath2 transform type ("union", "intersect" or "subtract").</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>expression</p></td>
-<td><p>the XPath expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>expression</p></td>
+<td class="parameter_description"><p>the XPath expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nsList</p></td>
-<td><p>the NULL terminated list of namespace prefix/href pairs.
+<td class="parameter_name"><p>nsList</p></td>
+<td class="parameter_description"><p>the NULL terminated list of namespace prefix/href pairs.
(optional).</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18900"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPath2.returns"></a><h4>Returns</h4>
<p> 0 for success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTMPLTRANSFORMADDXPOINTER"></a><h3>xmlSecTmplTransformAddXPointer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTmplTransformAddXPointer (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> transformNode</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *expression</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> **nsList</code>);</pre>
-<p>Writes XPoniter transform infromation to the &lt;dsig:Transform/&gt; node
-<code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTmplTransformAddXPointer"></a><h3>xmlSecTmplTransformAddXPointer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTmplTransformAddXPointer (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> transformNode</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *expression</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> **nsList</code></em>);</pre>
+<p>Writes XPointer transform information to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node
+<em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN18921"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18923"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPointer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transformNode</p></td>
-<td><p>the pointer to the &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformNode</p></td>
+<td class="parameter_description"><p>the pointer to the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>expression</p></td>
-<td><p>the XPath expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>expression</p></td>
+<td class="parameter_description"><p>the XPath expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nsList</p></td>
-<td><p>the NULL terminated list of namespace prefix/href pairs.
+<td class="parameter_name"><p>nsList</p></td>
+<td class="parameter_description"><p>the NULL terminated list of namespace prefix/href pairs.
(optional).</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN18944"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTmplTransformAddXPointer.returns"></a><h4>Returns</h4>
<p> 0 for success or a negative value otherwise.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TEMPLATES.OTHER_DETAILS"></a><h2>Types and Values</h2>
+<div class="refsect1">
+<a name="xmlsec-templates.other_details"></a><h2>Types and Values</h2>
<p></p>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-parser.html"><b>&lt;&lt;&lt; parser</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-transforms.html"><b>transforms &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-transforms.html b/docs/api/xmlsec-transforms.html
index f2c06b65..075d1f2e 100644
--- a/docs/api/xmlsec-transforms.html
+++ b/docs/api/xmlsec-transforms.html
@@ -1,3863 +1,3854 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>transforms</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="templates" href="xmlsec-templates.html">
-<link rel="NEXT" title="version" href="xmlsec-version.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>transforms: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-templates.html" title="templates">
+<link rel="next" href="xmlsec-version.html" title="version">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-transforms.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-templates.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-version.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-TRANSFORMS"></a>transforms</h1>
-<div class="REFNAMEDIV">
-<a name="AEN18955"></a><h2>Name</h2>transforms -- Transform object definition.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TRANSFORMS.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN18960"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-transforms"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-transforms.top_of_page"></a>transforms</span></h2>
+<p>transforms — Transform object functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-transforms.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-transforms.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSGET">xmlSecTransformIdsGet</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsGet" title="xmlSecTransformIdsGet ()">xmlSecTransformIdsGet</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSINIT">xmlSecTransformIdsInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsInit" title="xmlSecTransformIdsInit ()">xmlSecTransformIdsInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSSHUTDOWN">xmlSecTransformIdsShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsShutdown" title="xmlSecTransformIdsShutdown ()">xmlSecTransformIdsShutdown</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSREGISTERDEFAULT">xmlSecTransformIdsRegisterDefault</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsRegisterDefault" title="xmlSecTransformIdsRegisterDefault ()">xmlSecTransformIdsRegisterDefault</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDSREGISTER">xmlSecTransformIdsRegister</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdsRegister" title="xmlSecTransformIdsRegister ()">xmlSecTransformIdsRegister</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPECHECK">xmlSecTransformUriTypeCheck</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeCheck" title="xmlSecTransformUriTypeCheck ()">xmlSecTransformUriTypeCheck</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREEXECUTECALLBACK">*xmlSecTransformCtxPreExecuteCallback</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPreExecuteCallback" title="xmlSecTransformCtxPreExecuteCallback ()">*xmlSecTransformCtxPreExecuteCallback</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="RETURNVALUE">xmlSecTransformCtxPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATE">xmlSecTransformCtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="returnvalue">xmlSecTransformCtxPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreate" title="xmlSecTransformCtxCreate ()">xmlSecTransformCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDESTROY">xmlSecTransformCtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDestroy" title="xmlSecTransformCtxDestroy ()">xmlSecTransformCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXINITIALIZE">xmlSecTransformCtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxInitialize" title="xmlSecTransformCtxInitialize ()">xmlSecTransformCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXFINALIZE">xmlSecTransformCtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxFinalize" title="xmlSecTransformCtxFinalize ()">xmlSecTransformCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXRESET">xmlSecTransformCtxReset</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxReset" title="xmlSecTransformCtxReset ()">xmlSecTransformCtxReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCOPYUSERPREF">xmlSecTransformCtxCopyUserPref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCopyUserPref" title="xmlSecTransformCtxCopyUserPref ()">xmlSecTransformCtxCopyUserPref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXSETURI">xmlSecTransformCtxSetUri</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxSetUri" title="xmlSecTransformCtxSetUri ()">xmlSecTransformCtxSetUri</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXAPPEND">xmlSecTransformCtxAppend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxAppend" title="xmlSecTransformCtxAppend ()">xmlSecTransformCtxAppend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREPEND">xmlSecTransformCtxPrepend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPrepend" title="xmlSecTransformCtxPrepend ()">xmlSecTransformCtxPrepend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATEANDAPPEND">xmlSecTransformCtxCreateAndAppend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreateAndAppend" title="xmlSecTransformCtxCreateAndAppend ()">xmlSecTransformCtxCreateAndAppend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATEANDPREPEND">xmlSecTransformCtxCreateAndPrepend</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreateAndPrepend" title="xmlSecTransformCtxCreateAndPrepend ()">xmlSecTransformCtxCreateAndPrepend</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXNODEREAD">xmlSecTransformCtxNodeRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxNodeRead" title="xmlSecTransformCtxNodeRead ()">xmlSecTransformCtxNodeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXNODESLISTREAD">xmlSecTransformCtxNodesListRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxNodesListRead" title="xmlSecTransformCtxNodesListRead ()">xmlSecTransformCtxNodesListRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREPARE">xmlSecTransformCtxPrepare</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPrepare" title="xmlSecTransformCtxPrepare ()">xmlSecTransformCtxPrepare</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXBINARYEXECUTE">xmlSecTransformCtxBinaryExecute</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxBinaryExecute" title="xmlSecTransformCtxBinaryExecute ()">xmlSecTransformCtxBinaryExecute</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXURIEXECUTE">xmlSecTransformCtxUriExecute</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxUriExecute" title="xmlSecTransformCtxUriExecute ()">xmlSecTransformCtxUriExecute</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXXMLEXECUTE">xmlSecTransformCtxXmlExecute</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxXmlExecute" title="xmlSecTransformCtxXmlExecute ()">xmlSecTransformCtxXmlExecute</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXEXECUTE">xmlSecTransformCtxExecute</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxExecute" title="xmlSecTransformCtxExecute ()">xmlSecTransformCtxExecute</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDEBUGDUMP">xmlSecTransformCtxDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDebugDump" title="xmlSecTransformCtxDebugDump ()">xmlSecTransformCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDEBUGXMLDUMP">xmlSecTransformCtxDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDebugXmlDump" title="xmlSecTransformCtxDebugXmlDump ()">xmlSecTransformCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATE">xmlSecTransformCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCreate" title="xmlSecTransformCreate ()">xmlSecTransformCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDESTROY">xmlSecTransformDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDestroy" title="xmlSecTransformDestroy ()">xmlSecTransformDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEREAD">xmlSecTransformNodeRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeRead" title="xmlSecTransformNodeRead ()">xmlSecTransformNodeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMPUMP">xmlSecTransformPump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformPump" title="xmlSecTransformPump ()">xmlSecTransformPump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEY">xmlSecTransformSetKey</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKey" title="xmlSecTransformSetKey ()">xmlSecTransformSetKey</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQ">xmlSecTransformSetKeyReq</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyReq" title="xmlSecTransformSetKeyReq ()">xmlSecTransformSetKeyReq</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFY">xmlSecTransformVerify</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformVerify" title="xmlSecTransformVerify ()">xmlSecTransformVerify</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYNODECONTENT">xmlSecTransformVerifyNodeContent</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyNodeContent" title="xmlSecTransformVerifyNodeContent ()">xmlSecTransformVerifyNodeContent</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMGETDATATYPE">xmlSecTransformGetDataType</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformGetDataType" title="xmlSecTransformGetDataType ()">xmlSecTransformGetDataType</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBIN">xmlSecTransformPushBin</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBin" title="xmlSecTransformPushBin ()">xmlSecTransformPushBin</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBIN">xmlSecTransformPopBin</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBin" title="xmlSecTransformPopBin ()">xmlSecTransformPopBin</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXML">xmlSecTransformPushXml</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXml" title="xmlSecTransformPushXml ()">xmlSecTransformPushXml</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXML">xmlSecTransformPopXml</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXml" title="xmlSecTransformPopXml ()">xmlSecTransformPopXml</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTE">xmlSecTransformExecute</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformExecute" title="xmlSecTransformExecute ()">xmlSecTransformExecute</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEBUGDUMP">xmlSecTransformDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDebugDump" title="xmlSecTransformDebugDump ()">xmlSecTransformDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEBUGXMLDUMP">xmlSecTransformDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDebugXmlDump" title="xmlSecTransformDebugXmlDump ()">xmlSecTransformDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMGETNAME">xmlSecTransformGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformGetName" title="xmlSecTransformGetName()">xmlSecTransformGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMISVALID">xmlSecTransformIsValid</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIsValid" title="xmlSecTransformIsValid()">xmlSecTransformIsValid</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCHECKID">xmlSecTransformCheckId</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCheckId" title="xmlSecTransformCheckId()">xmlSecTransformCheckId</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCHECKSIZE">xmlSecTransformCheckSize</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCheckSize" title="xmlSecTransformCheckSize()">xmlSecTransformCheckSize</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT">xmlSecTransformConnect</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()">xmlSecTransformConnect</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVE">xmlSecTransformRemove</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformRemove" title="xmlSecTransformRemove ()">xmlSecTransformRemove</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTGETDATATYPE">xmlSecTransformDefaultGetDataType</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultGetDataType" title="xmlSecTransformDefaultGetDataType ()">xmlSecTransformDefaultGetDataType</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPUSHBIN">xmlSecTransformDefaultPushBin</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPushBin" title="xmlSecTransformDefaultPushBin ()">xmlSecTransformDefaultPushBin</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPOPBIN">xmlSecTransformDefaultPopBin</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPopBin" title="xmlSecTransformDefaultPopBin ()">xmlSecTransformDefaultPopBin</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPUSHXML">xmlSecTransformDefaultPushXml</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPushXml" title="xmlSecTransformDefaultPushXml ()">xmlSecTransformDefaultPushXml</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMDEFAULTPOPXML">xmlSecTransformDefaultPopXml</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDefaultPopXml" title="xmlSecTransformDefaultPopXml ()">xmlSecTransformDefaultPopXml</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlOutputBufferPtr</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATEOUTPUTBUFFER">xmlSecTransformCreateOutputBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlOutputBufferPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCreateOutputBuffer" title="xmlSecTransformCreateOutputBuffer ()">xmlSecTransformCreateOutputBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlParserInputBufferPtr</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATEINPUTBUFFER">xmlSecTransformCreateInputBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlParserInputBufferPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCreateInputBuffer" title="xmlSecTransformCreateInputBuffer ()">xmlSecTransformCreateInputBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMINITIALIZEMETHOD">*xmlSecTransformInitializeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformInitializeMethod" title="xmlSecTransformInitializeMethod ()">*xmlSecTransformInitializeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMFINALIZEMETHOD">*xmlSecTransformFinalizeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformFinalizeMethod" title="xmlSecTransformFinalizeMethod ()">*xmlSecTransformFinalizeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMGETDATATYPEMETHOD">*xmlSecTransformGetDataTypeMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformGetDataTypeMethod" title="xmlSecTransformGetDataTypeMethod ()">*xmlSecTransformGetDataTypeMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEREADMETHOD">*xmlSecTransformNodeReadMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeReadMethod" title="xmlSecTransformNodeReadMethod ()">*xmlSecTransformNodeReadMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEWRITEMETHOD">*xmlSecTransformNodeWriteMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeWriteMethod" title="xmlSecTransformNodeWriteMethod ()">*xmlSecTransformNodeWriteMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD">*xmlSecTransformSetKeyRequirementsMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyRequirementsMethod" title="xmlSecTransformSetKeyRequirementsMethod ()">*xmlSecTransformSetKeyRequirementsMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYMETHOD">*xmlSecTransformSetKeyMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyMethod" title="xmlSecTransformSetKeyMethod ()">*xmlSecTransformSetKeyMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD">*xmlSecTransformVerifyMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()">*xmlSecTransformVerifyMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBINMETHOD">*xmlSecTransformPushBinMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBinMethod" title="xmlSecTransformPushBinMethod ()">*xmlSecTransformPushBinMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBINMETHOD">*xmlSecTransformPopBinMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBinMethod" title="xmlSecTransformPopBinMethod ()">*xmlSecTransformPopBinMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXMLMETHOD">*xmlSecTransformPushXmlMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXmlMethod" title="xmlSecTransformPushXmlMethod ()">*xmlSecTransformPushXmlMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXMLMETHOD">*xmlSecTransformPopXmlMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXmlMethod" title="xmlSecTransformPopXmlMethod ()">*xmlSecTransformPopXmlMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<span class="c_punctuation"><span class="PHRASE">(</span></span><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD">*xmlSecTransformExecuteMethod</a><span class="c_punctuation"><span class="PHRASE">)</span></span> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()">*xmlSecTransformExecuteMethod</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMKLASSGETNAME">xmlSecTransformKlassGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformKlassGetName" title="xmlSecTransformKlassGetName()">xmlSecTransformKlassGetName</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTGETKLASS">xmlSecTransformIdListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListGetKlass" title="xmlSecTransformIdListGetKlass ()">xmlSecTransformIdListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFIND">xmlSecTransformIdListFind</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFind" title="xmlSecTransformIdListFind ()">xmlSecTransformIdListFind</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFINDBYHREF">xmlSecTransformIdListFindByHref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFindByHref" title="xmlSecTransformIdListFindByHref ()">xmlSecTransformIdListFindByHref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFINDBYNAME">xmlSecTransformIdListFindByName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListFindByName" title="xmlSecTransformIdListFindByName ()">xmlSecTransformIdListFindByName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGDUMP">xmlSecTransformIdListDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListDebugDump" title="xmlSecTransformIdListDebugDump ()">xmlSecTransformIdListDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGXMLDUMP">xmlSecTransformIdListDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListDebugXmlDump" title="xmlSecTransformIdListDebugXmlDump ()">xmlSecTransformIdListDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDUNKNOWN">xmlSecTransformIdUnknown</a></td>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64GetKlass" title="xmlSecTransformBase64GetKlass ()">xmlSecTransformBase64GetKlass</a> <span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64GETKLASS">xmlSecTransformBase64GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64SetLineSize" title="xmlSecTransformBase64SetLineSize ()">xmlSecTransformBase64SetLineSize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64SETLINESIZE">xmlSecTransformBase64SetLineSize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NGetKlass" title="xmlSecTransformInclC14NGetKlass ()">xmlSecTransformInclC14NGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NGETKLASS">xmlSecTransformInclC14NGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsGetKlass" title="xmlSecTransformInclC14NWithCommentsGetKlass ()">xmlSecTransformInclC14NWithCommentsGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NWITHCOMMENTSGETKLASS">xmlSecTransformInclC14NWithCommentsGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11GetKlass" title="xmlSecTransformInclC14N11GetKlass ()">xmlSecTransformInclC14N11GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11GETKLASS">xmlSecTransformInclC14N11GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsGetKlass" title="xmlSecTransformInclC14N11WithCommentsGetKlass ()">xmlSecTransformInclC14N11WithCommentsGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11WITHCOMMENTSGETKLASS">xmlSecTransformInclC14N11WithCommentsGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NGetKlass" title="xmlSecTransformExclC14NGetKlass ()">xmlSecTransformExclC14NGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NGETKLASS">xmlSecTransformExclC14NGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsGetKlass" title="xmlSecTransformExclC14NWithCommentsGetKlass ()">xmlSecTransformExclC14NWithCommentsGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NWITHCOMMENTSGETKLASS">xmlSecTransformExclC14NWithCommentsGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformEnvelopedGetKlass" title="xmlSecTransformEnvelopedGetKlass ()">xmlSecTransformEnvelopedGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMENVELOPEDGETKLASS">xmlSecTransformEnvelopedGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXPathGetKlass" title="xmlSecTransformXPathGetKlass ()">xmlSecTransformXPathGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATHGETKLASS">xmlSecTransformXPathGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXPath2GetKlass" title="xmlSecTransformXPath2GetKlass ()">xmlSecTransformXPath2GetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATH2GETKLASS">xmlSecTransformXPath2GetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerGetKlass" title="xmlSecTransformXPointerGetKlass ()">xmlSecTransformXPointerGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERGETKLASS">xmlSecTransformXPointerGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerSetExpr" title="xmlSecTransformXPointerSetExpr ()">xmlSecTransformXPointerSetExpr</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERSETEXPR">xmlSecTransformXPointerSetExpr</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformRelationshipGetKlass" title="xmlSecTransformRelationshipGetKlass ()">xmlSecTransformRelationshipGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTGETKLASS">xmlSecTransformXsltGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltGetKlass" title="xmlSecTransformXsltGetKlass ()">xmlSecTransformXsltGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTSETDEFAULTSECURITYPREFS">xmlSecTransformXsltSetDefaultSecurityPrefs</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltSetDefaultSecurityPrefs" title="xmlSecTransformXsltSetDefaultSecurityPrefs ()">xmlSecTransformXsltSetDefaultSecurityPrefs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVEXMLTAGSC14NGETKLASS">xmlSecTransformRemoveXmlTagsC14NGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NGetKlass" title="xmlSecTransformRemoveXmlTagsC14NGetKlass ()">xmlSecTransformRemoveXmlTagsC14NGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecTransformId</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKGETKLASS">xmlSecTransformVisa3DHackGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecTransformId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackGetKlass" title="xmlSecTransformVisa3DHackGetKlass ()">xmlSecTransformVisa3DHackGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKSETID">xmlSecTransformVisa3DHackSetID</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackSetID" title="xmlSecTransformVisa3DHackSetID ()">xmlSecTransformVisa3DHackSetID</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TRANSFORMS.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN19645"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-transforms.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSEC-TRANSFORM-BINARY-CHUNK:CAPS">XMLSEC_TRANSFORM_BINARY_CHUNK</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#XMLSEC-TRANSFORM-BINARY-CHUNK:CAPS" title="XMLSEC_TRANSFORM_BINARY_CHUNK">XMLSEC_TRANSFORM_BINARY_CHUNK</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUS">xmlSecTransformStatus</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformStatus" title="enum xmlSecTransformStatus">xmlSecTransformStatus</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMMODE">xmlSecTransformMode</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformMode" title="enum xmlSecTransformMode">xmlSecTransformMode</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMOPERATION">xmlSecTransformOperation</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformOperation" title="enum xmlSecTransformOperation">xmlSecTransformOperation</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPE">xmlSecTransformUriType</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriType" title="xmlSecTransformUriType">xmlSecTransformUriType</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPENONE">xmlSecTransformUriTypeNone</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeNone" title="xmlSecTransformUriTypeNone">xmlSecTransformUriTypeNone</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEEMPTY">xmlSecTransformUriTypeEmpty</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeEmpty" title="xmlSecTransformUriTypeEmpty">xmlSecTransformUriTypeEmpty</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPESAMEDOCUMENT">xmlSecTransformUriTypeSameDocument</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeSameDocument" title="xmlSecTransformUriTypeSameDocument">xmlSecTransformUriTypeSameDocument</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPELOCAL">xmlSecTransformUriTypeLocal</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeLocal" title="xmlSecTransformUriTypeLocal">xmlSecTransformUriTypeLocal</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEREMOTE">xmlSecTransformUriTypeRemote</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeRemote" title="xmlSecTransformUriTypeRemote">xmlSecTransformUriTypeRemote</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEANY">xmlSecTransformUriTypeAny</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriTypeAny" title="xmlSecTransformUriTypeAny">xmlSecTransformUriTypeAny</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE">xmlSecTransformDataType</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType">xmlSecTransformDataType</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEUNKNOWN">xmlSecTransformDataTypeUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeUnknown" title="xmlSecTransformDataTypeUnknown">xmlSecTransformDataTypeUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEBIN">xmlSecTransformDataTypeBin</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeBin" title="xmlSecTransformDataTypeBin">xmlSecTransformDataTypeBin</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPEXML">xmlSecTransformDataTypeXml</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataTypeXml" title="xmlSecTransformDataTypeXml">xmlSecTransformDataTypeXml</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE">xmlSecTransformUsage</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage">xmlSecTransformUsage</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEUNKNOWN">xmlSecTransformUsageUnknown</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageUnknown" title="xmlSecTransformUsageUnknown">xmlSecTransformUsageUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEDSIGTRANSFORM">xmlSecTransformUsageDSigTransform</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageDSigTransform" title="xmlSecTransformUsageDSigTransform">xmlSecTransformUsageDSigTransform</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEC14NMETHOD">xmlSecTransformUsageC14NMethod</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageC14NMethod" title="xmlSecTransformUsageC14NMethod">xmlSecTransformUsageC14NMethod</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEDIGESTMETHOD">xmlSecTransformUsageDigestMethod</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageDigestMethod" title="xmlSecTransformUsageDigestMethod">xmlSecTransformUsageDigestMethod</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGESIGNATUREMETHOD">xmlSecTransformUsageSignatureMethod</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageSignatureMethod" title="xmlSecTransformUsageSignatureMethod">xmlSecTransformUsageSignatureMethod</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEENCRYPTIONMETHOD">xmlSecTransformUsageEncryptionMethod</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageEncryptionMethod" title="xmlSecTransformUsageEncryptionMethod">xmlSecTransformUsageEncryptionMethod</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGEANY">xmlSecTransformUsageAny</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsageAny" title="xmlSecTransformUsageAny">xmlSecTransformUsageAny</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK:CAPS">XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK:CAPS" title="XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK">XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX">xmlSecTransformCtx</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx">xmlSecTransformCtx</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORM">xmlSecTransform</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform">xmlSecTransform</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMKLASS">xmlSecTransformKlass</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformKlass" title="struct xmlSecTransformKlass">xmlSecTransformKlass</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTID">xmlSecTransformIdListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdListId" title="xmlSecTransformIdListId">xmlSecTransformIdListId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMBASE64ID">xmlSecTransformBase64Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformIdUnknown" title="xmlSecTransformIdUnknown">xmlSecTransformIdUnknown</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NID">xmlSecTransformInclC14NId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformBase64Id" title="xmlSecTransformBase64Id">xmlSecTransformBase64Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14NWITHCOMMENTSID">xmlSecTransformInclC14NWithCommentsId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NId" title="xmlSecTransformInclC14NId">xmlSecTransformInclC14NId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11ID">xmlSecTransformInclC14N11Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsId" title="xmlSecTransformInclC14NWithCommentsId">xmlSecTransformInclC14NWithCommentsId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMINCLC14N11WITHCOMMENTSID">xmlSecTransformInclC14N11WithCommentsId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11Id" title="xmlSecTransformInclC14N11Id">xmlSecTransformInclC14N11Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NID">xmlSecTransformExclC14NId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsId" title="xmlSecTransformInclC14N11WithCommentsId">xmlSecTransformInclC14N11WithCommentsId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXCLC14NWITHCOMMENTSID">xmlSecTransformExclC14NWithCommentsId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NId" title="xmlSecTransformExclC14NId">xmlSecTransformExclC14NId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMENVELOPEDID">xmlSecTransformEnvelopedId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsId" title="xmlSecTransformExclC14NWithCommentsId">xmlSecTransformExclC14NWithCommentsId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATHID">xmlSecTransformXPathId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformEnvelopedId" title="xmlSecTransformEnvelopedId">xmlSecTransformEnvelopedId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPATH2ID">xmlSecTransformXPath2Id</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPathId" title="xmlSecTransformXPathId">xmlSecTransformXPathId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMXPOINTERID">xmlSecTransformXPointerId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPath2Id" title="xmlSecTransformXPath2Id">xmlSecTransformXPath2Id</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMXSLTID">xmlSecTransformXsltId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformXPointerId" title="xmlSecTransformXPointerId">xmlSecTransformXPointerId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVEXMLTAGSC14NID">xmlSecTransformRemoveXmlTagsC14NId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformRelationshipId" title="xmlSecTransformRelationshipId">xmlSecTransformRelationshipId</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-transforms.html#XMLSECTRANSFORMVISA3DHACKID">xmlSecTransformVisa3DHackId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformXsltId" title="xmlSecTransformXsltId">xmlSecTransformXsltId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NId" title="xmlSecTransformRemoveXmlTagsC14NId">xmlSecTransformRemoveXmlTagsC14NId</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-transforms.html#xmlSecTransformVisa3DHackId" title="xmlSecTransformVisa3DHackId">xmlSecTransformVisa3DHackId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TRANSFORMS.DESCRIPTION"></a><h2>Description</h2>
-<p>Transform object definition.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TRANSFORMS.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDSGET"></a><h3>xmlSecTransformIdsGet ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="RETURNVALUE">xmlSecPtrListPtr</span></a>
-xmlSecTransformIdsGet (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-transforms.description"></a><h2>Description</h2>
+<p>The <a class="ulink" href="http://www.w3.org/TR/xmldsig-core/#sec-Transforms" target="_top">Transforms Element</a>
+contains an ordered list of Transform elements; these describe how the signer
+obtained the data object that was digested.</p>
+<p>Schema Definition:</p>
+<div class="informalexample"><pre class="programlisting">
+ &lt;element name="Transforms" type="ds:TransformsType"/&gt;
+ &lt;complexType name="TransformsType"&gt;
+ &lt;sequence&gt;
+ &lt;element ref="ds:Transform" maxOccurs="unbounded"/&gt;
+ &lt;/sequence&gt;
+ &lt;/complexType&gt;
+
+ &lt;element name="Transform" type="ds:TransformType"/&gt;
+ &lt;complexType name="TransformType" mixed="true"&gt;
+ &lt;choice minOccurs="0" maxOccurs="unbounded"&gt;
+ &lt;any namespace="##other" processContents="lax"/&gt;
+ &lt;!-- (1,1) elements from (0,unbounded) namespaces --&gt;
+ &lt;element name="XPath" type="string"/&gt;
+ &lt;/choice&gt;
+ &lt;attribute name="Algorithm" type="anyURI" use="required"/&gt;
+ &lt;/complexType&gt;
+</pre></div>
+<p></p>
+<p>DTD:</p>
+<div class="informalexample"><pre class="programlisting">
+ &lt;!ELEMENT Transforms (Transform+)&gt;
+ &lt;!ELEMENT Transform (#PCDATA|XPath %Transform.ANY;)* &gt;
+ &lt;!ATTLIST Transform Algorithm CDATA #REQUIRED &gt;
+ &lt;!ELEMENT XPath (#PCDATA) &gt;
+</pre></div>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-transforms.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecTransformIdsGet"></a><h3>xmlSecTransformIdsGet ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="returnvalue">xmlSecPtrListPtr</span></a>
+xmlSecTransformIdsGet (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Gets global registered transform klasses list.</p>
-<div class="REFSECT3">
-<a name="AEN19831"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdsGet.returns"></a><h4>Returns</h4>
<p> the pointer to list of all registered transform klasses.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDSINIT"></a><h3>xmlSecTransformIdsInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformIdsInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdsInit"></a><h3>xmlSecTransformIdsInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformIdsInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Initializes the transform klasses. This function is called from the
-<a href="xmlsec-xmlsec.html#XMLSECINIT"><span class="TYPE">xmlSecInit</span></a> function and the application should not call it directly.</p>
-<div class="REFSECT3">
-<a name="AEN19846"></a><h4>Returns</h4>
+<a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()"><span class="type">xmlSecInit</span></a> function and the application should not call it directly.</p>
+<div class="refsect3">
+<a name="xmlSecTransformIdsInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDSSHUTDOWN"></a><h3>xmlSecTransformIdsShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformIdsShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdsShutdown"></a><h3>xmlSecTransformIdsShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformIdsShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Shuts down the keys data klasses. This function is called from the
-<a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN"><span class="TYPE">xmlSecShutdown</span></a> function and the application should not call it directly.</p>
+<a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()"><span class="type">xmlSecShutdown</span></a> function and the application should not call it directly.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDSREGISTERDEFAULT"></a><h3>xmlSecTransformIdsRegisterDefault ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformIdsRegisterDefault (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdsRegisterDefault"></a><h3>xmlSecTransformIdsRegisterDefault ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformIdsRegisterDefault (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Registers default (implemented by XML Security Library)
transform klasses: XPath transform, Base64 transform, ...</p>
-<div class="REFSECT3">
-<a name="AEN19871"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdsRegisterDefault.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDSREGISTER"></a><h3>xmlSecTransformIdsRegister ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformIdsRegister (<code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> id</code>);</pre>
-<p>Registers <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdsRegister"></a><h3>xmlSecTransformIdsRegister ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformIdsRegister (<em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> id</code></em>);</pre>
+<p>Registers <em class="parameter"><code>id</code></em>
in the global list of transform klasses.</p>
-<div class="REFSECT3">
-<a name="AEN19886"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN19888"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdsRegister.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN19897"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdsRegister.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPECHECK"></a><h3>xmlSecTransformUriTypeCheck ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformUriTypeCheck (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPE"><span class="TYPE">xmlSecTransformUriType</span></a> type</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Checks if <code class="PARAMETER">uri</code>
- matches expected type <code class="PARAMETER">type</code>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeCheck"></a><h3>xmlSecTransformUriTypeCheck ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformUriTypeCheck (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriType" title="xmlSecTransformUriType"><span class="type">xmlSecTransformUriType</span></a> type</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Checks if <em class="parameter"><code>uri</code></em>
+ matches expected type <em class="parameter"><code>type</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN19916"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN19918"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformUriTypeCheck.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>type</p></td>
-<td><p>the expected URI type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the expected URI type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the uri for checking.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the uri for checking.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN19933"></a><h4>Returns</h4>
-<p> 1 if <code class="PARAMETER">uri</code>
-matches <code class="PARAMETER">type</code>
+<div class="refsect3">
+<a name="xmlSecTransformUriTypeCheck.returns"></a><h4>Returns</h4>
+<p> 1 if <em class="parameter"><code>uri</code></em>
+matches <em class="parameter"><code>type</code></em>
, 0 if not or a negative value
if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXPREEXECUTECALLBACK"></a><h3>xmlSecTransformCtxPreExecuteCallback ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformCtxPreExecuteCallback<span class="c_punctuation"><span class="PHRASE">)</span></span>
- (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformCtxPreExecuteCallback"></a><h3>xmlSecTransformCtxPreExecuteCallback ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformCtxPreExecuteCallback<span class="c_punctuation">)</span>
+ (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The callback called after creating transforms chain but before
starting data processing. Application can use this callback to
do additional transforms chain verification or modification and
aborting transforms execution (if necessary).</p>
-<div class="REFSECT3">
-<a name="AEN19951"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN19953"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxPreExecuteCallback.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform's context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform's context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN19962"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxPreExecuteCallback.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value otherwise (in this case,
transforms chain will not be executed and xmlsec processing stops).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXCREATE"></a><h3>xmlSecTransformCtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="RETURNVALUE">xmlSecTransformCtxPtr</span></a>
-xmlSecTransformCtxCreate (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformCtxCreate"></a><h3>xmlSecTransformCtxCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="returnvalue">xmlSecTransformCtxPtr</span></a>
+xmlSecTransformCtxCreate (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Creates transforms chain processing context.
The caller is responsible for destroying returned object by calling
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXDESTROY"><span class="TYPE">xmlSecTransformCtxDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN19977"></a><h4>Returns</h4>
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxDestroy" title="xmlSecTransformCtxDestroy ()"><span class="type">xmlSecTransformCtxDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated context object or NULL if an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXDESTROY"></a><h3>xmlSecTransformCtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformCtxDestroy (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>);</pre>
-<p>Destroy context object created with <a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXCREATE"><span class="TYPE">xmlSecTransformCtxCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN19993"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN19995"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformCtxDestroy"></a><h3>xmlSecTransformCtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>);</pre>
+<p>Destroy context object created with <a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxCreate" title="xmlSecTransformCtxCreate ()"><span class="type">xmlSecTransformCtxCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXINITIALIZE"></a><h3>xmlSecTransformCtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxInitialize (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformCtxInitialize"></a><h3>xmlSecTransformCtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>);</pre>
<p>Initializes transforms chain processing context.
The caller is responsible for cleaning up returned object by calling
-<a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXFINALIZE"><span class="TYPE">xmlSecTransformCtxFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN20017"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20019"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxFinalize" title="xmlSecTransformCtxFinalize ()"><span class="type">xmlSecTransformCtxFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20028"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXFINALIZE"></a><h3>xmlSecTransformCtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformCtxFinalize (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>);</pre>
-<p>Cleans up <code class="PARAMETER">ctx</code>
- object initialized with <a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXINITIALIZE"><span class="TYPE">xmlSecTransformCtxInitialize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN20045"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20047"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformCtxFinalize"></a><h3>xmlSecTransformCtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>);</pre>
+<p>Cleans up <em class="parameter"><code>ctx</code></em>
+ object initialized with <a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxInitialize" title="xmlSecTransformCtxInitialize ()"><span class="type">xmlSecTransformCtxInitialize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXRESET"></a><h3>xmlSecTransformCtxReset ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformCtxReset (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>);</pre>
-<p>Resets transfroms context for new processing.</p>
-<div class="REFSECT3">
-<a name="AEN20067"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20069"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformCtxReset"></a><h3>xmlSecTransformCtxReset ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformCtxReset (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>);</pre>
+<p>Resets transforms context for new processing.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxReset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXCOPYUSERPREF"></a><h3>xmlSecTransformCtxCopyUserPref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxCopyUserPref (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> src</code>);</pre>
-<p>Copies user settings from <code class="PARAMETER">src</code>
- context to <code class="PARAMETER">dst</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxCopyUserPref"></a><h3>xmlSecTransformCtxCopyUserPref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxCopyUserPref (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> src</code></em>);</pre>
+<p>Copies user settings from <em class="parameter"><code>src</code></em>
+ context to <em class="parameter"><code>dst</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20094"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20096"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxCopyUserPref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20111"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCopyUserPref.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXSETURI"></a><h3>xmlSecTransformCtxSetUri ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxSetUri (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> hereNode</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformCtxSetUri"></a><h3>xmlSecTransformCtxSetUri ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxSetUri (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> hereNode</code></em>);</pre>
<p>Parses uri and adds xpointer transforms if required.</p>
<p>The following examples demonstrate what the URI attribute identifies and
how it is dereferenced
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-ReferenceProcessingModel</span></font>):</p>
-<p></p>
-<ul>
-<li><p>URI="http://example.com/bar.xml"
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-ReferenceProcessingModel</span></font>):</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>URI="http://example.com/bar.xml"
identifies the octets that represent the external resource
'http://example.com/bar.xml', that is probably an XML document given
its file extension.</p></li>
-<li><p>URI="http://example.com/bar.xml<font><span class="TYPE">chapter1</span></font>"
+<li class="listitem"><p>URI="http://example.com/bar.xml<font><span class="type">chapter1</span></font>"
identifies the element with ID attribute value 'chapter1' of the
external XML resource 'http://example.com/bar.xml', provided as an
octet stream. Again, for the sake of interoperability, the element
identified as 'chapter1' should be obtained using an XPath transform
rather than a URI fragment (barename XPointer resolution in external
resources is not REQUIRED in this specification).</p></li>
-<li><p>URI=""
+<li class="listitem"><p>URI=""
identifies the node-set (minus any comment nodes) of the XML resource
containing the signature</p></li>
-<li><p>URI="<font><span class="TYPE">chapter1</span></font>"
+<li class="listitem"><p>URI="<font><span class="type">chapter1</span></font>"
identifies a node-set containing the element with ID attribute value
'chapter1' of the XML resource containing the signature. XML Signature
(and its applications) modify this node-set to include the element plus
-all descendents including namespaces and attributes -- but not comments.</p></li>
-</ul>
-<div class="REFSECT3">
-<a name="AEN20147"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20149"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+all descendants including namespaces and attributes -- but not comments.</p></li>
+</ul></div>
+<div class="refsect3">
+<a name="xmlSecTransformCtxSetUri.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URI.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URI.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>hereNode</p></td>
-<td><p>the pointer to "here" node required by some
+<td class="parameter_name"><p>hereNode</p></td>
+<td class="parameter_description"><p>the pointer to "here" node required by some
XML transforms (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20170"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxSetUri.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXAPPEND"></a><h3>xmlSecTransformCtxAppend ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxAppend (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
-<p>Connects the <code class="PARAMETER">transform</code>
- to the end of the chain of transforms in the <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxAppend"></a><h3>xmlSecTransformCtxAppend ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxAppend (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
+<p>Connects the <em class="parameter"><code>transform</code></em>
+ to the end of the chain of transforms in the <em class="parameter"><code>ctx</code></em>
-(see <a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT"><span class="TYPE">xmlSecTransformConnect</span></a> function for details).</p>
-<div class="REFSECT3">
-<a name="AEN20191"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20193"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+(see <a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()"><span class="type">xmlSecTransformConnect</span></a> function for details).</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxAppend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to new transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to new transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20208"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxAppend.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXPREPEND"></a><h3>xmlSecTransformCtxPrepend ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxPrepend (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
-<p>Connects the <code class="PARAMETER">transform</code>
- to the beggining of the chain of transforms in the <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxPrepend"></a><h3>xmlSecTransformCtxPrepend ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxPrepend (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
+<p>Connects the <em class="parameter"><code>transform</code></em>
+ to the beggining of the chain of transforms in the <em class="parameter"><code>ctx</code></em>
-(see <a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT"><span class="TYPE">xmlSecTransformConnect</span></a> function for details).</p>
-<div class="REFSECT3">
-<a name="AEN20229"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20231"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+(see <a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()"><span class="type">xmlSecTransformConnect</span></a> function for details).</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxPrepend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to new transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to new transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20246"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxPrepend.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXCREATEANDAPPEND"></a><h3>xmlSecTransformCtxCreateAndAppend ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a>
-xmlSecTransformCtxCreateAndAppend (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> id</code>);</pre>
-<p>Creaeates new transform and connects it to the end of the chain of
-transforms in the <code class="PARAMETER">ctx</code>
- (see <a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT"><span class="TYPE">xmlSecTransformConnect</span></a> function for details).</p>
-<div class="REFSECT3">
-<a name="AEN20266"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20268"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformCtxCreateAndAppend"></a><h3>xmlSecTransformCtxCreateAndAppend ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+xmlSecTransformCtxCreateAndAppend (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> id</code></em>);</pre>
+<p>Creates new transform and connects it to the end of the chain of
+transforms in the <em class="parameter"><code>ctx</code></em>
+ (see <a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()"><span class="type">xmlSecTransformConnect</span></a> function for details).</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCreateAndAppend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the new transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the new transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20283"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCreateAndAppend.returns"></a><h4>Returns</h4>
<p> pointer to newly created transform or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXCREATEANDPREPEND"></a><h3>xmlSecTransformCtxCreateAndPrepend ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a>
-xmlSecTransformCtxCreateAndPrepend (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> id</code>);</pre>
-<p>Creaeates new transform and connects it to the end of the chain of
-transforms in the <code class="PARAMETER">ctx</code>
- (see <a href="xmlsec-transforms.html#XMLSECTRANSFORMCONNECT"><span class="TYPE">xmlSecTransformConnect</span></a> function for details).</p>
-<div class="REFSECT3">
-<a name="AEN20303"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20305"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformCtxCreateAndPrepend"></a><h3>xmlSecTransformCtxCreateAndPrepend ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+xmlSecTransformCtxCreateAndPrepend (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> id</code></em>);</pre>
+<p>Creates new transform and connects it to the end of the chain of
+transforms in the <em class="parameter"><code>ctx</code></em>
+ (see <a class="link" href="xmlsec-transforms.html#xmlSecTransformConnect" title="xmlSecTransformConnect ()"><span class="type">xmlSecTransformConnect</span></a> function for details).</p>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCreateAndPrepend.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the new transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the new transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20320"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxCreateAndPrepend.returns"></a><h4>Returns</h4>
<p> pointer to newly created transform or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXNODEREAD"></a><h3>xmlSecTransformCtxNodeRead ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a>
-xmlSecTransformCtxNodeRead (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> usage</code>);</pre>
-<p>Reads the transform from the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxNodeRead"></a><h3>xmlSecTransformCtxNodeRead ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+xmlSecTransformCtxNodeRead (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> usage</code></em>);</pre>
+<p>Reads the transform from the <em class="parameter"><code>node</code></em>
and appends it to the current chain
-of transforms in <code class="PARAMETER">ctx</code>
+of transforms in <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20342"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20344"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxNodeRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to transform's node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to transform's node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the transform's usage (signature, encryption, etc.).</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the transform's usage (signature, encryption, etc.).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20365"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxNodeRead.returns"></a><h4>Returns</h4>
<p> pointer to newly created transform or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXNODESLISTREAD"></a><h3>xmlSecTransformCtxNodesListRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxNodesListRead (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> usage</code>);</pre>
-<p>Reads transforms from the &lt;dsig:Transform/&gt; children of the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxNodesListRead"></a><h3>xmlSecTransformCtxNodesListRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxNodesListRead (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> usage</code></em>);</pre>
+<p>Reads transforms from the <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> children of the <em class="parameter"><code>node</code></em>
and
-appends them to the current transforms chain in <code class="PARAMETER">ctx</code>
+appends them to the current transforms chain in <em class="parameter"><code>ctx</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN20387"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20389"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxNodesListRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; nodes parent node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> nodes parent node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the transform's usage (signature, encryption, etc.).</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the transform's usage (signature, encryption, etc.).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20410"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxNodesListRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXPREPARE"></a><h3>xmlSecTransformCtxPrepare ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxPrepare (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="TYPE">xmlSecTransformDataType</span></a> inputDataType</code>);</pre>
-<p>Prepares the transform context for processing data of <code class="PARAMETER">inputDataType</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxPrepare"></a><h3>xmlSecTransformCtxPrepare ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxPrepare (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="type">xmlSecTransformDataType</span></a> inputDataType</code></em>);</pre>
+<p>Prepares the transform context for processing data of <em class="parameter"><code>inputDataType</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20428"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20430"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxPrepare.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>inputDataType</p></td>
-<td><p>the expected input type.</p></td>
-<td> </td>
+<td class="parameter_name"><p>inputDataType</p></td>
+<td class="parameter_description"><p>the expected input type.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20445"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxPrepare.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXBINARYEXECUTE"></a><h3>xmlSecTransformCtxBinaryExecute ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxBinaryExecute (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>);</pre>
-<p>Processes binary data using transforms chain in the <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxBinaryExecute"></a><h3>xmlSecTransformCtxBinaryExecute ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxBinaryExecute (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>);</pre>
+<p>Processes binary data using transforms chain in the <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20466"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20468"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxBinaryExecute.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the input binary data buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the input binary data buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the input data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the input data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20489"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxBinaryExecute.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXURIEXECUTE"></a><h3>xmlSecTransformCtxUriExecute ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxUriExecute (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Process binary data from the URI using transforms chain in <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxUriExecute"></a><h3>xmlSecTransformCtxUriExecute ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxUriExecute (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Process binary data from the URI using transforms chain in <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20507"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20509"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxUriExecute.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URI.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URI.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20524"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxUriExecute.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXXMLEXECUTE"></a><h3>xmlSecTransformCtxXmlExecute ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxXmlExecute (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nodes</code>);</pre>
-<p>Process <code class="PARAMETER">nodes</code>
- using transforms in the transforms chain in <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxXmlExecute"></a><h3>xmlSecTransformCtxXmlExecute ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxXmlExecute (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nodes</code></em>);</pre>
+<p>Process <em class="parameter"><code>nodes</code></em>
+ using transforms in the transforms chain in <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20543"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20545"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxXmlExecute.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the input node set.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the input node set.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20560"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxXmlExecute.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXEXECUTE"></a><h3>xmlSecTransformCtxExecute ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformCtxExecute (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>);</pre>
-<p>Executes transforms chain in <code class="PARAMETER">ctx</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxExecute"></a><h3>xmlSecTransformCtxExecute ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformCtxExecute (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>);</pre>
+<p>Executes transforms chain in <em class="parameter"><code>ctx</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20578"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20580"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxExecute.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to input document.</p></td>
-<td> </td>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to input document.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN20595"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCtxExecute.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXDEBUGDUMP"></a><h3>xmlSecTransformCtxDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformCtxDebugDump (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints transforms context debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxDebugDump"></a><h3>xmlSecTransformCtxDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints transforms context debug information to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20613"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20615"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTXDEBUGXMLDUMP"></a><h3>xmlSecTransformCtxDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> ctx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints transforms context debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformCtxDebugXmlDump"></a><h3>xmlSecTransformCtxDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> ctx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints transforms context debug information to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN20645"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20647"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>ctx</p></td>
-<td><p>the pointer to transforms chain processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ctx</p></td>
+<td class="parameter_description"><p>the pointer to transforms chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCREATE"></a><h3>xmlSecTransformCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a>
-xmlSecTransformCreate (<code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> id</code>);</pre>
-<p>Creates new transform of the <code class="PARAMETER">id</code>
+<div class="refsect2">
+<a name="xmlSecTransformCreate"></a><h3>xmlSecTransformCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+xmlSecTransformCreate (<em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> id</code></em>);</pre>
+<p>Creates new transform of the <em class="parameter"><code>id</code></em>
klass. The caller is responsible for
-destroying returned tansform using <a href="xmlsec-transforms.html#XMLSECTRANSFORMDESTROY"><span class="TYPE">xmlSecTransformDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN20676"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20678"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+destroying returned transform using <a class="link" href="xmlsec-transforms.html#xmlSecTransformDestroy" title="xmlSecTransformDestroy ()"><span class="type">xmlSecTransformDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>id</p></td>
-<td><p>the transform id to create.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the transform id to create.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN20687"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly created transform or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDESTROY"></a><h3>xmlSecTransformDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformDestroy (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
-<p>Destroys transform created with <a href="xmlsec-transforms.html#XMLSECTRANSFORMCREATE"><span class="TYPE">xmlSecTransformCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN20703"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20705"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecTransformDestroy"></a><h3>xmlSecTransformDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformDestroy (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
+<p>Destroys transform created with <a class="link" href="xmlsec-transforms.html#xmlSecTransformCreate" title="xmlSecTransformCreate ()"><span class="type">xmlSecTransformCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecTransformDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMNODEREAD"></a><h3>xmlSecTransformNodeRead ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="RETURNVALUE">xmlSecTransformPtr</span></a>
-xmlSecTransformNodeRead (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> usage</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Reads transform from the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTransformNodeRead"></a><h3>xmlSecTransformNodeRead ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="returnvalue">xmlSecTransformPtr</span></a>
+xmlSecTransformNodeRead (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> usage</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Reads transform from the <em class="parameter"><code>node</code></em>
as follows:</p>
<p> 1) reads "Algorithm" attribute;</p>
<p> 2) checks the lists of known and allowed transforms;</p>
<p> 3) calls transform's create method;</p>
<p> 4) calls transform's read transform node method.</p>
-<div class="REFSECT3">
-<a name="AEN20736"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20738"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformNodeRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to the transform's node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to the transform's node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the transform usage (signature, encryption, ...).</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the transform usage (signature, encryption, ...).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20759"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformNodeRead.returns"></a><h4>Returns</h4>
<p> pointer to newly created transform or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPUMP"></a><h3>xmlSecTransformPump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformPump (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> left</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> right</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Pops data from <code class="PARAMETER">left</code>
- transform and pushes to <code class="PARAMETER">right</code>
+<div class="refsect2">
+<a name="xmlSecTransformPump"></a><h3>xmlSecTransformPump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformPump (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> left</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> right</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Pops data from <em class="parameter"><code>left</code></em>
+ transform and pushes to <em class="parameter"><code>right</code></em>
transform until
no more data is available.</p>
-<div class="REFSECT3">
-<a name="AEN20781"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20783"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>left</p></td>
-<td><p>the source pumping transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>left</p></td>
+<td class="parameter_description"><p>the source pumping transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>right</p></td>
-<td><p>the destination pumping transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>right</p></td>
+<td class="parameter_description"><p>the destination pumping transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20804"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPump.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSETKEY"></a><h3>xmlSecTransformSetKey ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformSetKey (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSetKey"></a><h3>xmlSecTransformSetKey ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformSetKey (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
<p>Sets the transform's key.</p>
-<div class="REFSECT3">
-<a name="AEN20821"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20823"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformSetKey.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20838"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSetKey.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSETKEYREQ"></a><h3>xmlSecTransformSetKeyReq ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformSetKeyReq (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
-<p>Sets the key requirements for <code class="PARAMETER">transform</code>
- in the <code class="PARAMETER">keyReq</code>
+<div class="refsect2">
+<a name="xmlSecTransformSetKeyReq"></a><h3>xmlSecTransformSetKeyReq ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformSetKeyReq (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
+<p>Sets the key requirements for <em class="parameter"><code>transform</code></em>
+ in the <em class="parameter"><code>keyReq</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN20857"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20859"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyReq.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to keys requirements object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to keys requirements object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20874"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyReq.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVERIFY"></a><h3>xmlSecTransformVerify ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformVerify (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformVerify"></a><h3>xmlSecTransformVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformVerify (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Verifies the data with transform's processing results
(for digest, HMAC and signature transforms). The verification
-result is stored in the <font><span class="TYPE">status</span></font> member of <a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransform</span></a> object.</p>
-<div class="REFSECT3">
-<a name="AEN20901"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20903"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+result is stored in the <font><span class="type">status</span></font> member of <a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransform</span></a> object.</p>
+<div class="refsect3">
+<a name="xmlSecTransformVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the binary data for verification.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the binary data for verification.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20930"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformVerify.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVERIFYNODECONTENT"></a><h3>xmlSecTransformVerifyNodeContent ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformVerifyNodeContent (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Gets the <code class="PARAMETER">node</code>
- content, base64 decodes it and calls <a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFY"><span class="TYPE">xmlSecTransformVerify</span></a>
+<div class="refsect2">
+<a name="xmlSecTransformVerifyNodeContent"></a><h3>xmlSecTransformVerifyNodeContent ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformVerifyNodeContent (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Gets the <em class="parameter"><code>node</code></em>
+ content, base64 decodes it and calls <a class="link" href="xmlsec-transforms.html#xmlSecTransformVerify" title="xmlSecTransformVerify ()"><span class="type">xmlSecTransformVerify</span></a>
function to verify binary results.</p>
-<div class="REFSECT3">
-<a name="AEN20953"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN20955"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformVerifyNodeContent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN20976"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformVerifyNodeContent.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGETDATATYPE"></a><h3>xmlSecTransformGetDataType ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a>
-xmlSecTransformGetDataType (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMMODE"><span class="TYPE">xmlSecTransformMode</span></a> mode</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Gets transform input (<code class="PARAMETER">mode</code>
- is "push") or output (<code class="PARAMETER">mode</code>
+<div class="refsect2">
+<a name="xmlSecTransformGetDataType"></a><h3>xmlSecTransformGetDataType ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+xmlSecTransformGetDataType (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformMode" title="enum xmlSecTransformMode"><span class="type">xmlSecTransformMode</span></a> mode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Gets transform input (<em class="parameter"><code>mode</code></em>
+ is "push") or output (<em class="parameter"><code>mode</code></em>
is "pop") data
type (binary or XML).</p>
-<div class="REFSECT3">
-<a name="AEN20998"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21000"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformGetDataType.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mode</p></td>
-<td><p>the data mode (push or pop).</p></td>
-<td> </td>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>the data mode (push or pop).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21021"></a><h4>Returns</h4>
-<p> the transform's data type for the <code class="PARAMETER">mode</code>
+<div class="refsect3">
+<a name="xmlSecTransformGetDataType.returns"></a><h4>Returns</h4>
+<p> the transform's data type for the <em class="parameter"><code>mode</code></em>
operation.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPUSHBIN"></a><h3>xmlSecTransformPushBin ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformPushBin (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> final</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Process binary <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecTransformPushBin"></a><h3>xmlSecTransformPushBin ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformPushBin (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> final</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Process binary <em class="parameter"><code>data</code></em>
and pushes results to next transform.</p>
-<div class="REFSECT3">
-<a name="AEN21049"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21051"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPushBin.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the input binary data,</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the input binary data,</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the input data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the input data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>final</p></td>
-<td><p>the flag: if set to 1 then it's the last
+<td class="parameter_name"><p>final</p></td>
+<td class="parameter_description"><p>the flag: if set to 1 then it's the last
data chunk.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21084"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPushBin.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPOPBIN"></a><h3>xmlSecTransformPopBin ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformPopBin (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> maxDataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformPopBin"></a><h3>xmlSecTransformPopBin ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformPopBin (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> maxDataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Pops data from previous transform in the chain, processes data and
-returns result in the <code class="PARAMETER">data</code>
+returns result in the <em class="parameter"><code>data</code></em>
buffer. The size of returned data is
-placed in the <code class="PARAMETER">dataSize</code>
+placed in the <em class="parameter"><code>dataSize</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21112"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21114"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPopBin.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the buffer to store result data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the buffer to store result data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>maxDataSize</p></td>
-<td><p>the size of the buffer <font><span class="TYPE">data</span></font>.</p></td>
-<td> </td>
+<td class="parameter_name"><p>maxDataSize</p></td>
+<td class="parameter_description"><p>the size of the buffer <font><span class="type">data</span></font>.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the pointer to returned data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the pointer to returned data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21149"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPopBin.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPUSHXML"></a><h3>xmlSecTransformPushXml ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformPushXml (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Processes <code class="PARAMETER">nodes</code>
+<div class="refsect2">
+<a name="xmlSecTransformPushXml"></a><h3>xmlSecTransformPushXml ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformPushXml (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Processes <em class="parameter"><code>nodes</code></em>
and pushes result to the next transform in the chain.</p>
-<div class="REFSECT3">
-<a name="AEN21170"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21172"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPushXml.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the input nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the input nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21193"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPushXml.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPOPXML"></a><h3>xmlSecTransformPopXml ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformPopXml (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> *nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformPopXml"></a><h3>xmlSecTransformPopXml ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformPopXml (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> *nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Pops data from previous transform in the chain, processes the data and
-returns result in <code class="PARAMETER">nodes</code>
+returns result in <em class="parameter"><code>nodes</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21214"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21216"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPopXml.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the pointer to store popinter to result nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the pointer to store popinter to result nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21237"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPopXml.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXECUTE"></a><h3>xmlSecTransformExecute ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformExecute (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> last</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformExecute"></a><h3>xmlSecTransformExecute ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformExecute (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> last</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Executes transform (used by default popBin/pushBin/popXml/pushXml methods).</p>
-<div class="REFSECT3">
-<a name="AEN21257"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21259"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformExecute.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>last</p></td>
-<td><p>the flag: if set to 1 then it's the last data chunk.</p></td>
-<td> </td>
+<td class="parameter_name"><p>last</p></td>
+<td class="parameter_description"><p>the flag: if set to 1 then it's the last data chunk.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21280"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformExecute.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEBUGDUMP"></a><h3>xmlSecTransformDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformDebugDump (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints transform's debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformDebugDump"></a><h3>xmlSecTransformDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints transform's debug information to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21298"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21300"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEBUGXMLDUMP"></a><h3>xmlSecTransformDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints transform's debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformDebugXmlDump"></a><h3>xmlSecTransformDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints transform's debug information to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN21330"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21332"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGETNAME"></a><h3>xmlSecTransformGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformGetName(transform)</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGetName"></a><h3>xmlSecTransformGetName()</h3>
+<pre class="programlisting">#define xmlSecTransformGetName(transform)</pre>
<p>Macro. Returns transform name.</p>
-<div class="REFSECT3">
-<a name="AEN21353"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21355"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMISVALID"></a><h3>xmlSecTransformIsValid()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformIsValid(transform)</pre>
-<p>Macro. Returns 1 if the <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformIsValid"></a><h3>xmlSecTransformIsValid()</h3>
+<pre class="programlisting">#define xmlSecTransformIsValid(transform)</pre>
+<p>Macro. Returns 1 if the <em class="parameter"><code>transform</code></em>
is valid or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN21371"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21373"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIsValid.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCHECKID"></a><h3>xmlSecTransformCheckId()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformCheckId(transform, i)</pre>
-<p>Macro. Returns 1 if the <code class="PARAMETER">transform</code>
- is valid and has specified id <code class="PARAMETER">i</code>
+<div class="refsect2">
+<a name="xmlSecTransformCheckId"></a><h3>xmlSecTransformCheckId()</h3>
+<pre class="programlisting">#define xmlSecTransformCheckId(transform, i)</pre>
+<p>Macro. Returns 1 if the <em class="parameter"><code>transform</code></em>
+ is valid and has specified id <em class="parameter"><code>i</code></em>
or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN21390"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21392"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCheckId.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>i</p></td>
-<td><p>the transform id.</p></td>
-<td> </td>
+<td class="parameter_name"><p>i</p></td>
+<td class="parameter_description"><p>the transform id.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCHECKSIZE"></a><h3>xmlSecTransformCheckSize()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformCheckSize(transform, size)</pre>
-<p>Macro. Returns 1 if the <code class="PARAMETER">transform</code>
- is valid and has at least <code class="PARAMETER">size</code>
+<div class="refsect2">
+<a name="xmlSecTransformCheckSize"></a><h3>xmlSecTransformCheckSize()</h3>
+<pre class="programlisting">#define xmlSecTransformCheckSize(transform, size)</pre>
+<p>Macro. Returns 1 if the <em class="parameter"><code>transform</code></em>
+ is valid and has at least <em class="parameter"><code>size</code></em>
bytes or 0 otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN21415"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21417"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCheckSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the transform object size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the transform object size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCONNECT"></a><h3>xmlSecTransformConnect ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformConnect (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> left</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> right</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformConnect"></a><h3>xmlSecTransformConnect ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformConnect (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> left</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> right</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>If the data object is a node-set and the next transform requires octets,
the signature application MUST attempt to convert the node-set to an octet
stream using Canonical XML [XML-C14N].</p>
<p>The story is different if the right transform is base64 decode
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-Base-64</span></font>):</p>
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-Base-64</span></font>):</p>
<p>This transform requires an octet stream for input. If an XPath node-set
(or sufficiently functional alternative) is given as input, then it is
converted to an octet stream by performing operations logically equivalent
-to 1) applying an XPath transform with expression self::<font><code class="FUNCTION">text()</code></font>, then 2)
+to 1) applying an XPath transform with expression self::<font><code class="function">text()</code></font>, then 2)
taking the string-value of the node-set. Thus, if an XML element is
identified by a barename XPointer in the Reference URI, and its content
consists solely of base64 encoded character data, then this transform
automatically strips away the start and end tags of the identified element
and any of its descendant elements as well as any descendant comments and
processing instructions. The output of this transform is an octet stream.</p>
-<div class="REFSECT3">
-<a name="AEN21455"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21457"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformConnect.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>left</p></td>
-<td><p>the pointer to left (prev) transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>left</p></td>
+<td class="parameter_description"><p>the pointer to left (prev) transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>right</p></td>
-<td><p>the pointer to right (next) transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>right</p></td>
+<td class="parameter_description"><p>the pointer to right (next) transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN21478"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformConnect.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMREMOVE"></a><h3>xmlSecTransformRemove ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformRemove (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
-<p>Removes <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformRemove"></a><h3>xmlSecTransformRemove ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformRemove (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
+<p>Removes <em class="parameter"><code>transform</code></em>
from the chain.</p>
-<div class="REFSECT3">
-<a name="AEN21493"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21495"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformRemove.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to <a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransform</span></a> structure.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to <a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransform</span></a> structure.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEFAULTGETDATATYPE"></a><h3>xmlSecTransformDefaultGetDataType ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a>
-xmlSecTransformDefaultGetDataType (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMMODE"><span class="TYPE">xmlSecTransformMode</span></a> mode</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Gets transform input (<code class="PARAMETER">mode</code>
- is "push") or output (<code class="PARAMETER">mode</code>
+<div class="refsect2">
+<a name="xmlSecTransformDefaultGetDataType"></a><h3>xmlSecTransformDefaultGetDataType ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+xmlSecTransformDefaultGetDataType (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformMode" title="enum xmlSecTransformMode"><span class="type">xmlSecTransformMode</span></a> mode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Gets transform input (<em class="parameter"><code>mode</code></em>
+ is "push") or output (<em class="parameter"><code>mode</code></em>
is "pop") data
type (binary or XML) by analyzing available pushBin/popBin/pushXml/popXml
methods.</p>
-<div class="REFSECT3">
-<a name="AEN21525"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21527"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDefaultGetDataType.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mode</p></td>
-<td><p>the data mode (push or pop).</p></td>
-<td> </td>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>the data mode (push or pop).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the transform's chaing processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the transform's chain processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN21548"></a><h4>Returns</h4>
-<p> the transform's data type for the <code class="PARAMETER">mode</code>
+<div class="refsect3">
+<a name="xmlSecTransformDefaultGetDataType.returns"></a><h4>Returns</h4>
+<p> the transform's data type for the <em class="parameter"><code>mode</code></em>
operation.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEFAULTPUSHBIN"></a><h3>xmlSecTransformDefaultPushBin ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformDefaultPushBin (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> final</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Process binary <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecTransformDefaultPushBin"></a><h3>xmlSecTransformDefaultPushBin ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformDefaultPushBin (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> final</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Process binary <em class="parameter"><code>data</code></em>
by calling transform's execute method and pushes
results to next transform.</p>
-<div class="REFSECT3">
-<a name="AEN21576"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21578"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPushBin.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the input binary data,</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the input binary data,</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the input data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the input data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>final</p></td>
-<td><p>the flag: if set to 1 then it's the last
+<td class="parameter_name"><p>final</p></td>
+<td class="parameter_description"><p>the flag: if set to 1 then it's the last
data chunk.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN21611"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPushBin.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEFAULTPOPBIN"></a><h3>xmlSecTransformDefaultPopBin ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformDefaultPopBin (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> maxDataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDefaultPopBin"></a><h3>xmlSecTransformDefaultPopBin ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformDefaultPopBin (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> maxDataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Pops data from previous transform in the chain, processes data by calling
-transform's execute method and returns result in the <code class="PARAMETER">data</code>
+transform's execute method and returns result in the <em class="parameter"><code>data</code></em>
buffer. The
-size of returned data is placed in the <code class="PARAMETER">dataSize</code>
+size of returned data is placed in the <em class="parameter"><code>dataSize</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21639"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21641"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPopBin.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the buffer to store result data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the buffer to store result data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>maxDataSize</p></td>
-<td><p>the size of the buffer <font><span class="TYPE">data</span></font>.</p></td>
-<td> </td>
+<td class="parameter_name"><p>maxDataSize</p></td>
+<td class="parameter_description"><p>the size of the buffer <font><span class="type">data</span></font>.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the pointer to returned data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the pointer to returned data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21676"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPopBin.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEFAULTPUSHXML"></a><h3>xmlSecTransformDefaultPushXml ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformDefaultPushXml (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Processes <code class="PARAMETER">nodes</code>
+<div class="refsect2">
+<a name="xmlSecTransformDefaultPushXml"></a><h3>xmlSecTransformDefaultPushXml ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformDefaultPushXml (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Processes <em class="parameter"><code>nodes</code></em>
by calling transform's execute method and pushes
result to the next transform in the chain.</p>
-<div class="REFSECT3">
-<a name="AEN21697"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21699"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPushXml.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the input nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the input nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21720"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPushXml.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDEFAULTPOPXML"></a><h3>xmlSecTransformDefaultPopXml ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformDefaultPopXml (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> *nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDefaultPopXml"></a><h3>xmlSecTransformDefaultPopXml ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformDefaultPopXml (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> *nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Pops data from previous transform in the chain, processes the data
-by calling transform's execute method and returns result in <code class="PARAMETER">nodes</code>
+by calling transform's execute method and returns result in <em class="parameter"><code>nodes</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21741"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21743"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPopXml.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the pointer to store popinter to result nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the pointer to store popinter to result nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21764"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformDefaultPopXml.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCREATEOUTPUTBUFFER"></a><h3>xmlSecTransformCreateOutputBuffer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlOutputBufferPtr</span></font>
-xmlSecTransformCreateOutputBuffer (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Creates output buffer to write data to <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformCreateOutputBuffer"></a><h3>xmlSecTransformCreateOutputBuffer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlOutputBufferPtr</span></font>
+xmlSecTransformCreateOutputBuffer (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Creates output buffer to write data to <em class="parameter"><code>transform</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21782"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21784"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCreateOutputBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21799"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCreateOutputBuffer.returns"></a><h4>Returns</h4>
<p> pointer to new output buffer or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCREATEINPUTBUFFER"></a><h3>xmlSecTransformCreateInputBuffer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlParserInputBufferPtr</span></font>
-xmlSecTransformCreateInputBuffer (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>Creates input buffer to read data from <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformCreateInputBuffer"></a><h3>xmlSecTransformCreateInputBuffer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlParserInputBufferPtr</span></font>
+xmlSecTransformCreateInputBuffer (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>Creates input buffer to read data from <em class="parameter"><code>transform</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21817"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21819"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCreateInputBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21834"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformCreateInputBuffer.returns"></a><h4>Returns</h4>
<p> pointer to new input buffer or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINITIALIZEMETHOD"></a><h3>xmlSecTransformInitializeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformInitializeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInitializeMethod"></a><h3>xmlSecTransformInitializeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformInitializeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
<p>The transform specific initialization method.</p>
-<div class="REFSECT3">
-<a name="AEN21850"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21852"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformInitializeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN21861"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInitializeMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMFINALIZEMETHOD"></a><h3>xmlSecTransformFinalizeMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformFinalizeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformFinalizeMethod"></a><h3>xmlSecTransformFinalizeMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformFinalizeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>);</pre>
<p>The transform specific destroy method.</p>
-<div class="REFSECT3">
-<a name="AEN21877"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21879"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformFinalizeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMGETDATATYPEMETHOD"></a><h3>xmlSecTransformGetDataTypeMethod ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-transforms.html#XMLSECTRANSFORMDATATYPE"><span class="RETURNVALUE">xmlSecTransformDataType</span></a>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformGetDataTypeMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMMODE"><span class="TYPE">xmlSecTransformMode</span></a> mode</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformGetDataTypeMethod"></a><h3>xmlSecTransformGetDataTypeMethod ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-transforms.html#xmlSecTransformDataType" title="xmlSecTransformDataType"><span class="returnvalue">xmlSecTransformDataType</span></a>
+<span class="c_punctuation">(</span>*xmlSecTransformGetDataTypeMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformMode" title="enum xmlSecTransformMode"><span class="type">xmlSecTransformMode</span></a> mode</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The transform specific method to query information about transform
-data type in specified mode <code class="PARAMETER">mode</code>
+data type in specified mode <em class="parameter"><code>mode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21908"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21910"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformGetDataTypeMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mode</p></td>
-<td><p>the mode.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>the mode.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN21931"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformGetDataTypeMethod.returns"></a><h4>Returns</h4>
<p> transform data type.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMNODEREADMETHOD"></a><h3>xmlSecTransformNodeReadMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformNodeReadMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformNodeReadMethod"></a><h3>xmlSecTransformNodeReadMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformNodeReadMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The transform specific method to read the transform data from
-the <code class="PARAMETER">node</code>
+the <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN21954"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN21956"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformNodeReadMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN21977"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformNodeReadMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMNODEWRITEMETHOD"></a><h3>xmlSecTransformNodeWriteMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformNodeWriteMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>The transform specific method to write transform information to an XML node <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecTransformNodeWriteMethod"></a><h3>xmlSecTransformNodeWriteMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformNodeWriteMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>The transform specific method to write transform information to an XML node <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22000"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22002"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformNodeWriteMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;dsig:Transform/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22023"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformNodeWriteMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD"></a><h3>xmlSecTransformSetKeyRequirementsMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformSetKeyRequirementsMethod<span class="c_punctuation"><span class="PHRASE">)</span></span>
- (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEYREQ"><span class="TYPE">xmlSecKeyReqPtr</span></a> keyReq</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSetKeyRequirementsMethod"></a><h3>xmlSecTransformSetKeyRequirementsMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformSetKeyRequirementsMethod<span class="c_punctuation">)</span>
+ (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReqPtr</span></a> keyReq</code></em>);</pre>
<p>Transform specific method to set transform's key requirements.</p>
-<div class="REFSECT3">
-<a name="AEN22042"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22044"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyRequirementsMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keyReq</p></td>
-<td><p>the pointer to key requirements structure.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyReq</p></td>
+<td class="parameter_description"><p>the pointer to key requirements structure.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22059"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyRequirementsMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSETKEYMETHOD"></a><h3>xmlSecTransformSetKeyMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformSetKeyMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> key</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformSetKeyMethod"></a><h3>xmlSecTransformSetKeyMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformSetKeyMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>);</pre>
<p>The transform specific method to set the key for use.</p>
-<div class="REFSECT3">
-<a name="AEN22078"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22080"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>key</p></td>
-<td><p>the pointer to key.</p></td>
-<td> </td>
+<td class="parameter_name"><p>key</p></td>
+<td class="parameter_description"><p>the pointer to key.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22095"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformSetKeyMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVERIFYMETHOD"></a><h3>xmlSecTransformVerifyMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformVerifyMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformVerifyMethod"></a><h3>xmlSecTransformVerifyMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformVerifyMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The transform specific method to verify transform processing results
-(used by digest and signature transforms). This method sets <code class="PARAMETER">status</code>
+(used by digest and signature transforms). This method sets <em class="parameter"><code>status</code></em>
-member of the <a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransform</span></a> structure to either <a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUSOK"><span class="TYPE">xmlSecTransformStatusOk</span></a>
-if verification succeeded or <a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUSFAIL"><span class="TYPE">xmlSecTransformStatusFail</span></a> otherwise.</p>
-<div class="REFSECT3">
-<a name="AEN22127"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22129"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+member of the <a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransform</span></a> structure to either <a class="link" href="xmlsec-transforms.html#xmlSecTransformStatusOk"><span class="type">xmlSecTransformStatusOk</span></a>
+if verification succeeded or <a class="link" href="xmlsec-transforms.html#xmlSecTransformStatusFail"><span class="type">xmlSecTransformStatusFail</span></a> otherwise.</p>
+<div class="refsect3">
+<a name="xmlSecTransformVerifyMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the input buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the input buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the size of input buffer <code class="PARAMETER">data</code>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the size of input buffer <em class="parameter"><code>data</code></em>
.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22157"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformVerifyMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPUSHBINMETHOD"></a><h3>xmlSecTransformPushBinMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformPushBinMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> final</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>The transform specific method to process data from <code class="PARAMETER">data</code>
+<div class="refsect2">
+<a name="xmlSecTransformPushBinMethod"></a><h3>xmlSecTransformPushBinMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformPushBinMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> final</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>The transform specific method to process data from <em class="parameter"><code>data</code></em>
and push
result to the next transform in the chain.</p>
-<div class="REFSECT3">
-<a name="AEN22186"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22188"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPushBinMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the input binary data,</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the input binary data,</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the input data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the input data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>final</p></td>
-<td><p>the flag: if set to 1 then it's the last
+<td class="parameter_name"><p>final</p></td>
+<td class="parameter_description"><p>the flag: if set to 1 then it's the last
data chunk.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22221"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPushBinMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPOPBINMETHOD"></a><h3>xmlSecTransformPopBinMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformPopBinMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> maxDataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> *dataSize</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformPopBinMethod"></a><h3>xmlSecTransformPopBinMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformPopBinMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> maxDataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> *dataSize</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The transform specific method to pop data from previous transform
-in the chain and return result in the <code class="PARAMETER">data</code>
+in the chain and return result in the <em class="parameter"><code>data</code></em>
buffer. The size of returned
-data is placed in the <code class="PARAMETER">dataSize</code>
+data is placed in the <em class="parameter"><code>dataSize</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22251"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22253"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPopBinMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the buffer to store result data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the buffer to store result data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>maxDataSize</p></td>
-<td><p>the size of the buffer <code class="PARAMETER">data</code>
+<td class="parameter_name"><p>maxDataSize</p></td>
+<td class="parameter_description"><p>the size of the buffer <em class="parameter"><code>data</code></em>
.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the pointer to returned data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the pointer to returned data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN22287"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPopBinMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPUSHXMLMETHOD"></a><h3>xmlSecTransformPushXmlMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformPushXmlMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
-<p>The transform specific method to process <code class="PARAMETER">nodes</code>
+<div class="refsect2">
+<a name="xmlSecTransformPushXmlMethod"></a><h3>xmlSecTransformPushXmlMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformPushXmlMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
+<p>The transform specific method to process <em class="parameter"><code>nodes</code></em>
and push result to the next
transform in the chain.</p>
-<div class="REFSECT3">
-<a name="AEN22310"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22312"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPushXmlMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the input nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the input nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22333"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPushXmlMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMPOPXMLMETHOD"></a><h3>xmlSecTransformPopXmlMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformPopXmlMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> *nodes</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformPopXmlMethod"></a><h3>xmlSecTransformPopXmlMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformPopXmlMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> *nodes</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>The transform specific method to pop data from previous transform in the chain,
-process the data and return result in <code class="PARAMETER">nodes</code>
+process the data and return result in <em class="parameter"><code>nodes</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22356"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22358"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformPopXmlMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodes</p></td>
-<td><p>the pointer to store popinter to result nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodes</p></td>
+<td class="parameter_description"><p>the pointer to store popinter to result nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22379"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformPopXmlMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXECUTEMETHOD"></a><h3>xmlSecTransformExecuteMethod ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-<span class="c_punctuation"><span class="PHRASE">(</span></span>*xmlSecTransformExecuteMethod<span class="c_punctuation"><span class="PHRASE">)</span></span> (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> last</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtxPtr</span></a> transformCtx</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformExecuteMethod"></a><h3>xmlSecTransformExecuteMethod ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+<span class="c_punctuation">(</span>*xmlSecTransformExecuteMethod<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> last</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtxPtr</span></a> transformCtx</code></em>);</pre>
<p>Transform specific method to process a chunk of data.</p>
-<div class="REFSECT3">
-<a name="AEN22401"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22403"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformExecuteMethod.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to transform object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to transform object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>last</p></td>
-<td><p>the flag: if set to 1 then it's the last data chunk.</p></td>
-<td> </td>
+<td class="parameter_name"><p>last</p></td>
+<td class="parameter_description"><p>the flag: if set to 1 then it's the last data chunk.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformCtx</p></td>
-<td><p>the pointer to transform context object.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformCtx</p></td>
+<td class="parameter_description"><p>the pointer to transform context object.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22424"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformExecuteMethod.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKLASSGETNAME"></a><h3>xmlSecTransformKlassGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformKlassGetName(klass)</pre>
+<div class="refsect2">
+<a name="xmlSecTransformKlassGetName"></a><h3>xmlSecTransformKlassGetName()</h3>
+<pre class="programlisting">#define xmlSecTransformKlassGetName(klass)</pre>
<p>Macro. Returns transform klass name.</p>
-<div class="REFSECT3">
-<a name="AEN22433"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22435"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformKlassGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>klass</p></td>
-<td><p>the transofrm's klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>klass</p></td>
+<td class="parameter_description"><p>the transform's klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTGETKLASS"></a><h3>xmlSecTransformIdListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecTransformIdListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdListGetKlass"></a><h3>xmlSecTransformIdListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecTransformIdListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The transform id list klass.</p>
-<div class="REFSECT3">
-<a name="AEN22454"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdListGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to the transform id list klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTFIND"></a><h3>xmlSecTransformIdListFind ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformIdListFind (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Lookups <code class="PARAMETER">dataId</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdListFind"></a><h3>xmlSecTransformIdListFind ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformIdListFind (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Lookups <em class="parameter"><code>dataId</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22473"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22475"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdListFind.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to transform ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to transform ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22490"></a><h4>Returns</h4>
-<p> 1 if <code class="PARAMETER">dataId</code>
-is found in the <code class="PARAMETER">list</code>
+<div class="refsect3">
+<a name="xmlSecTransformIdListFind.returns"></a><h4>Returns</h4>
+<p> 1 if <em class="parameter"><code>dataId</code></em>
+is found in the <em class="parameter"><code>list</code></em>
, 0 if not and a negative
value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTFINDBYHREF"></a><h3>xmlSecTransformIdListFindByHref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformIdListFindByHref (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *href</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> usage</code>);</pre>
-<p>Lookups data klass in the list with given <code class="PARAMETER">href</code>
- and <code class="PARAMETER">usage</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdListFindByHref"></a><h3>xmlSecTransformIdListFindByHref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformIdListFindByHref (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *href</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> usage</code></em>);</pre>
+<p>Lookups data klass in the list with given <em class="parameter"><code>href</code></em>
+ and <em class="parameter"><code>usage</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22515"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22517"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdListFindByHref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to transform ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to transform ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>href</p></td>
-<td><p>the desired transform klass href.</p></td>
-<td> </td>
+<td class="parameter_name"><p>href</p></td>
+<td class="parameter_description"><p>the desired transform klass href.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the desired transform usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the desired transform usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22538"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdListFindByHref.returns"></a><h4>Returns</h4>
<p> transform klass is found and NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTFINDBYNAME"></a><h3>xmlSecTransformIdListFindByName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformIdListFindByName (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> usage</code>);</pre>
-<p>Lookups data klass in the list with given <code class="PARAMETER">name</code>
- and <code class="PARAMETER">usage</code>
- in <code class="PARAMETER">list</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdListFindByName"></a><h3>xmlSecTransformIdListFindByName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformIdListFindByName (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> usage</code></em>);</pre>
+<p>Lookups data klass in the list with given <em class="parameter"><code>name</code></em>
+ and <em class="parameter"><code>usage</code></em>
+ in <em class="parameter"><code>list</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22561"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22563"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdListFindByName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to transform ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to transform ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the desired transform klass name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the desired transform klass name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>usage</p></td>
-<td><p>the desired transform usage.</p></td>
-<td> </td>
+<td class="parameter_name"><p>usage</p></td>
+<td class="parameter_description"><p>the desired transform usage.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22584"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformIdListFindByName.returns"></a><h4>Returns</h4>
<p> transform klass is found and NULL otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTDEBUGDUMP"></a><h3>xmlSecTransformIdListDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformIdListDebugDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary transform debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdListDebugDump"></a><h3>xmlSecTransformIdListDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformIdListDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary transform debug information to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22602"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22604"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdListDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to transform ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to transform ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTDEBUGXMLDUMP"></a><h3>xmlSecTransformIdListDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformIdListDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> list</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints binary transform debug information to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecTransformIdListDebugXmlDump"></a><h3>xmlSecTransformIdListDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformIdListDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> list</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints binary transform debug information to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN22634"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22636"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformIdListDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>list</p></td>
-<td><p>the pointer to transform ids list.</p></td>
-<td> </td>
+<td class="parameter_name"><p>list</p></td>
+<td class="parameter_description"><p>the pointer to transform ids list.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDUNKNOWN"></a><h3>xmlSecTransformIdUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformIdUnknown ((xmlSecTransformId)NULL)</pre>
-<p>The "unknown" transform id (NULL).</p>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMBASE64GETKLASS"></a><h3>xmlSecTransformBase64GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformBase64GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The Base64 transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-Base-64</span></font>).
+<div class="refsect2">
+<a name="xmlSecTransformBase64GetKlass"></a><h3>xmlSecTransformBase64GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformBase64GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The Base64 transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-Base-64</span></font>).
The normative specification for base64 decoding transforms is RFC 2045
(http://www.ietf.org/rfc/rfc2045.txt). The base64 Transform element has
no content. The input is decoded by the algorithms. This transform is
useful if an application needs to sign the raw data associated with
the encoded content of an element.</p>
-<div class="REFSECT3">
-<a name="AEN22669"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformBase64GetKlass.returns"></a><h4>Returns</h4>
<p> base64 transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMBASE64SETLINESIZE"></a><h3>xmlSecTransformBase64SetLineSize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecTransformBase64SetLineSize (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> lineSize</code>);</pre>
-<p>Sets the max line size to <code class="PARAMETER">lineSize</code>
+<div class="refsect2">
+<a name="xmlSecTransformBase64SetLineSize"></a><h3>xmlSecTransformBase64SetLineSize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecTransformBase64SetLineSize (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> lineSize</code></em>);</pre>
+<p>Sets the max line size to <em class="parameter"><code>lineSize</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22687"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22689"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformBase64SetLineSize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to BASE64 encode transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to BASE64 encode transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>lineSize</p></td>
-<td><p>the new max line size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>lineSize</p></td>
+<td class="parameter_description"><p>the new max line size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14NGETKLASS"></a><h3>xmlSecTransformInclC14NGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformInclC14NGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14NGetKlass"></a><h3>xmlSecTransformInclC14NGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformInclC14NGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Inclusive (regular) canonicalization that omits comments transform klass
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-c14nAlg</span></font> and
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-c14nAlg</span></font> and
http://www.w3.org/TR/2001/REC-xml-c14n-20010315).</p>
-<div class="REFSECT3">
-<a name="AEN22716"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInclC14NGetKlass.returns"></a><h4>Returns</h4>
<p> c14n transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14NWITHCOMMENTSGETKLASS"></a><h3>xmlSecTransformInclC14NWithCommentsGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14NWithCommentsGetKlass"></a><h3>xmlSecTransformInclC14NWithCommentsGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformInclC14NWithCommentsGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Inclusive (regular) canonicalization that includes comments transform klass
-(http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-c14nAlg</span></font> and
+(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-c14nAlg</span></font> and
http://www.w3.org/TR/2001/REC-xml-c14n-20010315).</p>
-<div class="REFSECT3">
-<a name="AEN22731"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInclC14NWithCommentsGetKlass.returns"></a><h4>Returns</h4>
<p> c14n with comments transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14N11GETKLASS"></a><h3>xmlSecTransformInclC14N11GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformInclC14N11GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14N11GetKlass"></a><h3>xmlSecTransformInclC14N11GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformInclC14N11GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>C14N version 1.1 (http://www.w3.org/TR/xml-c14n11)</p>
-<div class="REFSECT3">
-<a name="AEN22744"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInclC14N11GetKlass.returns"></a><h4>Returns</h4>
<p> c14n v1.1 transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14N11WITHCOMMENTSGETKLASS"></a><h3>xmlSecTransformInclC14N11WithCommentsGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14N11WithCommentsGetKlass"></a><h3>xmlSecTransformInclC14N11WithCommentsGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformInclC14N11WithCommentsGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>C14N version 1.1 (http://www.w3.org/TR/xml-c14n11) with comments</p>
-<div class="REFSECT3">
-<a name="AEN22757"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformInclC14N11WithCommentsGetKlass.returns"></a><h4>Returns</h4>
<p> c14n v1.1 with comments transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXCLC14NGETKLASS"></a><h3>xmlSecTransformExclC14NGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformExclC14NGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>Exclusive canoncicalization that ommits comments transform klass
+<div class="refsect2">
+<a name="xmlSecTransformExclC14NGetKlass"></a><h3>xmlSecTransformExclC14NGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformExclC14NGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Exclusive canoncicalization that omits comments transform klass
(http://www.w3.org/TR/xml-exc-c14n/).</p>
-<div class="REFSECT3">
-<a name="AEN22770"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformExclC14NGetKlass.returns"></a><h4>Returns</h4>
<p> exclusive c14n transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXCLC14NWITHCOMMENTSGETKLASS"></a><h3>xmlSecTransformExclC14NWithCommentsGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformExclC14NWithCommentsGetKlass"></a><h3>xmlSecTransformExclC14NWithCommentsGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformExclC14NWithCommentsGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Exclusive canoncicalization that includes comments transform klass
(http://www.w3.org/TR/xml-exc-c14n/).</p>
-<div class="REFSECT3">
-<a name="AEN22783"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformExclC14NWithCommentsGetKlass.returns"></a><h4>Returns</h4>
<p> exclusive c14n with comments transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMENVELOPEDGETKLASS"></a><h3>xmlSecTransformEnvelopedGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformEnvelopedGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The enveloped transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-EnvelopedSignature</span></font>):</p>
+<div class="refsect2">
+<a name="xmlSecTransformEnvelopedGetKlass"></a><h3>xmlSecTransformEnvelopedGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformEnvelopedGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The enveloped transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-EnvelopedSignature</span></font>):</p>
<p>An enveloped signature transform T removes the whole Signature element
containing T from the digest calculation of the Reference element
containing T. The entire string of characters used by an XML processor
@@ -3865,113 +3856,116 @@ to match the Signature with the XML production element is removed.
The output of the transform is equivalent to the output that would
result from replacing T with an XPath transform containing the following
XPath parameter element:</p>
-<p> &lt;XPath xmlns:dsig="..."&gt;
+<span style="color: red">&lt;XPath&gt;
count(ancestor-or-self::dsig:Signature |
- <font><code class="FUNCTION">here()</code></font>/ancestor::dsig:Signature[1]) &gt;
+ <font><code class="function">here()</code></font>/ancestor::dsig:Signature[1]) &gt;
count(ancestor-or-self::dsig:Signature)
- &lt;/XPath&gt;</p>
-<p>The input and output requirements of this transform are identical to
+ &lt;/XPath&gt;</span><p>The input and output requirements of this transform are identical to
those of the XPath transform, but may only be applied to a node-set from
its parent XML document. Note that it is not necessary to use an XPath
expression evaluator to create this transform. However, this transform
MUST produce output in exactly the same manner as the XPath transform
parameterized by the XPath expression above.</p>
-<div class="REFSECT3">
-<a name="AEN22803"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformEnvelopedGetKlass.returns"></a><h4>Returns</h4>
<p> enveloped transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPATHGETKLASS"></a><h3>xmlSecTransformXPathGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformXPathGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPathGetKlass"></a><h3>xmlSecTransformXPathGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformXPathGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The XPath transform evaluates given XPath expression and
intersects the result with the previous nodes set. See
-http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-XPath</span></font> for more details.</p>
-<div class="REFSECT3">
-<a name="AEN22818"></a><h4>Returns</h4>
+http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-XPath</span></font> for more details.</p>
+<div class="refsect3">
+<a name="xmlSecTransformXPathGetKlass.returns"></a><h4>Returns</h4>
<p> XPath transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPATH2GETKLASS"></a><h3>xmlSecTransformXPath2GetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformXPath2GetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPath2GetKlass"></a><h3>xmlSecTransformXPath2GetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformXPath2GetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The XPath2 transform (http://www.w3.org/TR/xmldsig-filter2/).</p>
-<div class="REFSECT3">
-<a name="AEN22831"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformXPath2GetKlass.returns"></a><h4>Returns</h4>
<p> XPath2 transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPOINTERGETKLASS"></a><h3>xmlSecTransformXPointerGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformXPointerGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPointerGetKlass"></a><h3>xmlSecTransformXPointerGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformXPointerGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The XPointer transform klass
(http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt).</p>
-<div class="REFSECT3">
-<a name="AEN22844"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformXPointerGetKlass.returns"></a><h4>Returns</h4>
<p> XPointer transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPOINTERSETEXPR"></a><h3>xmlSecTransformXPointerSetExpr ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformXPointerSetExpr (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *expr</code>,
- <code class="PARAMETER"><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE"><span class="TYPE">xmlSecNodeSetType</span></a> nodeSetType</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> hereNode</code>);</pre>
-<p>Sets the XPointer expression for an XPointer <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformXPointerSetExpr"></a><h3>xmlSecTransformXPointerSetExpr ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformXPointerSetExpr (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *expr</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSetType" title="enum xmlSecNodeSetType"><span class="type">xmlSecNodeSetType</span></a> nodeSetType</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> hereNode</code></em>);</pre>
+<p>Sets the XPointer expression for an XPointer <em class="parameter"><code>transform</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22868"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22870"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformXPointerSetExpr.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to XPointer transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to XPointer transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>expr</p></td>
-<td><p>the XPointer expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>expr</p></td>
+<td class="parameter_description"><p>the XPointer expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeSetType</p></td>
-<td><p>the type of evaluated XPointer expression.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeSetType</p></td>
+<td class="parameter_description"><p>the type of evaluated XPointer expression.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>hereNode</p></td>
-<td><p>the pointer to "here" node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>hereNode</p></td>
+<td class="parameter_description"><p>the pointer to "here" node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN22897"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformXPointerSetExpr.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXSLTGETKLASS"></a><h3>xmlSecTransformXsltGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformXsltGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>XSLT transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-XSLT</span></font>):</p>
+<div class="refsect2">
+<a name="xmlSecTransformRelationshipGetKlass"></a><h3>xmlSecTransformRelationshipGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformRelationshipGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformXsltGetKlass"></a><h3>xmlSecTransformXsltGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformXsltGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>XSLT transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-XSLT</span></font>):</p>
<p>The normative specification for XSL Transformations is [XSLT].
Specification of a namespace-qualified stylesheet element, which MUST be
the sole child of the Transform element, indicates that the specified style
@@ -3994,377 +3988,388 @@ after the XSLT transform to canonicalize the output. These steps will help
to ensure interoperability of the resulting signatures among applications
that support the XSLT transform. Note that if the output is actually HTML,
then the result of these steps is logically equivalent [XHTML].</p>
-<div class="REFSECT3">
-<a name="AEN22915"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformXsltGetKlass.returns"></a><h4>Returns</h4>
<p> pointer to XSLT transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXSLTSETDEFAULTSECURITYPREFS"></a><h3>xmlSecTransformXsltSetDefaultSecurityPrefs ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformXsltSetDefaultSecurityPrefs"></a><h3>xmlSecTransformXsltSetDefaultSecurityPrefs ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecTransformXsltSetDefaultSecurityPrefs
- (<code class="PARAMETER"><font><span class="TYPE">xsltSecurityPrefsPtr</span></font> sec</code>);</pre>
+ (<em class="parameter"><code><font><span class="type">xsltSecurityPrefsPtr</span></font> sec</code></em>);</pre>
<p>Sets the new default security preferences. The xmlsec default security policy is
to disable everything.</p>
-<div class="REFSECT3">
-<a name="AEN22929"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22931"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformXsltSetDefaultSecurityPrefs.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>sec</p></td>
-<td><p>the new security preferences</p></td>
-<td> </td>
+<td class="parameter_name"><p>sec</p></td>
+<td class="parameter_description"><p>the new security preferences</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMREMOVEXMLTAGSC14NGETKLASS"></a><h3>xmlSecTransformRemoveXmlTagsC14NGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
+<div class="refsect2">
+<a name="xmlSecTransformRemoveXmlTagsC14NGetKlass"></a><h3>xmlSecTransformRemoveXmlTagsC14NGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
xmlSecTransformRemoveXmlTagsC14NGetKlass
- (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The "remove xml tags" transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-Base-64</span></font>):
+ (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The "remove xml tags" transform klass (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-Base-64</span></font>):
Base64 transform requires an octet stream for input. If an XPath node-set
(or sufficiently functional alternative) is given as input, then it is
converted to an octet stream by performing operations logically equivalent
-to 1) applying an XPath transform with expression self::<font><code class="FUNCTION">text()</code></font>, then 2)
+to 1) applying an XPath transform with expression self::<font><code class="function">text()</code></font>, then 2)
taking the string-value of the node-set. Thus, if an XML element is
identified by a barename XPointer in the Reference URI, and its content
consists solely of base64 encoded character data, then this transform
automatically strips away the start and end tags of the identified element
and any of its descendant elements as well as any descendant comments and
processing instructions. The output of this transform is an octet stream.</p>
-<div class="REFSECT3">
-<a name="AEN22954"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformRemoveXmlTagsC14NGetKlass.returns"></a><h4>Returns</h4>
<p> "remove xml tags" transform id.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVISA3DHACKGETKLASS"></a><h3>xmlSecTransformVisa3DHackGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecTransformId</span></font>
-xmlSecTransformVisa3DHackGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecTransformVisa3DHackGetKlass"></a><h3>xmlSecTransformVisa3DHackGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecTransformId</span></font>
+xmlSecTransformVisa3DHackGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The Visa3DHack transform klass. The only reason why we need this
is Visa3D protocol. It doesn't follow XML/XPointer/XMLDSig specs and allows
invalid XPointer expressions in the URI attribute. Since we couldn't evaluate
such expressions thru XPath/XPointer engine, we need to have this hack here.</p>
-<div class="REFSECT3">
-<a name="AEN22967"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformVisa3DHackGetKlass.returns"></a><h4>Returns</h4>
<p> Visa3DHack transform klass.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVISA3DHACKSETID"></a><h3>xmlSecTransformVisa3DHackSetID ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecTransformVisa3DHackSetID (<code class="PARAMETER"><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> transform</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *id</code>);</pre>
-<p>Sets the ID value for an Visa3DHack <code class="PARAMETER">transform</code>
+<div class="refsect2">
+<a name="xmlSecTransformVisa3DHackSetID"></a><h3>xmlSecTransformVisa3DHackSetID ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecTransformVisa3DHackSetID (<em class="parameter"><code><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> transform</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *id</code></em>);</pre>
+<p>Sets the ID value for an Visa3DHack <em class="parameter"><code>transform</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN22985"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN22987"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformVisa3DHackSetID.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>transform</p></td>
-<td><p>the pointer to Visa3DHack transform.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transform</p></td>
+<td class="parameter_description"><p>the pointer to Visa3DHack transform.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>id</p></td>
-<td><p>the ID value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>id</p></td>
+<td class="parameter_description"><p>the ID value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN23002"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecTransformVisa3DHackSetID.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-TRANSFORMS.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-transforms.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
<a name="XMLSEC-TRANSFORM-BINARY-CHUNK:CAPS"></a><h3>XMLSEC_TRANSFORM_BINARY_CHUNK</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_TRANSFORM_BINARY_CHUNK 1024</pre>
+<pre class="programlisting">#define XMLSEC_TRANSFORM_BINARY_CHUNK 1024
+</pre>
<p>The binary data chunks size. XMLSec processes binary data one chunk
at a time. Changing this impacts xmlsec memory usage and performance.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMSTATUS"></a><h3>enum xmlSecTransformStatus</h3>
+<div class="refsect2">
+<a name="xmlSecTransformStatus"></a><h3>enum xmlSecTransformStatus</h3>
<p>The transform execution status.</p>
-<div class="REFSECT3">
-<a name="AEN23018"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23020"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformStatus.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecTransformStatusNone</p></td>
-<td><p>the status unknown.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformStatusNone"></a>xmlSecTransformStatusNone</p></td>
+<td class="enum_member_description"><p>the status unknown.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformStatusWorking</p></td>
-<td><p>the transform is executed.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformStatusWorking"></a>xmlSecTransformStatusWorking</p></td>
+<td class="enum_member_description"><p>the transform is executed.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformStatusFinished</p></td>
-<td><p>the transform finished</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformStatusFinished"></a>xmlSecTransformStatusFinished</p></td>
+<td class="enum_member_description"><p>the transform finished</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformStatusOk</p></td>
-<td><p>the transform succeeded.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformStatusOk"></a>xmlSecTransformStatusOk</p></td>
+<td class="enum_member_description"><p>the transform succeeded.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformStatusFail</p></td>
-<td><p>the transform failed (an error occur).</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformStatusFail"></a>xmlSecTransformStatusFail</p></td>
+<td class="enum_member_description"><p>the transform failed (an error occur).</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMMODE"></a><h3>enum xmlSecTransformMode</h3>
+<div class="refsect2">
+<a name="xmlSecTransformMode"></a><h3>enum xmlSecTransformMode</h3>
<p>The transform operation mode</p>
-<div class="REFSECT3">
-<a name="AEN23058"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23060"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecTransformModeNone</p></td>
-<td><p>the mode is unknown.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformModeNone"></a>xmlSecTransformModeNone</p></td>
+<td class="enum_member_description"><p>the mode is unknown.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformModePush</p></td>
-<td><p>pushing data thru transform.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformModePush"></a>xmlSecTransformModePush</p></td>
+<td class="enum_member_description"><p>pushing data thru transform.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformModePop</p></td>
-<td><p>popping data from transform.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformModePop"></a>xmlSecTransformModePop</p></td>
+<td class="enum_member_description"><p>popping data from transform.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMOPERATION"></a><h3>enum xmlSecTransformOperation</h3>
+<div class="refsect2">
+<a name="xmlSecTransformOperation"></a><h3>enum xmlSecTransformOperation</h3>
<p>The transform operation.</p>
-<div class="REFSECT3">
-<a name="AEN23086"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23088"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformOperation.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecTransformOperationNone</p></td>
-<td><p>the operation is unknown.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationNone"></a>xmlSecTransformOperationNone</p></td>
+<td class="enum_member_description"><p>the operation is unknown.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationEncode</p></td>
-<td><p>the encode operation (for base64 transform).</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationEncode"></a>xmlSecTransformOperationEncode</p></td>
+<td class="enum_member_description"><p>the encode operation (for base64 transform).</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationDecode</p></td>
-<td><p>the decode operation (for base64 transform).</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationDecode"></a>xmlSecTransformOperationDecode</p></td>
+<td class="enum_member_description"><p>the decode operation (for base64 transform).</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationSign</p></td>
-<td><p>the sign or digest operation.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationSign"></a>xmlSecTransformOperationSign</p></td>
+<td class="enum_member_description"><p>the sign or digest operation.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationVerify</p></td>
-<td><p>the verification of signature or digest operation.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationVerify"></a>xmlSecTransformOperationVerify</p></td>
+<td class="enum_member_description"><p>the verification of signature or digest operation.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationEncrypt</p></td>
-<td><p>the encryption operation.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationEncrypt"></a>xmlSecTransformOperationEncrypt</p></td>
+<td class="enum_member_description"><p>the encryption operation.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecTransformOperationDecrypt</p></td>
-<td><p>the decryption operation.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecTransformOperationDecrypt"></a>xmlSecTransformOperationDecrypt</p></td>
+<td class="enum_member_description"><p>the decryption operation.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPE"></a><h3>xmlSecTransformUriType</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecTransformUriType;</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriType"></a><h3>xmlSecTransformUriType</h3>
+<pre class="programlisting">typedef unsigned int xmlSecTransformUriType;
+</pre>
<p>URI transform type bit mask.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPENONE"></a><h3>xmlSecTransformUriTypeNone</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeNone 0x0000</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeNone"></a><h3>xmlSecTransformUriTypeNone</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeNone 0x0000
+</pre>
<p>The URI type is unknown or not set.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPEEMPTY"></a><h3>xmlSecTransformUriTypeEmpty</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeEmpty 0x0001</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeEmpty"></a><h3>xmlSecTransformUriTypeEmpty</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeEmpty 0x0001
+</pre>
<p>The empty URI ("") type.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPESAMEDOCUMENT"></a><h3>xmlSecTransformUriTypeSameDocument</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeSameDocument 0x0002</pre>
-<p>The smae document ("#...") but not empty ("") URI type.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeSameDocument"></a><h3>xmlSecTransformUriTypeSameDocument</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeSameDocument 0x0002
+</pre>
+<p>The same document ("#...") but not empty ("") URI type.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPELOCAL"></a><h3>xmlSecTransformUriTypeLocal</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeLocal 0x0004</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeLocal"></a><h3>xmlSecTransformUriTypeLocal</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeLocal 0x0004
+</pre>
<p>The local URI ("file:///....") type.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPEREMOTE"></a><h3>xmlSecTransformUriTypeRemote</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeRemote 0x0008</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeRemote"></a><h3>xmlSecTransformUriTypeRemote</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeRemote 0x0008
+</pre>
<p>The remote URI type.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMURITYPEANY"></a><h3>xmlSecTransformUriTypeAny</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUriTypeAny 0xFFFF</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUriTypeAny"></a><h3>xmlSecTransformUriTypeAny</h3>
+<pre class="programlisting">#define xmlSecTransformUriTypeAny 0xFFFF
+</pre>
<p>Any URI type.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDATATYPE"></a><h3>xmlSecTransformDataType</h3>
-<pre class="PROGRAMLISTING">typedef xmlSecByte xmlSecTransformDataType;</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDataType"></a><h3>xmlSecTransformDataType</h3>
+<pre class="programlisting">typedef xmlSecByte xmlSecTransformDataType;
+</pre>
<p>Transform data type bit mask.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDATATYPEUNKNOWN"></a><h3>xmlSecTransformDataTypeUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDataTypeUnknown 0x0000</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDataTypeUnknown"></a><h3>xmlSecTransformDataTypeUnknown</h3>
+<pre class="programlisting">#define xmlSecTransformDataTypeUnknown 0x0000
+</pre>
<p>The transform data type is unknown or nor data expected.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDATATYPEBIN"></a><h3>xmlSecTransformDataTypeBin</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDataTypeBin 0x0001</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDataTypeBin"></a><h3>xmlSecTransformDataTypeBin</h3>
+<pre class="programlisting">#define xmlSecTransformDataTypeBin 0x0001
+</pre>
<p>The binary transform data.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMDATATYPEXML"></a><h3>xmlSecTransformDataTypeXml</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformDataTypeXml 0x0002</pre>
+<div class="refsect2">
+<a name="xmlSecTransformDataTypeXml"></a><h3>xmlSecTransformDataTypeXml</h3>
+<pre class="programlisting">#define xmlSecTransformDataTypeXml 0x0002
+</pre>
<p>The xml transform data.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGE"></a><h3>xmlSecTransformUsage</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecTransformUsage;</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUsage"></a><h3>xmlSecTransformUsage</h3>
+<pre class="programlisting">typedef unsigned int xmlSecTransformUsage;
+</pre>
<p>The transform usage bit mask.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEUNKNOWN"></a><h3>xmlSecTransformUsageUnknown</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageUnknown 0x0000</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUsageUnknown"></a><h3>xmlSecTransformUsageUnknown</h3>
+<pre class="programlisting">#define xmlSecTransformUsageUnknown 0x0000
+</pre>
<p>Transforms usage is unknown or undefined.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEDSIGTRANSFORM"></a><h3>xmlSecTransformUsageDSigTransform</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageDSigTransform 0x0001</pre>
-<p>Transform could be used in &lt;dsig:Transform&gt;.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUsageDSigTransform"></a><h3>xmlSecTransformUsageDSigTransform</h3>
+<pre class="programlisting">#define xmlSecTransformUsageDSigTransform 0x0001
+</pre>
+<p>Transform could be used in <a class="ulink" href="" target="_top">&lt;dsig:Transform/&gt;</a>.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEC14NMETHOD"></a><h3>xmlSecTransformUsageC14NMethod</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageC14NMethod 0x0002</pre>
-<p>Transform could be used in &lt;dsig:CanonicalizationMethod&gt;.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUsageC14NMethod"></a><h3>xmlSecTransformUsageC14NMethod</h3>
+<pre class="programlisting">#define xmlSecTransformUsageC14NMethod 0x0002
+</pre>
+<p>Transform could be used in <a class="ulink" href="" target="_top">&lt;dsig:CanonicalizationMethod/&gt;</a>.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEDIGESTMETHOD"></a><h3>xmlSecTransformUsageDigestMethod</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageDigestMethod 0x0004</pre>
-<p>Transform could be used in &lt;dsig:DigestMethod&gt;.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUsageDigestMethod"></a><h3>xmlSecTransformUsageDigestMethod</h3>
+<pre class="programlisting">#define xmlSecTransformUsageDigestMethod 0x0004
+</pre>
+<p>Transform could be used in <a class="ulink" href="" target="_top">&lt;dsig:DigestMethod/&gt;</a>.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGESIGNATUREMETHOD"></a><h3>xmlSecTransformUsageSignatureMethod</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageSignatureMethod 0x0008</pre>
-<p>Transform could be used in &lt;dsig:SignatureMethod&gt;.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUsageSignatureMethod"></a><h3>xmlSecTransformUsageSignatureMethod</h3>
+<pre class="programlisting">#define xmlSecTransformUsageSignatureMethod 0x0008
+</pre>
+<p>Transform could be used in <a class="ulink" href="" target="_top">&lt;dsig:SignatureMethod/&gt;</a>.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEENCRYPTIONMETHOD"></a><h3>xmlSecTransformUsageEncryptionMethod</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageEncryptionMethod 0x0010</pre>
-<p>Transform could be used in &lt;enc:EncryptionMethod&gt;.</p>
+<div class="refsect2">
+<a name="xmlSecTransformUsageEncryptionMethod"></a><h3>xmlSecTransformUsageEncryptionMethod</h3>
+<pre class="programlisting">#define xmlSecTransformUsageEncryptionMethod 0x0010
+</pre>
+<p>Transform could be used in <a class="ulink" href="" target="_top">&lt;enc:EncryptionMethod/&gt;</a>.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMUSAGEANY"></a><h3>xmlSecTransformUsageAny</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformUsageAny 0xFFFF</pre>
+<div class="refsect2">
+<a name="xmlSecTransformUsageAny"></a><h3>xmlSecTransformUsageAny</h3>
+<pre class="programlisting">#define xmlSecTransformUsageAny 0xFFFF
+</pre>
<p>Transform could be used for operation.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK:CAPS"></a><h3>XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK 0x00000001</pre>
+<pre class="programlisting">#define XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK 0x00000001
+</pre>
<p>If this flag is set then URI ID references are resolved directly
without using XPointers. This allows one to sign/verify Visa3D
documents that don't follow XML, XPointer and XML DSig specifications.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMCTX"></a><h3>struct xmlSecTransformCtx</h3>
-<pre class="PROGRAMLISTING">struct xmlSecTransformCtx {
+<div class="refsect2">
+<a name="xmlSecTransformCtx"></a><h3>struct xmlSecTransformCtx</h3>
+<pre class="programlisting">struct xmlSecTransformCtx {
/* user settings */
void* userData;
unsigned int flags;
@@ -4384,106 +4389,105 @@ documents that don't follow XML, XPointer and XML DSig specifications.</p>
/* for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The transform execution context.</p>
-<div class="REFSECT3">
-<a name="AEN23259"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23261"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransformCtx.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">userData</code>;</p></td>
-<td><p>the pointer to user data (xmlsec and xmlsec-crypto never
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransformCtx.userData"></a>userData</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto never
touch this).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags</code>;</p></td>
-<td><p>the bit mask flags to control transforms execution
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecTransformCtx.flags"></a>flags</code></em>;</p></td>
+<td class="struct_member_description"><p>the bit mask flags to control transforms execution
(reserved for the future).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags2</code>;</p></td>
-<td><p>the bit mask flags to control transforms execution
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecTransformCtx.flags2"></a>flags2</code></em>;</p></td>
+<td class="struct_member_description"><p>the bit mask flags to control transforms execution
(reserved for the future).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPE"><span class="TYPE">xmlSecTransformUriType</span></a> <code class="STRUCTFIELD">enabledUris</code>;</p></td>
-<td><p>the allowed transform data source uri types.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriType" title="xmlSecTransformUriType"><span class="type">xmlSecTransformUriType</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.enabledUris"></a>enabledUris</code></em>;</p></td>
+<td class="struct_member_description"><p>the allowed transform data source uri types.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">enabledTransforms</code>;</p></td>
-<td><p>the list of enabled transforms; if list is empty (default)
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.enabledTransforms"></a>enabledTransforms</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of enabled transforms; if list is empty (default)
then all registered transforms are enabled.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREEXECUTECALLBACK"><span class="TYPE">xmlSecTransformCtxPreExecuteCallback</span></a> <code class="STRUCTFIELD">preExecCallback</code>;</p></td>
-<td><p>the callback called after preparing transform chain
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPreExecuteCallback" title="xmlSecTransformCtxPreExecuteCallback ()"><span class="type">xmlSecTransformCtxPreExecuteCallback</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.preExecCallback"></a>preExecCallback</code></em>;</p></td>
+<td class="struct_member_description"><p>the callback called after preparing transform chain
and right before actual data processing; application
can use this callback to change transforms parameters,
insert additional transforms in the chain or do
additional validation (and abort transform execution
if needed).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> <code class="STRUCTFIELD">result</code>;</p></td>
-<td><p>the pointer to transforms result buffer.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.result"></a>result</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to transforms result buffer.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUS"><span class="TYPE">xmlSecTransformStatus</span></a> <code class="STRUCTFIELD">status</code>;</p></td>
-<td><p>the transforms chain processng status.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformStatus" title="enum xmlSecTransformStatus"><span class="type">xmlSecTransformStatus</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.status"></a>status</code></em>;</p></td>
+<td class="struct_member_description"><p>the transforms chain processing status.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">uri</code>;</p></td>
-<td><p>the data source URI without xpointer expression.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecTransformCtx.uri"></a>uri</code></em>;</p></td>
+<td class="struct_member_description"><p>the data source URI without xpointer expression.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">xptrExpr</code>;</p></td>
-<td><p>the xpointer expression from data source URI (if any).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecTransformCtx.xptrExpr"></a>xptrExpr</code></em>;</p></td>
+<td class="struct_member_description"><p>the xpointer expression from data source URI (if any).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">first</code>;</p></td>
-<td><p>the first transform in the chain.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.first"></a>first</code></em>;</p></td>
+<td class="struct_member_description"><p>the first transform in the chain.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">last</code>;</p></td>
-<td><p>the last transform in the chain.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecTransformCtx.last"></a>last</code></em>;</p></td>
+<td class="struct_member_description"><p>the last transform in the chain.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransformCtx.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransformCtx.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORM"></a><h3>struct xmlSecTransform</h3>
-<pre class="PROGRAMLISTING">struct xmlSecTransform {
+<div class="refsect2">
+<a name="xmlSecTransform"></a><h3>struct xmlSecTransform</h3>
+<pre class="programlisting">struct xmlSecTransform {
xmlSecTransformId id;
xmlSecTransformOperation operation;
xmlSecTransformStatus status;
@@ -4504,87 +4508,86 @@ if needed).</p></td>
/* reserved for the future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>The transform structure.</p>
-<div class="REFSECT3">
-<a name="AEN23396"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23398"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecTransform.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">xmlSecTransformId</span></font> <code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the transform id (pointer to <font><span class="TYPE">xmlSecTransformId</span></font>).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecTransformId</span></font> <em class="structfield"><code><a name="xmlSecTransform.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform id (pointer to <font><span class="type">xmlSecTransformId</span></font>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMOPERATION"><span class="TYPE">xmlSecTransformOperation</span></a> <code class="STRUCTFIELD">operation</code>;</p></td>
-<td><p>the transform's opertaion.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformOperation" title="enum xmlSecTransformOperation"><span class="type">xmlSecTransformOperation</span></a> <em class="structfield"><code><a name="xmlSecTransform.operation"></a>operation</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform's operation.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUS"><span class="TYPE">xmlSecTransformStatus</span></a> <code class="STRUCTFIELD">status</code>;</p></td>
-<td><p>the current status.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformStatus" title="enum xmlSecTransformStatus"><span class="type">xmlSecTransformStatus</span></a> <em class="structfield"><code><a name="xmlSecTransform.status"></a>status</code></em>;</p></td>
+<td class="struct_member_description"><p>the current status.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">hereNode</code>;</p></td>
-<td><p>the pointer to transform's &lt;dsig:Transform /&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecTransform.hereNode"></a>hereNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to transform's <a class="ulink" href="" target="_top">&lt;dsig:Transform /&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">next</code>;</p></td>
-<td><p>the pointer to next transform in the chain.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecTransform.next"></a>next</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to next transform in the chain.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">prev</code>;</p></td>
-<td><p>the pointer to previous transform in the chain.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecTransform.prev"></a>prev</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to previous transform in the chain.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBuffer</span></a> <code class="STRUCTFIELD">inBuf</code>;</p></td>
-<td><p>the input binary data buffer.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBuffer</span></a> <em class="structfield"><code><a name="xmlSecTransform.inBuf"></a>inBuf</code></em>;</p></td>
+<td class="struct_member_description"><p>the input binary data buffer.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBuffer</span></a> <code class="STRUCTFIELD">outBuf</code>;</p></td>
-<td><p>the output binary data buffer.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBuffer</span></a> <em class="structfield"><code><a name="xmlSecTransform.outBuf"></a>outBuf</code></em>;</p></td>
+<td class="struct_member_description"><p>the output binary data buffer.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> <code class="STRUCTFIELD">inNodes</code>;</p></td>
-<td><p>the input XML nodes.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> <em class="structfield"><code><a name="xmlSecTransform.inNodes"></a>inNodes</code></em>;</p></td>
+<td class="struct_member_description"><p>the input XML nodes.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-nodeset.html#XMLSECNODESET"><span class="TYPE">xmlSecNodeSetPtr</span></a> <code class="STRUCTFIELD">outNodes</code>;</p></td>
-<td><p>the output XML nodes.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-nodeset.html#xmlSecNodeSet" title="struct xmlSecNodeSet"><span class="type">xmlSecNodeSetPtr</span></a> <em class="structfield"><code><a name="xmlSecTransform.outNodes"></a>outNodes</code></em>;</p></td>
+<td class="struct_member_description"><p>the output XML nodes.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransform.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransform.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMKLASS"></a><h3>struct xmlSecTransformKlass</h3>
-<pre class="PROGRAMLISTING">struct xmlSecTransformKlass {
+<div class="refsect2">
+<a name="xmlSecTransformKlass"></a><h3>struct xmlSecTransformKlass</h3>
+<pre class="programlisting">struct xmlSecTransformKlass {
/* data */
xmlSecSize klassSize;
xmlSecSize objSize;
@@ -4615,226 +4618,237 @@ if needed).</p></td>
/* reserved for future */
void* reserved0;
void* reserved1;
-};</pre>
-<p>The transform klass desccription structure.</p>
-<div class="REFSECT3">
-<a name="AEN23517"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23519"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+};
+</pre>
+<p>The transform klass description structure.</p>
+<div class="refsect3">
+<a name="xmlSecTransformKlass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">klassSize</code>;</p></td>
-<td><p>the transform klass structure size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.klassSize"></a>klassSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform klass structure size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> <code class="STRUCTFIELD">objSize</code>;</p></td>
-<td><p>the transform object size.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.objSize"></a>objSize</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform object size.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">name</code>;</p></td>
-<td><p>the transform's name.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecTransformKlass.name"></a>name</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform's name.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">href</code>;</p></td>
-<td><p>the transform's identification string (href).</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecTransformKlass.href"></a>href</code></em>;</p></td>
+<td class="struct_member_description"><p>the transform's identification string (href).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMUSAGE"><span class="TYPE">xmlSecTransformUsage</span></a> <code class="STRUCTFIELD">usage</code>;</p></td>
-<td><p>the allowed transforms usages.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUsage" title="xmlSecTransformUsage"><span class="type">xmlSecTransformUsage</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.usage"></a>usage</code></em>;</p></td>
+<td class="struct_member_description"><p>the allowed transforms usages.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMINITIALIZEMETHOD"><span class="TYPE">xmlSecTransformInitializeMethod</span></a> <code class="STRUCTFIELD">initialize</code>;</p></td>
-<td><p>the initialization method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformInitializeMethod" title="xmlSecTransformInitializeMethod ()"><span class="type">xmlSecTransformInitializeMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.initialize"></a>initialize</code></em>;</p></td>
+<td class="struct_member_description"><p>the initialization method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMFINALIZEMETHOD"><span class="TYPE">xmlSecTransformFinalizeMethod</span></a> <code class="STRUCTFIELD">finalize</code>;</p></td>
-<td><p>the finmalization (destroy) function.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformFinalizeMethod" title="xmlSecTransformFinalizeMethod ()"><span class="type">xmlSecTransformFinalizeMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.finalize"></a>finalize</code></em>;</p></td>
+<td class="struct_member_description"><p>the finalization (destroy) function.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEREADMETHOD"><span class="TYPE">xmlSecTransformNodeReadMethod</span></a> <code class="STRUCTFIELD">readNode</code>;</p></td>
-<td><p>the XML node read method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeReadMethod" title="xmlSecTransformNodeReadMethod ()"><span class="type">xmlSecTransformNodeReadMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.readNode"></a>readNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML node read method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMNODEWRITEMETHOD"><span class="TYPE">xmlSecTransformNodeWriteMethod</span></a> <code class="STRUCTFIELD">writeNode</code>;</p></td>
-<td><p>the XML node write method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformNodeWriteMethod" title="xmlSecTransformNodeWriteMethod ()"><span class="type">xmlSecTransformNodeWriteMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.writeNode"></a>writeNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML node write method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD"><span class="TYPE">xmlSecTransformSetKeyRequirementsMethod</span></a> <code class="STRUCTFIELD">setKeyReq</code>;</p></td>
-<td><p>the set key requirements method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyRequirementsMethod" title="xmlSecTransformSetKeyRequirementsMethod ()"><span class="type">xmlSecTransformSetKeyRequirementsMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.setKeyReq"></a>setKeyReq</code></em>;</p></td>
+<td class="struct_member_description"><p>the set key requirements method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYMETHOD"><span class="TYPE">xmlSecTransformSetKeyMethod</span></a> <code class="STRUCTFIELD">setKey</code>;</p></td>
-<td><p>the set key method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformSetKeyMethod" title="xmlSecTransformSetKeyMethod ()"><span class="type">xmlSecTransformSetKeyMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.setKey"></a>setKey</code></em>;</p></td>
+<td class="struct_member_description"><p>the set key method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMVERIFYMETHOD"><span class="TYPE">xmlSecTransformVerifyMethod</span></a> <code class="STRUCTFIELD">verify</code>;</p></td>
-<td><p>the verify method (for digest and signature transforms).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformVerifyMethod" title="xmlSecTransformVerifyMethod ()"><span class="type">xmlSecTransformVerifyMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.verify"></a>verify</code></em>;</p></td>
+<td class="struct_member_description"><p>the verify method (for digest and signature transforms).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMGETDATATYPEMETHOD"><span class="TYPE">xmlSecTransformGetDataTypeMethod</span></a> <code class="STRUCTFIELD">getDataType</code>;</p></td>
-<td><p>the input/output data type query method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformGetDataTypeMethod" title="xmlSecTransformGetDataTypeMethod ()"><span class="type">xmlSecTransformGetDataTypeMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.getDataType"></a>getDataType</code></em>;</p></td>
+<td class="struct_member_description"><p>the input/output data type query method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHBINMETHOD"><span class="TYPE">xmlSecTransformPushBinMethod</span></a> <code class="STRUCTFIELD">pushBin</code>;</p></td>
-<td><p>the binary data "push thru chain" processing method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushBinMethod" title="xmlSecTransformPushBinMethod ()"><span class="type">xmlSecTransformPushBinMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.pushBin"></a>pushBin</code></em>;</p></td>
+<td class="struct_member_description"><p>the binary data "push thru chain" processing method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPBINMETHOD"><span class="TYPE">xmlSecTransformPopBinMethod</span></a> <code class="STRUCTFIELD">popBin</code>;</p></td>
-<td><p>the binary data "pop from chain" procesing method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopBinMethod" title="xmlSecTransformPopBinMethod ()"><span class="type">xmlSecTransformPopBinMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.popBin"></a>popBin</code></em>;</p></td>
+<td class="struct_member_description"><p>the binary data "pop from chain" procesing method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPUSHXMLMETHOD"><span class="TYPE">xmlSecTransformPushXmlMethod</span></a> <code class="STRUCTFIELD">pushXml</code>;</p></td>
-<td><p>the XML data "push thru chain" processing method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPushXmlMethod" title="xmlSecTransformPushXmlMethod ()"><span class="type">xmlSecTransformPushXmlMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.pushXml"></a>pushXml</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML data "push thru chain" processing method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMPOPXMLMETHOD"><span class="TYPE">xmlSecTransformPopXmlMethod</span></a> <code class="STRUCTFIELD">popXml</code>;</p></td>
-<td><p>the XML data "pop from chain" procesing method.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformPopXmlMethod" title="xmlSecTransformPopXmlMethod ()"><span class="type">xmlSecTransformPopXmlMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.popXml"></a>popXml</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML data "pop from chain" procesing method.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMEXECUTEMETHOD"><span class="TYPE">xmlSecTransformExecuteMethod</span></a> <code class="STRUCTFIELD">execute</code>;</p></td>
-<td><p>the low level data processing method used by default
-implementations of <code class="PARAMETER">pushBin</code>
-, <code class="PARAMETER">popBin</code>
-, <code class="PARAMETER">pushXml</code>
-and <code class="PARAMETER">popXml</code>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformExecuteMethod" title="xmlSecTransformExecuteMethod ()"><span class="type">xmlSecTransformExecuteMethod</span></a> <em class="structfield"><code><a name="xmlSecTransformKlass.execute"></a>execute</code></em>;</p></td>
+<td class="struct_member_description"><p>the low level data processing method used by default
+implementations of <em class="parameter"><code>pushBin</code></em>
+, <em class="parameter"><code>popBin</code></em>
+, <em class="parameter"><code>pushXml</code></em>
+and <em class="parameter"><code>popXml</code></em>
.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransformKlass.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecTransformKlass.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMIDLISTID"></a><h3>xmlSecTransformIdListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformIdListId xmlSecTransformIdListGetKlass()</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdListId"></a><h3>xmlSecTransformIdListId</h3>
+<pre class="programlisting">#define xmlSecTransformIdListId xmlSecTransformIdListGetKlass()
+</pre>
<p>Transform klasses list klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMBASE64ID"></a><h3>xmlSecTransformBase64Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformBase64Id</pre>
+<div class="refsect2">
+<a name="xmlSecTransformIdUnknown"></a><h3>xmlSecTransformIdUnknown</h3>
+<pre class="programlisting">#define xmlSecTransformIdUnknown ((xmlSecTransformId)NULL)
+</pre>
+<p>The "unknown" transform id (NULL).</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformBase64Id"></a><h3>xmlSecTransformBase64Id</h3>
+<pre class="programlisting">#define xmlSecTransformBase64Id</pre>
<p>The base64 encode transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14NID"></a><h3>xmlSecTransformInclC14NId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformInclC14NId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14NId"></a><h3>xmlSecTransformInclC14NId</h3>
+<pre class="programlisting">#define xmlSecTransformInclC14NId</pre>
<p>The regular (inclusive) C14N without comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14NWITHCOMMENTSID"></a><h3>xmlSecTransformInclC14NWithCommentsId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformInclC14NWithCommentsId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14NWithCommentsId"></a><h3>xmlSecTransformInclC14NWithCommentsId</h3>
+<pre class="programlisting">#define xmlSecTransformInclC14NWithCommentsId</pre>
<p>The regular (inclusive) C14N with comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14N11ID"></a><h3>xmlSecTransformInclC14N11Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformInclC14N11Id</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14N11Id"></a><h3>xmlSecTransformInclC14N11Id</h3>
+<pre class="programlisting">#define xmlSecTransformInclC14N11Id</pre>
<p>The regular (inclusive) C14N 1.1 without comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMINCLC14N11WITHCOMMENTSID"></a><h3>xmlSecTransformInclC14N11WithCommentsId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformInclC14N11WithCommentsId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformInclC14N11WithCommentsId"></a><h3>xmlSecTransformInclC14N11WithCommentsId</h3>
+<pre class="programlisting">#define xmlSecTransformInclC14N11WithCommentsId</pre>
<p>The regular (inclusive) C14N 1.1 with comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXCLC14NID"></a><h3>xmlSecTransformExclC14NId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformExclC14NId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformExclC14NId"></a><h3>xmlSecTransformExclC14NId</h3>
+<pre class="programlisting">#define xmlSecTransformExclC14NId</pre>
<p>The exclusive C14N without comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMEXCLC14NWITHCOMMENTSID"></a><h3>xmlSecTransformExclC14NWithCommentsId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformExclC14NWithCommentsId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformExclC14NWithCommentsId"></a><h3>xmlSecTransformExclC14NWithCommentsId</h3>
+<pre class="programlisting">#define xmlSecTransformExclC14NWithCommentsId</pre>
<p>The exclusive C14N with comments transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMENVELOPEDID"></a><h3>xmlSecTransformEnvelopedId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformEnvelopedId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformEnvelopedId"></a><h3>xmlSecTransformEnvelopedId</h3>
+<pre class="programlisting">#define xmlSecTransformEnvelopedId</pre>
<p>The "enveloped" transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPATHID"></a><h3>xmlSecTransformXPathId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformXPathId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPathId"></a><h3>xmlSecTransformXPathId</h3>
+<pre class="programlisting">#define xmlSecTransformXPathId</pre>
<p>The XPath transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPATH2ID"></a><h3>xmlSecTransformXPath2Id</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformXPath2Id</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPath2Id"></a><h3>xmlSecTransformXPath2Id</h3>
+<pre class="programlisting">#define xmlSecTransformXPath2Id</pre>
<p>The XPath2 transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXPOINTERID"></a><h3>xmlSecTransformXPointerId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformXPointerId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformXPointerId"></a><h3>xmlSecTransformXPointerId</h3>
+<pre class="programlisting">#define xmlSecTransformXPointerId</pre>
<p>The XPointer transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMXSLTID"></a><h3>xmlSecTransformXsltId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformXsltId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRelationshipId"></a><h3>xmlSecTransformRelationshipId</h3>
+<pre class="programlisting">#define xmlSecTransformRelationshipId</pre>
+<p>The Relationship transform klass.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecTransformXsltId"></a><h3>xmlSecTransformXsltId</h3>
+<pre class="programlisting">#define xmlSecTransformXsltId</pre>
<p>The XSLT transform klass.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMREMOVEXMLTAGSC14NID"></a><h3>xmlSecTransformRemoveXmlTagsC14NId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformRemoveXmlTagsC14NId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformRemoveXmlTagsC14NId"></a><h3>xmlSecTransformRemoveXmlTagsC14NId</h3>
+<pre class="programlisting">#define xmlSecTransformRemoveXmlTagsC14NId</pre>
<p>The "remove all xml tags" transform klass (used before base64 transforms).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECTRANSFORMVISA3DHACKID"></a><h3>xmlSecTransformVisa3DHackId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecTransformVisa3DHackId</pre>
+<div class="refsect2">
+<a name="xmlSecTransformVisa3DHackId"></a><h3>xmlSecTransformVisa3DHackId</h3>
+<pre class="programlisting">#define xmlSecTransformVisa3DHackId</pre>
<p>Selects node subtree by given node id string. The only reason why we need this
is Visa3D protocol. It doesn't follow XML/XPointer/XMLDSig specs and allows
invalid XPointer expressions in the URI attribute. Since we couldn't evaluate
such expressions thru XPath/XPointer engine, we need to have this hack here.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-templates.html"><b>&lt;&lt;&lt; templates</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-version.html"><b>version &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-verify-with-key.html b/docs/api/xmlsec-verify-with-key.html
index a9d62401..25cfbfc6 100644
--- a/docs/api/xmlsec-verify-with-key.html
+++ b/docs/api/xmlsec-verify-with-key.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifying a signature with a single key.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Signing with X509 certificate." href="xmlsec-examples-sign-x509.html">
-<link rel="NEXT" title="Verifying a signature with keys manager." href="xmlsec-verify-with-keys-mngr.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifying a signature with a single key.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-examples-sign-x509.html" title="Signing with X509 certificate.">
+<link rel="next" href="xmlsec-verify-with-keys-mngr.html" title="Verifying a signature with keys manager.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-examples-sign-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-examples-sign-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-verify-with-keys-mngr.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-VERIFY-WITH-KEY">Verifying a signature with a single key.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY1">verify1.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN856"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-verify-with-key"></a>Verifying a signature with a single key.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify1"></a>verify1.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Verifying a file using a single key.
*
* Verifies a file using a key from PEM file.
@@ -129,7 +41,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -204,10 +116,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -327,15 +239,12 @@ done:
}
return(res);
}
- </pre>
-<p></p>
-</div>
+
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-examples-sign-x509.html"><b>&lt;&lt;&lt; Signing with X509 certificate.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-verify-with-keys-mngr.html"><b>Verifying a signature with keys manager. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-verify-with-keys-mngr.html b/docs/api/xmlsec-verify-with-keys-mngr.html
index 6a7d5ac1..f22721a3 100644
--- a/docs/api/xmlsec-verify-with-keys-mngr.html
+++ b/docs/api/xmlsec-verify-with-keys-mngr.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifying a signature with keys manager.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Verifying a signature with a single key." href="xmlsec-verify-with-key.html">
-<link rel="NEXT" title="Verifying a signature with X509 certificates." href="xmlsec-verify-with-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifying a signature with keys manager.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-verify-with-key.html" title="Verifying a signature with a single key.">
+<link rel="next" href="xmlsec-verify-with-x509.html" title="Verifying a signature with X509 certificates.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-verify-with-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-verify-with-key.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-verify-with-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-VERIFY-WITH-KEYS-MNGR">Verifying a signature with keys manager.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY2">verify2.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN863"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-verify-with-keys-mngr"></a>Verifying a signature with keys manager.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify2"></a>verify2.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Verifying a file using keys manager.
*
* Verifies a file using keys manager
@@ -129,7 +41,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -207,10 +119,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -267,7 +179,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load PEM keys from #files in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
@@ -397,15 +309,12 @@ done:
}
return(res);
}
- </pre>
-<p></p>
-</div>
+
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-verify-with-key.html"><b>&lt;&lt;&lt; Verifying a signature with a single key.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-verify-with-x509.html"><b>Verifying a signature with X509 certificates. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-verify-with-restrictions.html b/docs/api/xmlsec-verify-with-restrictions.html
index d9b8d66a..ac2ecba2 100644
--- a/docs/api/xmlsec-verify-with-restrictions.html
+++ b/docs/api/xmlsec-verify-with-restrictions.html
@@ -1,124 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifying a signature with additional restrictions.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Verifying a signature with X509 certificates." href="xmlsec-verify-with-x509.html">
-<link rel="NEXT" title="Encrypting data with a template file." href="xmlsec-encrypt-template-file.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifying a signature with additional restrictions.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-verify-with-x509.html" title="Verifying a signature with X509 certificates.">
+<link rel="next" href="xmlsec-encrypt-template-file.html" title="Encrypting data with a template file.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-verify-with-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-verify-with-x509.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-encrypt-template-file.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-VERIFY-WITH-RESTRICTIONS">Verifying a signature with additional restrictions.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY4">verify4.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN877"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-verify-with-restrictions"></a>Verifying a signature with additional restrictions.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify4"></a>verify4.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Verifying a simple SAML response with X509 certificate
*
- * Verifies a simple SAML response. In addition to refular verification
- * we ensure that the signature has only one <a href="http://www.w3.org/TR/xmldsig-core/#sec-Reference" target="_top">&lt;dsig:Reference/&gt;</a> element
+ * Verifies a simple SAML response. In addition to regular verification
+ * we ensure that the signature has only one &lt;dsig:Reference/&gt; element
* with an empty or NULL URI attribute and one enveloped signature transform
* as it is required by SAML specification.
*
@@ -128,18 +40,18 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* Usage:
* verify4 &lt;signed-file&gt; &lt;trusted-cert-pem-file1&gt; [&lt;trusted-cert-pem-file2&gt; [...]]
*
- * Example (sucecess):
+ * Example (success):
* ./verify4 verify4-res.xml ca2cert.pem cacert.pem
*
* Example (failure):
* ./verify4 verify4-bad-res.xml ca2cert.pem cacert.pem
- * In the same time, verify3 example successfuly verifies this signature:
+ * In the same time, verify3 example successfully verifies this signature:
* ./verify3 verify4-bad-res.xml ca2cert.pem cacert.pem
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -216,10 +128,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -276,7 +188,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load trusted certificates from PEM #files.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
@@ -421,16 +333,15 @@ done:
}
return(res);
}
- </pre>
-<p></p>
-</div>
+
+
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY4-TMPL">verify4-tmpl.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN883"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify4-tmpl"></a>verify4-tmpl.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: A simple SAML response template (verify4 example).
@@ -448,12 +359,12 @@ Sign it using the following command (replace __ with double dashes):
&lt;dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/&gt;
&lt;/dsig:Transforms&gt;
&lt;dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top">&lt;dsig:DigestValue/&gt;</a>
+ &lt;dsig:DigestValue/&gt;
&lt;/dsig:Reference&gt;
&lt;/dsig:SignedInfo&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureValue" target="_top">&lt;dsig:SignatureValue/&gt;</a>
+ &lt;dsig:SignatureValue/&gt;
&lt;dsig:KeyInfo&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a>
+ &lt;dsig:X509Data/&gt;
&lt;/dsig:KeyInfo&gt;
&lt;/dsig:Signature&gt;
&lt;Status&gt;
@@ -476,16 +387,14 @@ Sign it using the following command (replace __ with double dashes):
&lt;AuthorityBinding AuthorityKind="samlp:AttributeQuery" Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://aa.osu.edu/"/&gt;
&lt;/AuthenticationStatement&gt;
&lt;/Assertion&gt;
-&lt;/Response&gt;</pre>
-<p></p>
-</div>
+&lt;/Response&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY4-RES">verify4-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN891"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify4-res"></a>verify4-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: A simple SAML response template (verify4 example).
@@ -553,16 +462,14 @@ fBjXssrERn05kpBcrRfzou4r3DCgQFPhjxga&lt;/dsig:X509Certificate&gt;
&lt;AuthorityBinding AuthorityKind="samlp:AttributeQuery" Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://aa.osu.edu/"/&gt;
&lt;/AuthenticationStatement&gt;
&lt;/Assertion&gt;
-&lt;/Response&gt;</pre>
-<p></p>
-</div>
+&lt;/Response&gt;
+</pre></div>
</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY4-BAD-TMPL">verify4-bad-tmpl.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN896"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify4-bad-tmpl"></a>verify4-bad-tmpl.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: A simple bad SAML response template (verify4 example).
@@ -587,12 +494,12 @@ Sign it using the following command (replace __ with double dashes):
&lt;/dsig:Transform&gt;
&lt;/dsig:Transforms&gt;
&lt;dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-DigestValue" target="_top">&lt;dsig:DigestValue/&gt;</a>
+ &lt;dsig:DigestValue/&gt;
&lt;/dsig:Reference&gt;
&lt;/dsig:SignedInfo&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-SignatureValue" target="_top">&lt;dsig:SignatureValue/&gt;</a>
+ &lt;dsig:SignatureValue/&gt;
&lt;dsig:KeyInfo&gt;
- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Data" target="_top">&lt;dsig:X509Data/&gt;</a>
+ &lt;dsig:X509Data/&gt;
&lt;/dsig:KeyInfo&gt;
&lt;/dsig:Signature&gt;
&lt;Status&gt;
@@ -615,16 +522,14 @@ Sign it using the following command (replace __ with double dashes):
&lt;AuthorityBinding AuthorityKind="samlp:AttributeQuery" Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://aa.osu.edu/"/&gt;
&lt;/AuthenticationStatement&gt;
&lt;/Assertion&gt;
-&lt;/Response&gt;</pre>
-<p></p>
+&lt;/Response&gt;
+</pre></div>
</div>
-</div>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY4-BAD-RES">verify4-bad-res.xml</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN904"></a><pre class="PROGRAMLISTING">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify4-bad-res"></a>verify4-bad-res.xml</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
XML Security Library example: A simple bad SAML response (verify4 example).
@@ -713,15 +618,11 @@ NJ2D&lt;/X509Certificate&gt;
&lt;AuthorityBinding AuthorityKind="samlp:AttributeQuery" Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://aa.osu.edu/"/&gt;
&lt;/AuthenticationStatement&gt;
&lt;/Assertion&gt;
-&lt;/Response&gt;</pre>
-<p></p>
-</div>
+&lt;/Response&gt;
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-verify-with-x509.html"><b>&lt;&lt;&lt; Verifying a signature with X509 certificates.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-encrypt-template-file.html"><b>Encrypting data with a template file. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-verify-with-x509.html b/docs/api/xmlsec-verify-with-x509.html
index 27a10afb..4180e920 100644
--- a/docs/api/xmlsec-verify-with-x509.html
+++ b/docs/api/xmlsec-verify-with-x509.html
@@ -1,120 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Verifying a signature with X509 certificates.</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="Examples." href="xmlsec-examples.html">
-<link rel="PREVIOUS" title="Verifying a signature with keys manager." href="xmlsec-verify-with-keys-mngr.html">
-<link rel="NEXT" title="Verifying a signature with additional restrictions." href="xmlsec-verify-with-restrictions.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Verifying a signature with X509 certificates.: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-examples.html" title="Examples.">
+<link rel="prev" href="xmlsec-verify-with-keys-mngr.html" title="Verifying a signature with keys manager.">
+<link rel="next" href="xmlsec-verify-with-restrictions.html" title="Verifying a signature with additional restrictions.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-verify-with-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-verify-with-keys-mngr.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-verify-with-restrictions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<br clear="all"><div class="SECT1">
-<h1 class="SECT1"><a name="XMLSEC-VERIFY-WITH-X509">Verifying a signature with X509 certificates.</a></h1>
-<br clear="all"><div class="SECT2">
-<h2 class="SECT2"><a name="XMLSEC-EXAMPLE-VERIFY3">verify3.c</a></h2>
-<p></p>
-<div class="INFORMALEXAMPLE">
-<p></p>
-<a name="AEN870"></a><pre class="PROGRAMLISTING">/**
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="xmlsec-verify-with-x509"></a>Verifying a signature with X509 certificates.</h2></div></div></div>
+<div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="xmlsec-example-verify3"></a>verify3.c</h3></div></div></div>
+<div class="informalexample"><pre class="programlisting">
+/**
* XML Security Library example: Verifying a file signed with X509 certificate
*
* Verifies a file signed with X509 certificate.
@@ -131,7 +43,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;
+ * Copyright (C) 2002-2016 Aleksey Sanin &lt;aleksey@aleksey.com&gt;. All Rights Reserved.
*/
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
@@ -208,10 +120,10 @@ main(int argc, char **argv) {
* xmlsec-crypto library.
*/
#ifdef XMLSEC_CRYPTO_DYNAMIC_LOADING
- if(xmlSecCryptoDLLoadLibrary(BAD_CAST XMLSEC_CRYPTO) &lt; 0) {
+ if(xmlSecCryptoDLLoadLibrary(NULL) &lt; 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -268,7 +180,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load trusted certificates from PEM #files.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
@@ -378,15 +290,12 @@ done:
}
return(res);
}
- </pre>
-<p></p>
-</div>
+
+
+</pre></div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-verify-with-keys-mngr.html"><b>&lt;&lt;&lt; Verifying a signature with keys manager.</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-verify-with-restrictions.html"><b>Verifying a signature with additional restrictions. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-version.html b/docs/api/xmlsec-version.html
index 1077bb67..95a0c5c5 100644
--- a/docs/api/xmlsec-version.html
+++ b/docs/api/xmlsec-version.html
@@ -1,195 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>version</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="transforms" href="xmlsec-transforms.html">
-<link rel="NEXT" title="xmldsig" href="xmlsec-xmldsig.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>version: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-transforms.html" title="transforms">
+<link rel="next" href="xmlsec-xmldsig.html" title="xmldsig">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-version.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-transforms.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-xmldsig.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-VERSION"></a>version</h1>
-<div class="REFNAMEDIV">
-<a name="AEN23801"></a><h2>Name</h2>version -- Version macros.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-VERSION.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23806"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-version"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-version.top_of_page"></a>version</span></h2>
+<p>version — Version macros.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-version.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-version.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-version.html#XMLSEC-VERSION:CAPS">XMLSEC_VERSION</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-version.html#XMLSEC-VERSION:CAPS" title="XMLSEC_VERSION">XMLSEC_VERSION</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-version.html#XMLSEC-VERSION-MAJOR:CAPS">XMLSEC_VERSION_MAJOR</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-version.html#XMLSEC-VERSION-MAJOR:CAPS" title="XMLSEC_VERSION_MAJOR">XMLSEC_VERSION_MAJOR</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-version.html#XMLSEC-VERSION-MINOR:CAPS">XMLSEC_VERSION_MINOR</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-version.html#XMLSEC-VERSION-MINOR:CAPS" title="XMLSEC_VERSION_MINOR">XMLSEC_VERSION_MINOR</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-version.html#XMLSEC-VERSION-SUBMINOR:CAPS">XMLSEC_VERSION_SUBMINOR</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-version.html#XMLSEC-VERSION-SUBMINOR:CAPS" title="XMLSEC_VERSION_SUBMINOR">XMLSEC_VERSION_SUBMINOR</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-version.html#XMLSEC-VERSION-INFO:CAPS">XMLSEC_VERSION_INFO</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-version.html#XMLSEC-VERSION-INFO:CAPS" title="XMLSEC_VERSION_INFO">XMLSEC_VERSION_INFO</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-version.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-VERSION.DESCRIPTION"></a><h2>Description</h2>
-<p>Version macros.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-VERSION.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
+<div class="refsect1">
+<a name="xmlsec-version.functions_details"></a><h2>Functions</h2>
<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-VERSION.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSEC-VERSION--CAPS"></a><h3>XMLSEC_VERSION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION "1.2.22"</pre>
+<div class="refsect1">
+<a name="xmlsec-version.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="XMLSEC-VERSION:CAPS"></a><h3>XMLSEC_VERSION</h3>
+<pre class="programlisting">#define XMLSEC_VERSION "1.2.28"
+</pre>
<p>The library version string in the format
-"&lt;major-number&gt;.&lt;minor-number&gt;.&lt;sub-minor-number&gt;".</p>
+"$major_number.$minor_number.$sub_minor_number".</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-VERSION-MAJOR:CAPS"></a><h3>XMLSEC_VERSION_MAJOR</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_MAJOR 1</pre>
+<pre class="programlisting">#define XMLSEC_VERSION_MAJOR 1
+</pre>
<p>The library major version number.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-VERSION-MINOR:CAPS"></a><h3>XMLSEC_VERSION_MINOR</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_MINOR 2</pre>
+<pre class="programlisting">#define XMLSEC_VERSION_MINOR 2
+</pre>
<p>The library minor version number.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-VERSION-SUBMINOR--CAPS"></a><h3>XMLSEC_VERSION_SUBMINOR</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_SUBMINOR 22</pre>
+<div class="refsect2">
+<a name="XMLSEC-VERSION-SUBMINOR:CAPS"></a><h3>XMLSEC_VERSION_SUBMINOR</h3>
+<pre class="programlisting">#define XMLSEC_VERSION_SUBMINOR 28
+</pre>
<p>The library sub-minor version number.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-VERSION-INFO--CAPS"></a><h3>XMLSEC_VERSION_INFO</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_INFO "3:22:2"</pre>
+<div class="refsect2">
+<a name="XMLSEC-VERSION-INFO:CAPS"></a><h3>XMLSEC_VERSION_INFO</h3>
+<pre class="programlisting">#define XMLSEC_VERSION_INFO "3:28:2"
+</pre>
<p>The library version info string in the format
-"&lt;major-number&gt;+&lt;minor-number&gt;:&lt;sub-minor-number&gt;:&lt;minor-number&gt;".</p>
+"$major_number+$minor_number:$sub_minor_number:$minor_number".</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-transforms.html"><b>&lt;&lt;&lt; transforms</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-xmldsig.html"><b>xmldsig &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-x509.html b/docs/api/xmlsec-x509.html
index 074f129d..4d66c0b0 100644
--- a/docs/api/xmlsec-x509.html
+++ b/docs/api/xmlsec-x509.html
@@ -1,263 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>x509</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="xmltree" href="xmlsec-xmltree.html">
-<link rel="NEXT" title="XML Security Library for OpenSLL API Reference." href="xmlsec-openssl-ref.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x509: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-xmltree.html" title="xmltree">
+<link rel="next" href="xmlsec-openssl-ref.html" title="XML Security Library for OpenSLL API Reference.">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-x509.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-xmltree.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-xmltree.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-openssl-ref.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-X509"></a>x509</h1>
-<div class="REFNAMEDIV">
-<a name="AEN28791"></a><h2>Name</h2>x509 -- <a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-X509.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28797"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-x509"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-x509.top_of_page"></a>x509</span></h2>
+<p>x509 — <a class="ulink" href="" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-x509.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-x509.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-x509.html#XMLSECX509DATAGETNODECONTENT">xmlSecX509DataGetNodeContent</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-x509.html#xmlSecX509DataGetNodeContent" title="xmlSecX509DataGetNodeContent ()">xmlSecX509DataGetNodeContent</a> <span class="c_punctuation">()</span>
</td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-X509.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28809"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-x509.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-CERTIFICATE-NODE:CAPS">XMLSEC_X509DATA_CERTIFICATE_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-CERTIFICATE-NODE:CAPS" title="XMLSEC_X509DATA_CERTIFICATE_NODE">XMLSEC_X509DATA_CERTIFICATE_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-SUBJECTNAME-NODE:CAPS">XMLSEC_X509DATA_SUBJECTNAME_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-SUBJECTNAME-NODE:CAPS" title="XMLSEC_X509DATA_SUBJECTNAME_NODE">XMLSEC_X509DATA_SUBJECTNAME_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-ISSUERSERIAL-NODE:CAPS">XMLSEC_X509DATA_ISSUERSERIAL_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-ISSUERSERIAL-NODE:CAPS" title="XMLSEC_X509DATA_ISSUERSERIAL_NODE">XMLSEC_X509DATA_ISSUERSERIAL_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-SKI-NODE:CAPS">XMLSEC_X509DATA_SKI_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-SKI-NODE:CAPS" title="XMLSEC_X509DATA_SKI_NODE">XMLSEC_X509DATA_SKI_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-CRL-NODE:CAPS">XMLSEC_X509DATA_CRL_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-CRL-NODE:CAPS" title="XMLSEC_X509DATA_CRL_NODE">XMLSEC_X509DATA_CRL_NODE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-x509.html#XMLSEC-X509DATA-DEFAULT:CAPS">XMLSEC_X509DATA_DEFAULT</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-x509.html#XMLSEC-X509DATA-DEFAULT:CAPS" title="XMLSEC_X509DATA_DEFAULT">XMLSEC_X509DATA_DEFAULT</a></td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect1">
+<a name="xmlsec-x509.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-X509.DESCRIPTION"></a><h2>Description</h2>
-<p><a href="http://www.w3.org/TR/xmldsig-core/#sec-X509Certificate" target="_top">&lt;dsig:X509Certificate/&gt;</a> node parser.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-X509.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECX509DATAGETNODECONTENT"></a><h3>xmlSecX509DataGetNodeContent ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecX509DataGetNodeContent (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> deleteChildren</code>,
- <code class="PARAMETER"><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code>);</pre>
-<p>Reads the contents of &lt;dsig:X509Data/&gt; node and returns it as
+<div class="refsect1">
+<a name="xmlsec-x509.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecX509DataGetNodeContent"></a><h3>xmlSecX509DataGetNodeContent ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecX509DataGetNodeContent (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
+<p>Reads the contents of <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node and returns it as
a bits mask.</p>
-<div class="REFSECT3">
-<a name="AEN28859"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28861"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecX509DataGetNodeContent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;dsig:X509Data/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>deleteChildren</p></td>
-<td><p>the flag that indicates whether to remove node children after reading.</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>keyInfoCtx</p></td>
-<td><p>the pointer to &lt;dsig:KeyInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keyInfoCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN28882"></a><h4>Returns</h4>
-<p> the bit mask representing the &lt;dsig:X509Data/&gt; node content
+<div class="refsect3">
+<a name="xmlSecX509DataGetNodeContent.returns"></a><h4>Returns</h4>
+<p> the bit mask representing the <a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node content
or a negative value if an error occurs.</p>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-X509.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-x509.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
<a name="XMLSEC-X509DATA-CERTIFICATE-NODE:CAPS"></a><h3>XMLSEC_X509DATA_CERTIFICATE_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_CERTIFICATE_NODE 0x00000001</pre>
-<p>&lt;dsig:X509Certificate/&gt; node found or would be written back.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_CERTIFICATE_NODE 0x00000001
+</pre>
+<a class="ulink" href="" target="_top">&lt;dsig:X509Certificate/&gt;</a> node found or would be written back.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-X509DATA-SUBJECTNAME-NODE:CAPS"></a><h3>XMLSEC_X509DATA_SUBJECTNAME_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_SUBJECTNAME_NODE 0x00000002</pre>
-<p>&lt;dsig:X509SubjectName/&gt; node found or would be written back.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_SUBJECTNAME_NODE 0x00000002
+</pre>
+<a class="ulink" href="" target="_top">&lt;dsig:X509SubjectName/&gt;</a> node found or would be written back.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-X509DATA-ISSUERSERIAL-NODE:CAPS"></a><h3>XMLSEC_X509DATA_ISSUERSERIAL_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_ISSUERSERIAL_NODE 0x00000004</pre>
-<p>&lt;dsig:X509IssuerSerial/&gt; node found or would be written back.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_ISSUERSERIAL_NODE 0x00000004
+</pre>
+<a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial/&gt;</a> node found or would be written back.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-X509DATA-SKI-NODE:CAPS"></a><h3>XMLSEC_X509DATA_SKI_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_SKI_NODE 0x00000008</pre>
-<p>&lt;dsig:X509SKI/&gt; node found or would be written back.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_SKI_NODE 0x00000008
+</pre>
+<a class="ulink" href="" target="_top">&lt;dsig:X509SKI/&gt;</a> node found or would be written back.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-X509DATA-CRL-NODE:CAPS"></a><h3>XMLSEC_X509DATA_CRL_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_CRL_NODE 0x00000010</pre>
-<p>&lt;dsig:X509CRL/&gt; node found or would be written back.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_CRL_NODE 0x00000010
+</pre>
+<a class="ulink" href="" target="_top">&lt;dsig:X509CRL/&gt;</a> node found or would be written back.
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-X509DATA-DEFAULT:CAPS"></a><h3>XMLSEC_X509DATA_DEFAULT</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_X509DATA_DEFAULT</pre>
-<p>Default set of nodes to write in case of empty
-&lt;dsig:X509Data/&gt; node template.</p>
+<pre class="programlisting">#define XMLSEC_X509DATA_DEFAULT</pre>
+<p>Default set of nodes to write in case of empty</p>
+<a class="ulink" href="" target="_top">&lt;dsig:X509Data/&gt;</a> node template.
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-xmltree.html"><b>&lt;&lt;&lt; xmltree</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-openssl-ref.html"><b>XML Security Library for OpenSLL API Reference. &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-xmldsig.html b/docs/api/xmlsec-xmldsig.html
index 95e18a30..d08d61dd 100644
--- a/docs/api/xmlsec-xmldsig.html
+++ b/docs/api/xmlsec-xmldsig.html
@@ -1,812 +1,742 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>xmldsig</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="version" href="xmlsec-version.html">
-<link rel="NEXT" title="xmlenc" href="xmlsec-xmlenc.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xmldsig: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-version.html" title="version">
+<link rel="next" href="xmlsec-xmlenc.html" title="xmlenc">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-xmldsig.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-version.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-version.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-xmlenc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-XMLDSIG"></a>xmldsig</h1>
-<div class="REFNAMEDIV">
-<a name="AEN23872"></a><h2>Name</h2>xmldsig -- XML Digital Signature support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLDSIG.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN23877"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-xmldsig"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-xmldsig.top_of_page"></a>xmldsig</span></h2>
+<p>xmldsig — XML Digital Signature functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-xmldsig.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmldsig.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="RETURNVALUE">xmlSecDSigCtxPtr</span></a></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXCREATE">xmlSecDSigCtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="returnvalue">xmlSecDSigCtxPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxCreate" title="xmlSecDSigCtxCreate ()">xmlSecDSigCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDESTROY">xmlSecDSigCtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy" title="xmlSecDSigCtxDestroy ()">xmlSecDSigCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXINITIALIZE">xmlSecDSigCtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize" title="xmlSecDSigCtxInitialize ()">xmlSecDSigCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXFINALIZE">xmlSecDSigCtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize" title="xmlSecDSigCtxFinalize ()">xmlSecDSigCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXSIGN">xmlSecDSigCtxSign</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxSign" title="xmlSecDSigCtxSign ()">xmlSecDSigCtxSign</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXVERIFY">xmlSecDSigCtxVerify</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxVerify" title="xmlSecDSigCtxVerify ()">xmlSecDSigCtxVerify</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXENABLEREFERENCETRANSFORM">xmlSecDSigCtxEnableReferenceTransform</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxEnableReferenceTransform" title="xmlSecDSigCtxEnableReferenceTransform ()">xmlSecDSigCtxEnableReferenceTransform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXENABLESIGNATURETRANSFORM">xmlSecDSigCtxEnableSignatureTransform</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxEnableSignatureTransform" title="xmlSecDSigCtxEnableSignatureTransform ()">xmlSecDSigCtxEnableSignatureTransform</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXGETPRESIGNBUFFER">xmlSecDSigCtxGetPreSignBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxGetPreSignBuffer" title="xmlSecDSigCtxGetPreSignBuffer ()">xmlSecDSigCtxGetPreSignBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDEBUGDUMP">xmlSecDSigCtxDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDebugDump" title="xmlSecDSigCtxDebugDump ()">xmlSecDSigCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDEBUGXMLDUMP">xmlSecDSigCtxDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDebugXmlDump" title="xmlSecDSigCtxDebugXmlDump ()">xmlSecDSigCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="RETURNVALUE">xmlSecDSigReferenceCtxPtr</span></a></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXCREATE">xmlSecDSigReferenceCtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="returnvalue">xmlSecDSigReferenceCtxPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxCreate" title="xmlSecDSigReferenceCtxCreate ()">xmlSecDSigReferenceCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDESTROY">xmlSecDSigReferenceCtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDestroy" title="xmlSecDSigReferenceCtxDestroy ()">xmlSecDSigReferenceCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXINITIALIZE">xmlSecDSigReferenceCtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxInitialize" title="xmlSecDSigReferenceCtxInitialize ()">xmlSecDSigReferenceCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXFINALIZE">xmlSecDSigReferenceCtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxFinalize" title="xmlSecDSigReferenceCtxFinalize ()">xmlSecDSigReferenceCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXPROCESSNODE">xmlSecDSigReferenceCtxProcessNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxProcessNode" title="xmlSecDSigReferenceCtxProcessNode ()">xmlSecDSigReferenceCtxProcessNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXGETPREDIGESTBUFFER">xmlSecDSigReferenceCtxGetPreDigestBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxGetPreDigestBuffer" title="xmlSecDSigReferenceCtxGetPreDigestBuffer ()">xmlSecDSigReferenceCtxGetPreDigestBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDEBUGDUMP">xmlSecDSigReferenceCtxDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugDump" title="xmlSecDSigReferenceCtxDebugDump ()">xmlSecDSigReferenceCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDEBUGXMLDUMP">xmlSecDSigReferenceCtxDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugXmlDump" title="xmlSecDSigReferenceCtxDebugXmlDump ()">xmlSecDSigReferenceCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecPtrListId</span></font></td>
-<td>
-<a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXLISTGETKLASS">xmlSecDSigReferenceCtxListGetKlass</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecPtrListId</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListGetKlass" title="xmlSecDSigReferenceCtxListGetKlass ()">xmlSecDSigReferenceCtxListGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLDSIG.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24022"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-xmldsig.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGSTATUS">xmlSecDSigStatus</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigStatus" title="enum xmlSecDSigStatus">xmlSecDSigStatus</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS:CAPS">XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS:CAPS" title="XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS">XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNATURE">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK:CAPS">XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK:CAPS" title="XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK">XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX">xmlSecDSigCtx</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx">xmlSecDSigCtx</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCEORIGIN">xmlSecDSigReferenceOrigin</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin" title="enum xmlSecDSigReferenceOrigin">xmlSecDSigReferenceOrigin</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX">xmlSecDSigReferenceCtx</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx">xmlSecDSigReferenceCtx</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXLISTID">xmlSecDSigReferenceCtxListId</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListId" title="xmlSecDSigReferenceCtxListId">xmlSecDSigReferenceCtxListId</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLDSIG.DESCRIPTION"></a><h2>Description</h2>
-<p>XML Digital Signature support.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLDSIG.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXCREATE"></a><h3>xmlSecDSigCtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="RETURNVALUE">xmlSecDSigCtxPtr</span></a>
-xmlSecDSigCtxCreate (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Creates &lt;dsig:Signature/&gt; element processing context.
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmldsig.description"></a><h2>Description</h2>
+<p><a class="ulink" href="http://www.w3.org/TR/xmldsig-core/" target="_top">XML Digital Signature</a> implementation.</p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmldsig.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecDSigCtxCreate"></a><h3>xmlSecDSigCtxCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="returnvalue">xmlSecDSigCtxPtr</span></a>
+xmlSecDSigCtxCreate (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Creates <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> element processing context.
The caller is responsible for destroying returned object by calling
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXDESTROY"><span class="TYPE">xmlSecDSigCtxDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24083"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24085"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy" title="xmlSecDSigCtxDestroy ()"><span class="type">xmlSecDSigCtxDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN24094"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated context object or NULL if an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXDESTROY"></a><h3>xmlSecDSigCtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigCtxDestroy (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>);</pre>
-<p>Destroy context object created with <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXCREATE"><span class="TYPE">xmlSecDSigCtxCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24110"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24112"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigCtxDestroy"></a><h3>xmlSecDSigCtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>);</pre>
+<p>Destroy context object created with <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxCreate" title="xmlSecDSigCtxCreate ()"><span class="type">xmlSecDSigCtxCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXINITIALIZE"></a><h3>xmlSecDSigCtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigCtxInitialize (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Initializes &lt;dsig:Signature/&gt; element processing context.
+<div class="refsect2">
+<a name="xmlSecDSigCtxInitialize"></a><h3>xmlSecDSigCtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Initializes <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> element processing context.
The caller is responsible for cleaning up returned object by calling
-<a href="xmlsec-xmldsig.html#XMLSECDSIGCTXFINALIZE"><span class="TYPE">xmlSecDSigCtxFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24137"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24139"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize" title="xmlSecDSigCtxFinalize ()"><span class="type">xmlSecDSigCtxFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN24154"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXFINALIZE"></a><h3>xmlSecDSigCtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigCtxFinalize (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>);</pre>
-<p>Cleans up <code class="PARAMETER">dsigCtx</code>
- object initialized with <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXINITIALIZE"><span class="TYPE">xmlSecDSigCtxInitialize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24171"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24173"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigCtxFinalize"></a><h3>xmlSecDSigCtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>);</pre>
+<p>Cleans up <em class="parameter"><code>dsigCtx</code></em>
+ object initialized with <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize" title="xmlSecDSigCtxInitialize ()"><span class="type">xmlSecDSigCtxInitialize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXSIGN"></a><h3>xmlSecDSigCtxSign ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigCtxSign (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> tmpl</code>);</pre>
-<p>Signs the data as described in <code class="PARAMETER">tmpl</code>
+<div class="refsect2">
+<a name="xmlSecDSigCtxSign"></a><h3>xmlSecDSigCtxSign ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigCtxSign (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> tmpl</code></em>);</pre>
+<p>Signs the data as described in <em class="parameter"><code>tmpl</code></em>
node.</p>
-<div class="REFSECT3">
-<a name="AEN24197"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24199"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigCtxSign.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>tmpl</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; node with signature template.</p></td>
-<td> </td>
+<td class="parameter_name"><p>tmpl</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node with signature template.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24214"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxSign.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXVERIFY"></a><h3>xmlSecDSigCtxVerify ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigCtxVerify (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Vaidates signature in the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecDSigCtxVerify"></a><h3>xmlSecDSigCtxVerify ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigCtxVerify (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Validates signature in the <em class="parameter"><code>node</code></em>
. The verification result is returned
-in <font><span class="TYPE">status</span></font> member of the <code class="PARAMETER">dsigCtx</code>
+in <font><span class="type">status</span></font> member of the <em class="parameter"><code>dsigCtx</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN24235"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24237"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigCtxVerify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer with &lt;dsig:Signature/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer with <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN24252"></a><h4>Returns</h4>
-<p> 0 on success (check <font><span class="TYPE">status</span></font> member of <code class="PARAMETER">dsigCtx</code>
+<div class="refsect3">
+<a name="xmlSecDSigCtxVerify.returns"></a><h4>Returns</h4>
+<p> 0 on success (check <font><span class="type">status</span></font> member of <em class="parameter"><code>dsigCtx</code></em>
to get
signature verification result) or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXENABLEREFERENCETRANSFORM"></a><h3>xmlSecDSigCtxEnableReferenceTransform ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigCtxEnableReferenceTransform (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Enables <code class="PARAMETER">transformId</code>
- for &lt;dsig:Reference/&gt; elements processing.</p>
-<div class="REFSECT3">
-<a name="AEN24273"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24275"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigCtxEnableReferenceTransform"></a><h3>xmlSecDSigCtxEnableReferenceTransform ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigCtxEnableReferenceTransform (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Enables <em class="parameter"><code>transformId</code></em>
+ for <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> elements processing.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxEnableReferenceTransform.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24290"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxEnableReferenceTransform.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXENABLESIGNATURETRANSFORM"></a><h3>xmlSecDSigCtxEnableSignatureTransform ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigCtxEnableSignatureTransform (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlSecTransformId</span></font> transformId</code>);</pre>
-<p>Enables <code class="PARAMETER">transformId</code>
- for &lt;dsig:SignedInfo/&gt; element processing.</p>
-<div class="REFSECT3">
-<a name="AEN24308"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24310"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigCtxEnableSignatureTransform"></a><h3>xmlSecDSigCtxEnableSignatureTransform ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigCtxEnableSignatureTransform (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlSecTransformId</span></font> transformId</code></em>);</pre>
+<p>Enables <em class="parameter"><code>transformId</code></em>
+ for <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> element processing.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxEnableSignatureTransform.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>transformId</p></td>
-<td><p>the transform klass.</p></td>
-<td> </td>
+<td class="parameter_name"><p>transformId</p></td>
+<td class="parameter_description"><p>the transform klass.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN24325"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxEnableSignatureTransform.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXGETPRESIGNBUFFER"></a><h3>xmlSecDSigCtxGetPreSignBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
-xmlSecDSigCtxGetPreSignBuffer (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>);</pre>
-<p>Gets pointer to the buffer with serialized &lt;dsig:SignedInfo/&gt; element
+<div class="refsect2">
+<a name="xmlSecDSigCtxGetPreSignBuffer"></a><h3>xmlSecDSigCtxGetPreSignBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+xmlSecDSigCtxGetPreSignBuffer (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>);</pre>
+<p>Gets pointer to the buffer with serialized <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> element
just before signature claculation (valid if and only if
-<a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</span></a> context flag is set.</p>
-<div class="REFSECT3">
-<a name="AEN24341"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24343"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNATURE"><span class="type">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</span></a> context flag is set.</p>
+<div class="refsect3">
+<a name="xmlSecDSigCtxGetPreSignBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24352"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigCtxGetPreSignBuffer.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXDEBUGDUMP"></a><h3>xmlSecDSigCtxDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigCtxDebugDump (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the debug information about <code class="PARAMETER">dsigCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecDSigCtxDebugDump"></a><h3>xmlSecDSigCtxDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the debug information about <em class="parameter"><code>dsigCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN24371"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24373"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigCtxDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTXDEBUGXMLDUMP"></a><h3>xmlSecDSigCtxDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the debug information about <code class="PARAMETER">dsigCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecDSigCtxDebugXmlDump"></a><h3>xmlSecDSigCtxDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the debug information about <em class="parameter"><code>dsigCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN24404"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24406"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXCREATE"></a><h3>xmlSecDSigReferenceCtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="RETURNVALUE">xmlSecDSigReferenceCtxPtr</span></a>
-xmlSecDSigReferenceCtxCreate (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCEORIGIN"><span class="TYPE">xmlSecDSigReferenceOrigin</span></a> origin</code>);</pre>
-<p>Creates new &lt;dsig:Reference/&gt; element processing context. Caller is responsible
-for destroying the returned context by calling <a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXDESTROY"><span class="TYPE">xmlSecDSigReferenceCtxDestroy</span></a>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxCreate"></a><h3>xmlSecDSigReferenceCtxCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="returnvalue">xmlSecDSigReferenceCtxPtr</span></a>
+xmlSecDSigReferenceCtxCreate (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin" title="enum xmlSecDSigReferenceOrigin"><span class="type">xmlSecDSigReferenceOrigin</span></a> origin</code></em>);</pre>
+<p>Creates new <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context. Caller is responsible
+for destroying the returned context by calling <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDestroy" title="xmlSecDSigReferenceCtxDestroy ()"><span class="type">xmlSecDSigReferenceCtxDestroy</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN24437"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24439"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to parent &lt;dsig:Signature/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to parent <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>origin</p></td>
-<td><p>the reference origin (&lt;dsig:SignedInfo/&gt; or &lt;dsig:Manifest/&gt; node).</p></td>
-<td> </td>
+<td class="parameter_name"><p>origin</p></td>
+<td class="parameter_description"><p>the reference origin (<a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> or <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24454"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly created context or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXDESTROY"></a><h3>xmlSecDSigReferenceCtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigReferenceCtxDestroy (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>);</pre>
-<p>Destroy context object created with <a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXCREATE"><span class="TYPE">xmlSecDSigReferenceCtxCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24470"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24472"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxDestroy"></a><h3>xmlSecDSigReferenceCtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigReferenceCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>);</pre>
+<p>Destroy context object created with <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxCreate" title="xmlSecDSigReferenceCtxCreate ()"><span class="type">xmlSecDSigReferenceCtxCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXINITIALIZE"></a><h3>xmlSecDSigReferenceCtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigReferenceCtxInitialize (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> dsigCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCEORIGIN"><span class="TYPE">xmlSecDSigReferenceOrigin</span></a> origin</code>);</pre>
-<p>Initializes new &lt;dsig:Reference/&gt; element processing context. Caller is responsible
-for cleaning up the returned context by calling <a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXFINALIZE"><span class="TYPE">xmlSecDSigReferenceCtxFinalize</span></a>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxInitialize"></a><h3>xmlSecDSigReferenceCtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigReferenceCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> dsigCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin" title="enum xmlSecDSigReferenceOrigin"><span class="type">xmlSecDSigReferenceOrigin</span></a> origin</code></em>);</pre>
+<p>Initializes new <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context. Caller is responsible
+for cleaning up the returned context by calling <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxFinalize" title="xmlSecDSigReferenceCtxFinalize ()"><span class="type">xmlSecDSigReferenceCtxFinalize</span></a>
function.</p>
-<div class="REFSECT3">
-<a name="AEN24500"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24502"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dsigCtx</p></td>
-<td><p>the pointer to parent &lt;dsig:Signature/&gt; node processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigCtx</p></td>
+<td class="parameter_description"><p>the pointer to parent <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>origin</p></td>
-<td><p>the reference origin (&lt;dsig:SignedInfo/&gt; or &lt;dsig:Manifest/&gt; node).</p></td>
-<td> </td>
+<td class="parameter_name"><p>origin</p></td>
+<td class="parameter_description"><p>the reference origin (<a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> or <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24523"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on succes or aa negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXFINALIZE"></a><h3>xmlSecDSigReferenceCtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigReferenceCtxFinalize (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>);</pre>
-<p>Cleans up context object created with <a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTXINITIALIZE"><span class="TYPE">xmlSecDSigReferenceCtxInitialize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN24539"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24541"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxFinalize"></a><h3>xmlSecDSigReferenceCtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigReferenceCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>);</pre>
+<p>Cleans up context object created with <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxInitialize" title="xmlSecDSigReferenceCtxInitialize ()"><span class="type">xmlSecDSigReferenceCtxInitialize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXPROCESSNODE"></a><h3>xmlSecDSigReferenceCtxProcessNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecDSigReferenceCtxProcessNode (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>The Reference Element (http://www.w3.org/TR/xmldsig-core/<font><span class="TYPE">sec-Reference</span></font>)</p>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxProcessNode"></a><h3>xmlSecDSigReferenceCtxProcessNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecDSigReferenceCtxProcessNode (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>The Reference Element (http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-Reference</span></font>)</p>
<p>Reference is an element that may occur one or more times. It specifies
a digest algorithm and digest value, and optionally an identifier of the
object being signed, the type of the object, and/or a list of transforms
@@ -817,221 +747,216 @@ data. For example, while this specification makes no requirements over
external data, an application may wish to signal that the referent is a
Manifest. An optional ID attribute permits a Reference to be referenced
from elsewhere.</p>
-<div class="REFSECT3">
-<a name="AEN24567"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24569"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxProcessNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN24584"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxProcessNode.returns"></a><h4>Returns</h4>
<p> 0 on succes or aa negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXGETPREDIGESTBUFFER"></a><h3>xmlSecDSigReferenceCtxGetPreDigestBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxGetPreDigestBuffer"></a><h3>xmlSecDSigReferenceCtxGetPreDigestBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
xmlSecDSigReferenceCtxGetPreDigestBuffer
- (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>);</pre>
-<p>Gets the results of &lt;dsig:Reference/&gt; node processing just before digesting
-(valid only if <a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</span></a> or
-<a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</span></a> flas of signature context
+ (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>);</pre>
+<p>Gets the results of <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node processing just before digesting
+(valid only if <a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES"><span class="type">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</span></a> or
+<a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES"><span class="type">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</span></a> flas of signature context
is set).</p>
-<div class="REFSECT3">
-<a name="AEN24602"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24604"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxGetPreDigestBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN24613"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxGetPreDigestBuffer.returns"></a><h4>Returns</h4>
<p> pointer to the buffer or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXDEBUGDUMP"></a><h3>xmlSecDSigReferenceCtxDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigReferenceCtxDebugDump (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">dsigRefCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxDebugDump"></a><h3>xmlSecDSigReferenceCtxDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigReferenceCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>dsigRefCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN24632"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24634"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXDEBUGXMLDUMP"></a><h3>xmlSecDSigReferenceCtxDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecDSigReferenceCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCECTX"><span class="TYPE">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">dsigRefCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxDebugXmlDump"></a><h3>xmlSecDSigReferenceCtxDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecDSigReferenceCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx" title="struct xmlSecDSigReferenceCtx"><span class="type">xmlSecDSigReferenceCtxPtr</span></a> dsigRefCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>dsigRefCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
in output format.</p>
-<div class="REFSECT3">
-<a name="AEN24665"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24667"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dsigRefCtx</p></td>
-<td><p>the pointer to &lt;dsig:Reference/&gt; element processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dsigRefCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXLISTGETKLASS"></a><h3>xmlSecDSigReferenceCtxListGetKlass ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecPtrListId</span></font>
-xmlSecDSigReferenceCtxListGetKlass (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>The &lt;dsig:Reference/&gt; element processing contexts list klass.</p>
-<div class="REFSECT3">
-<a name="AEN24692"></a><h4>Returns</h4>
-<p> &lt;dsig:Reference/&gt; element processing context list klass.</p>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxListGetKlass"></a><h3>xmlSecDSigReferenceCtxListGetKlass ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecPtrListId</span></font>
+xmlSecDSigReferenceCtxListGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing contexts list klass.</p>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtxListGetKlass.returns"></a><h4>Returns</h4>
+<a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> element processing context list klass.
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLDSIG.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECDSIGSTATUS"></a><h3>enum xmlSecDSigStatus</h3>
+<div class="refsect1">
+<a name="xmlsec-xmldsig.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecDSigStatus"></a><h3>enum xmlSecDSigStatus</h3>
<p>XML Digital signature processing status.</p>
-<div class="REFSECT3">
-<a name="AEN24702"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24704"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigStatus.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecDSigStatusUnknown</p></td>
-<td><p>the status is unknown.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecDSigStatusUnknown"></a>xmlSecDSigStatusUnknown</p></td>
+<td class="enum_member_description"><p>the status is unknown.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecDSigStatusSucceeded</p></td>
-<td><p>the processing succeeded.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecDSigStatusSucceeded"></a>xmlSecDSigStatusSucceeded</p></td>
+<td class="enum_member_description"><p>the processing succeeded.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecDSigStatusInvalid</p></td>
-<td><p>the processing failed.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecDSigStatusInvalid"></a>xmlSecDSigStatusInvalid</p></td>
+<td class="enum_member_description"><p>the processing failed.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS:CAPS"></a><h3>XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS 0x00000001</pre>
-<p>If this flag is set then &lt;dsig:Manifests/&gt; nodes will not be processed.</p>
+<pre class="programlisting">#define XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS 0x00000001
+</pre>
+<p>If this flag is set then <a class="ulink" href="" target="_top">&lt;dsig:Manifests/&gt;</a> nodes will not be processed.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS"></a><h3>XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES 0x00000002</pre>
-<p>If this flag is set then pre-digest buffer for &lt;dsig:Reference/&gt; child
-of &lt;dsig:KeyInfo/&gt; element will be stored in <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtx</span></a>.</p>
+<pre class="programlisting">#define XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES 0x00000002
+</pre>
+<p>If this flag is set then pre-digest buffer for <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> child
+of <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element will be stored in <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtx</span></a>.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS"></a><h3>XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES 0x00000004</pre>
-<p>If this flag is set then pre-digest buffer for &lt;dsig:Reference/&gt; child
-of &lt;dsig:Manifest/&gt; element will be stored in <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtx</span></a>.</p>
+<pre class="programlisting">#define XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES 0x00000004
+</pre>
+<p>If this flag is set then pre-digest buffer for <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> child
+of <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> element will be stored in <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtx</span></a>.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS"></a><h3>XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_DSIG_FLAGS_STORE_SIGNATURE 0x00000008</pre>
-<p>If this flag is set then pre-signature buffer for &lt;dsig:SignedInfo/&gt;
-element processing will be stored in <a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtx</span></a>.</p>
+<pre class="programlisting">#define XMLSEC_DSIG_FLAGS_STORE_SIGNATURE 0x00000008
+</pre>
+<p>If this flag is set then pre-signature buffer for <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a>
+element processing will be stored in <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtx</span></a>.</p>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK:CAPS"></a><h3>XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK 0x00000010</pre>
+<pre class="programlisting">#define XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK 0x00000010
+</pre>
<p>If this flag is set then URI ID references are resolved directly
without using XPointers. This allows one to sign/verify Visa3D
documents that don't follow XML, XPointer and XML DSig specifications.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGCTX"></a><h3>struct xmlSecDSigCtx</h3>
-<pre class="PROGRAMLISTING">struct xmlSecDSigCtx {
+<div class="refsect2">
+<a name="xmlSecDSigCtx"></a><h3>struct xmlSecDSigCtx</h3>
+<pre class="programlisting">struct xmlSecDSigCtx {
/* these data user can set before performing the operation */
void* userData;
unsigned int flags;
@@ -1062,186 +987,183 @@ documents that don't follow XML, XPointer and XML DSig specifications.</p>
/* reserved for future */
void* reserved0;
void* reserved1;
-};</pre>
+};
+</pre>
<p>XML DSig processing context.</p>
-<div class="REFSECT3">
-<a name="AEN24767"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN24769"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecDSigCtx.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">userData</code>;</p></td>
-<td><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigCtx.userData"></a>userData</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
never touches this).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags</code>;</p></td>
-<td><p>the XML Digital Signature processing flags.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.flags"></a>flags</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML Digital Signature processing flags.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags2</code>;</p></td>
-<td><p>the XML Digital Signature processing flags.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.flags2"></a>flags2</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML Digital Signature processing flags.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> <code class="STRUCTFIELD">keyInfoReadCtx</code>;</p></td>
-<td><p>the reading key context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.keyInfoReadCtx"></a>keyInfoReadCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the reading key context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> <code class="STRUCTFIELD">keyInfoWriteCtx</code>;</p></td>
-<td><p>the writing key context (not used for signature verification).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.keyInfoWriteCtx"></a>keyInfoWriteCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the writing key context (not used for signature verification).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtx</span></a> <code class="STRUCTFIELD">transformCtx</code>;</p></td>
-<td><p>the &lt;dsig:SignedInfo/&gt; node processing context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtx</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.transformCtx"></a>transformCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> node processing context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPE"><span class="TYPE">xmlSecTransformUriType</span></a> <code class="STRUCTFIELD">enabledReferenceUris</code>;</p></td>
-<td><p>the URI types allowed for &lt;dsig:Reference/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformUriType" title="xmlSecTransformUriType"><span class="type">xmlSecTransformUriType</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.enabledReferenceUris"></a>enabledReferenceUris</code></em>;</p></td>
+<td class="struct_member_description"><p>the URI types allowed for <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrListPtr</span></a> <code class="STRUCTFIELD">enabledReferenceTransforms</code>;</p></td>
-<td><p>the list of transforms allowed in &lt;dsig:Reference/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrListPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.enabledReferenceTransforms"></a>enabledReferenceTransforms</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of transforms allowed in <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTXPREEXECUTECALLBACK"><span class="TYPE">xmlSecTransformCtxPreExecuteCallback</span></a> <code class="STRUCTFIELD">referencePreExecuteCallback</code>;</p></td>
-<td><p>the callback for &lt;dsig:Reference/&gt; node processing.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtxPreExecuteCallback" title="xmlSecTransformCtxPreExecuteCallback ()"><span class="type">xmlSecTransformCtxPreExecuteCallback</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.referencePreExecuteCallback"></a>referencePreExecuteCallback</code></em>;</p></td>
+<td class="struct_member_description"><p>the callback for <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node processing.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlSecTransformId</span></font> <code class="STRUCTFIELD">defSignMethodId</code>;</p></td>
-<td><p>the default signing method klass.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecTransformId</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.defSignMethodId"></a>defSignMethodId</code></em>;</p></td>
+<td class="struct_member_description"><p>the default signing method klass.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlSecTransformId</span></font> <code class="STRUCTFIELD">defC14NMethodId</code>;</p></td>
-<td><p>the default c14n method klass.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecTransformId</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.defC14NMethodId"></a>defC14NMethodId</code></em>;</p></td>
+<td class="struct_member_description"><p>the default c14n method klass.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlSecTransformId</span></font> <code class="STRUCTFIELD">defDigestMethodId</code>;</p></td>
-<td><p>the default digest method klass.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecTransformId</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.defDigestMethodId"></a>defDigestMethodId</code></em>;</p></td>
+<td class="struct_member_description"><p>the default digest method klass.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> <code class="STRUCTFIELD">signKey</code>;</p></td>
-<td><p>the signature key; application may set <font><span class="TYPE">signKey</span></font>
-before calling <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXSIGN"><span class="TYPE">xmlSecDSigCtxSign</span></a> or <a href="xmlsec-xmldsig.html#XMLSECDSIGCTXVERIFY"><span class="TYPE">xmlSecDSigCtxVerify</span></a>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.signKey"></a>signKey</code></em>;</p></td>
+<td class="struct_member_description"><p>the signature key; application may set <font><span class="type">signKey</span></font>
+before calling <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxSign" title="xmlSecDSigCtxSign ()"><span class="type">xmlSecDSigCtxSign</span></a> or <a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtxVerify" title="xmlSecDSigCtxVerify ()"><span class="type">xmlSecDSigCtxVerify</span></a>
functions.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMOPERATION"><span class="TYPE">xmlSecTransformOperation</span></a> <code class="STRUCTFIELD">operation</code>;</p></td>
-<td><p>the operation: sign or verify.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformOperation" title="enum xmlSecTransformOperation"><span class="type">xmlSecTransformOperation</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.operation"></a>operation</code></em>;</p></td>
+<td class="struct_member_description"><p>the operation: sign or verify.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> <code class="STRUCTFIELD">result</code>;</p></td>
-<td><p>the pointer to signature (not valid for signature verification).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.result"></a>result</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to signature (not valid for signature verification).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmldsig.html#XMLSECDSIGSTATUS"><span class="TYPE">xmlSecDSigStatus</span></a> <code class="STRUCTFIELD">status</code>;</p></td>
-<td><p>the &lt;dsig:Signatuire/&gt; processing status.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigStatus" title="enum xmlSecDSigStatus"><span class="type">xmlSecDSigStatus</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.status"></a>status</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing status.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">signMethod</code>;</p></td>
-<td><p>the pointer to signature transform.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.signMethod"></a>signMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to signature transform.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">c14nMethod</code>;</p></td>
-<td><p>the pointer to c14n transform.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.c14nMethod"></a>c14nMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to c14n transform.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">preSignMemBufMethod</code>;</p></td>
-<td><p>the pointer to binary buffer right before signature
-(valid only if <a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</span></a> flag is set).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.preSignMemBufMethod"></a>preSignMemBufMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to binary buffer right before signature
+(valid only if <a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNATURE"><span class="type">XMLSEC_DSIG_FLAGS_STORE_SIGNATURE</span></a> flag is set).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">signValueNode</code>;</p></td>
-<td><p>the pointer to &lt;dsig:SignatureValue/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecDSigCtx.signValueNode"></a>signValueNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:SignatureValue/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the pointer to Id attribute of &lt;dsig:Signature/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecDSigCtx.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to Id attribute of <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">signedInfoReferences</code>;</p></td>
-<td><p>the list of references in &lt;dsig:SignedInfo/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.signedInfoReferences"></a>signedInfoReferences</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of references in <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-list.html#XMLSECPTRLIST"><span class="TYPE">xmlSecPtrList</span></a> <code class="STRUCTFIELD">manifestReferences</code>;</p></td>
-<td><p>the list of references in &lt;dsig:Manifest/&gt; nodes.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecDSigCtx.manifestReferences"></a>manifestReferences</code></em>;</p></td>
+<td class="struct_member_description"><p>the list of references in <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> nodes.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigCtx.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigCtx.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCEORIGIN"></a><h3>enum xmlSecDSigReferenceOrigin</h3>
-<p>The possible &lt;dsig:Reference/&gt; node locations: in the &lt;dsig:SignedInfo/&gt;
-node or in the &lt;dsig:Manifest/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN25010"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25012"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecDSigReferenceOrigin"></a><h3>enum xmlSecDSigReferenceOrigin</h3>
+<p>The possible <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node locations: in the <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a>
+node or in the <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceOrigin.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecDSigReferenceOriginSignedInfo</p></td>
-<td><p>reference in &lt;dsig:SignedInfo&gt; node.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecDSigReferenceOriginSignedInfo"></a>xmlSecDSigReferenceOriginSignedInfo</p></td>
+<td class="enum_member_description"><p>reference in <a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> node.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecDSigReferenceOriginManifest</p></td>
-<td><p>reference &lt;dsig:Manifest&gt; node.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecDSigReferenceOriginManifest"></a>xmlSecDSigReferenceOriginManifest</p></td>
+<td class="enum_member_description"><p>reference <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a> node.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTX"></a><h3>struct xmlSecDSigReferenceCtx</h3>
-<pre class="PROGRAMLISTING">struct xmlSecDSigReferenceCtx {
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtx"></a><h3>struct xmlSecDSigReferenceCtx</h3>
+<pre class="programlisting">struct xmlSecDSigReferenceCtx {
void* userData;
xmlSecDSigCtxPtr dsigCtx;
xmlSecDSigReferenceOrigin origin;
@@ -1258,103 +1180,100 @@ node or in the &lt;dsig:Manifest/&gt; node.</p>
/* reserved for future */
void* reserved0;
void* reserved1;
-};</pre>
-<p>The &lt;dsig:Reference/&gt; processing context.</p>
-<div class="REFSECT3">
-<a name="AEN25033"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25035"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+};
+</pre>
+<p>The <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> processing context.</p>
+<div class="refsect3">
+<a name="xmlSecDSigReferenceCtx.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">userData</code>;</p></td>
-<td><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.userData"></a>userData</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
never touches this).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmldsig.html#XMLSECDSIGCTX"><span class="TYPE">xmlSecDSigCtxPtr</span></a> <code class="STRUCTFIELD">dsigCtx</code>;</p></td>
-<td><p>the pointer to "parent" &lt;dsig:Signature/&gt; processing context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigCtx" title="struct xmlSecDSigCtx"><span class="type">xmlSecDSigCtxPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.dsigCtx"></a>dsigCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to "parent" <a class="ulink" href="" target="_top">&lt;dsig:Signature/&gt;</a> processing context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmldsig.html#XMLSECDSIGREFERENCEORIGIN"><span class="TYPE">xmlSecDSigReferenceOrigin</span></a> <code class="STRUCTFIELD">origin</code>;</p></td>
-<td><p>the signature origin (&lt;dsig:SignedInfo/&gt; or &lt;dsig:Manifest/&gt;).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin" title="enum xmlSecDSigReferenceOrigin"><span class="type">xmlSecDSigReferenceOrigin</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.origin"></a>origin</code></em>;</p></td>
+<td class="struct_member_description"><p>the signature origin (<a class="ulink" href="" target="_top">&lt;dsig:SignedInfo/&gt;</a> or <a class="ulink" href="" target="_top">&lt;dsig:Manifest/&gt;</a>).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtx</span></a> <code class="STRUCTFIELD">transformCtx</code>;</p></td>
-<td><p>the reference processing transforms context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtx</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.transformCtx"></a>transformCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the reference processing transforms context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">digestMethod</code>;</p></td>
-<td><p>the pointer to digest transform.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.digestMethod"></a>digestMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to digest transform.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> <code class="STRUCTFIELD">result</code>;</p></td>
-<td><p>the pointer to digest result.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.result"></a>result</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to digest result.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmldsig.html#XMLSECDSIGSTATUS"><span class="TYPE">xmlSecDSigStatus</span></a> <code class="STRUCTFIELD">status</code>;</p></td>
-<td><p>the reference processing status.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmldsig.html#xmlSecDSigStatus" title="enum xmlSecDSigStatus"><span class="type">xmlSecDSigStatus</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.status"></a>status</code></em>;</p></td>
+<td class="struct_member_description"><p>the reference processing status.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">preDigestMemBufMethod</code>;</p></td>
-<td><p>the pointer to binary buffer right before digest
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecDSigReferenceCtx.preDigestMemBufMethod"></a>preDigestMemBufMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to binary buffer right before digest
(valid only if either
-<a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</span></a> or
-<a href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS"><span class="TYPE">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</span></a> flags are set).</p></td>
-<td> </td>
+<a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES"><span class="type">XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES</span></a> or
+<a class="link" href="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS" title="XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES"><span class="type">XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES</span></a> flags are set).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the &lt;dsig:Reference/&gt; node ID attribute.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node ID attribute.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">uri</code>;</p></td>
-<td><p>the &lt;dsig:Reference/&gt; node URI attribute.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.uri"></a>uri</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node URI attribute.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">type</code>;</p></td>
-<td><p>the &lt;dsig:Reference/&gt; node Type attribute.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>the <a class="ulink" href="" target="_top">&lt;dsig:Reference/&gt;</a> node Type attribute.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved0</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.reserved0"></a>reserved0</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecDSigReferenceCtx.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECDSIGREFERENCECTXLISTID"></a><h3>xmlSecDSigReferenceCtxListId</h3>
-<pre class="PROGRAMLISTING">#define xmlSecDSigReferenceCtxListId</pre>
+<div class="refsect2">
+<a name="xmlSecDSigReferenceCtxListId"></a><h3>xmlSecDSigReferenceCtxListId</h3>
+<pre class="programlisting">#define xmlSecDSigReferenceCtxListId</pre>
<p>The references list klass.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-version.html"><b>&lt;&lt;&lt; version</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-xmlenc.html"><b>xmlenc &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-xmlenc.html b/docs/api/xmlsec-xmlenc.html
index 3a3fdd41..90056bc3 100644
--- a/docs/api/xmlsec-xmlenc.html
+++ b/docs/api/xmlsec-xmlenc.html
@@ -1,744 +1,663 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>xmlenc</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="xmldsig" href="xmlsec-xmldsig.html">
-<link rel="NEXT" title="xmlsec" href="xmlsec-xmlsec.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xmlenc: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-xmldsig.html" title="xmldsig">
+<link rel="next" href="xmlsec-xmlsec.html" title="xmlsec">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-xmlenc.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-xmldsig.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-xmldsig.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-xmlsec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-XMLENC"></a>xmlenc</h1>
-<div class="REFNAMEDIV">
-<a name="AEN25170"></a><h2>Name</h2>xmlenc -- XML Encryption support.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLENC.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25175"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-xmlenc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-xmlenc.top_of_page"></a>xmlenc</span></h2>
+<p>xmlenc — XML Encryption support.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-xmlenc.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmlenc.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="RETURNVALUE">xmlSecEncCtxPtr</span></a></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXCREATE">xmlSecEncCtxCreate</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="returnvalue">xmlSecEncCtxPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCreate" title="xmlSecEncCtxCreate ()">xmlSecEncCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDESTROY">xmlSecEncCtxDestroy</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDestroy" title="xmlSecEncCtxDestroy ()">xmlSecEncCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXINITIALIZE">xmlSecEncCtxInitialize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxInitialize" title="xmlSecEncCtxInitialize ()">xmlSecEncCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXFINALIZE">xmlSecEncCtxFinalize</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxFinalize" title="xmlSecEncCtxFinalize ()">xmlSecEncCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXCOPYUSERPREF">xmlSecEncCtxCopyUserPref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCopyUserPref" title="xmlSecEncCtxCopyUserPref ()">xmlSecEncCtxCopyUserPref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXRESET">xmlSecEncCtxReset</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxReset" title="xmlSecEncCtxReset ()">xmlSecEncCtxReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXBINARYENCRYPT">xmlSecEncCtxBinaryEncrypt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxBinaryEncrypt" title="xmlSecEncCtxBinaryEncrypt ()">xmlSecEncCtxBinaryEncrypt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXXMLENCRYPT">xmlSecEncCtxXmlEncrypt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxXmlEncrypt" title="xmlSecEncCtxXmlEncrypt ()">xmlSecEncCtxXmlEncrypt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXURIENCRYPT">xmlSecEncCtxUriEncrypt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxUriEncrypt" title="xmlSecEncCtxUriEncrypt ()">xmlSecEncCtxUriEncrypt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDECRYPT">xmlSecEncCtxDecrypt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDecrypt" title="xmlSecEncCtxDecrypt ()">xmlSecEncCtxDecrypt</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDECRYPTTOBUFFER">xmlSecEncCtxDecryptToBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDecryptToBuffer" title="xmlSecEncCtxDecryptToBuffer ()">xmlSecEncCtxDecryptToBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDEBUGDUMP">xmlSecEncCtxDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDebugDump" title="xmlSecEncCtxDebugDump ()">xmlSecEncCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDEBUGXMLDUMP">xmlSecEncCtxDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDebugXmlDump" title="xmlSecEncCtxDebugXmlDump ()">xmlSecEncCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLENC.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25271"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-xmlenc.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-xmlenc.html#XMLENCCTXMODE">xmlEncCtxMode</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlenc.html#xmlEncCtxMode" title="enum xmlEncCtxMode">xmlEncCtxMode</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlenc.html#XMLSEC-ENC-RETURN-REPLACED-NODE:CAPS">XMLSEC_ENC_RETURN_REPLACED_NODE</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlenc.html#XMLSEC-ENC-RETURN-REPLACED-NODE:CAPS" title="XMLSEC_ENC_RETURN_REPLACED_NODE">XMLSEC_ENC_RETURN_REPLACED_NODE</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-xmlenc.html#XMLSECENCCTX">xmlSecEncCtx</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx">xmlSecEncCtx</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLENC.DESCRIPTION"></a><h2>Description</h2>
-<p>XML Encryption support.</p>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLENC.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXCREATE"></a><h3>xmlSecEncCtxCreate ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="RETURNVALUE">xmlSecEncCtxPtr</span></a>
-xmlSecEncCtxCreate (<code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Creates &lt;enc:EncryptedData/&gt; element processing context.
+</table></div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmlenc.description"></a><h2>Description</h2>
+<p><a class="ulink" href="http://www.w3.org/TR/xmlenc-core" target="_top">XML Encryption</a> implementation.</p>
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmlenc.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecEncCtxCreate"></a><h3>xmlSecEncCtxCreate ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="returnvalue">xmlSecEncCtxPtr</span></a>
+xmlSecEncCtxCreate (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Creates <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> element processing context.
The caller is responsible for destroying returned object by calling
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXDESTROY"><span class="TYPE">xmlSecEncCtxDestroy</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN25304"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25306"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxDestroy" title="xmlSecEncCtxDestroy ()"><span class="type">xmlSecEncCtxDestroy</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecEncCtxCreate.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN25315"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated context object or NULL if an error
occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXDESTROY"></a><h3>xmlSecEncCtxDestroy ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecEncCtxDestroy (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>);</pre>
-<p>Destroy context object created with <a href="xmlsec-xmlenc.html#XMLSECENCCTXCREATE"><span class="TYPE">xmlSecEncCtxCreate</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN25331"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25333"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecEncCtxDestroy"></a><h3>xmlSecEncCtxDestroy ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecEncCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>);</pre>
+<p>Destroy context object created with <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxCreate" title="xmlSecEncCtxCreate ()"><span class="type">xmlSecEncCtxCreate</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecEncCtxDestroy.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXINITIALIZE"></a><h3>xmlSecEncCtxInitialize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxInitialize (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><a href="xmlsec-keysmngr.html#XMLSECKEYSMNGR"><span class="TYPE">xmlSecKeysMngrPtr</span></a> keysMngr</code>);</pre>
-<p>Initializes &lt;enc:EncryptedData/&gt; element processing context.
+<div class="refsect2">
+<a name="xmlSecEncCtxInitialize"></a><h3>xmlSecEncCtxInitialize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
+<p>Initializes <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> element processing context.
The caller is responsible for cleaning up returned object by calling
-<a href="xmlsec-xmlenc.html#XMLSECENCCTXFINALIZE"><span class="TYPE">xmlSecEncCtxFinalize</span></a> function.</p>
-<div class="REFSECT3">
-<a name="AEN25358"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25360"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtxFinalize" title="xmlSecEncCtxFinalize ()"><span class="type">xmlSecEncCtxFinalize</span></a> function.</p>
+<div class="refsect3">
+<a name="xmlSecEncCtxInitialize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>keysMngr</p></td>
-<td><p>the pointer to keys manager.</p></td>
-<td> </td>
+<td class="parameter_name"><p>keysMngr</p></td>
+<td class="parameter_description"><p>the pointer to keys manager.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN25375"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXFINALIZE"></a><h3>xmlSecEncCtxFinalize ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecEncCtxFinalize (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>);</pre>
-<p>Cleans up <code class="PARAMETER">encCtx</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxFinalize"></a><h3>xmlSecEncCtxFinalize ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecEncCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>);</pre>
+<p>Cleans up <em class="parameter"><code>encCtx</code></em>
object.</p>
-<div class="REFSECT3">
-<a name="AEN25390"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25392"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxFinalize.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXCOPYUSERPREF"></a><h3>xmlSecEncCtxCopyUserPref ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxCopyUserPref (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> dst</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> src</code>);</pre>
-<p>Copies user preference from <code class="PARAMETER">src</code>
- context to <code class="PARAMETER">dst</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxCopyUserPref"></a><h3>xmlSecEncCtxCopyUserPref ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxCopyUserPref (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> dst</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> src</code></em>);</pre>
+<p>Copies user preference from <em class="parameter"><code>src</code></em>
+ context to <em class="parameter"><code>dst</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN25417"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25419"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxCopyUserPref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>dst</p></td>
-<td><p>the pointer to destination context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>dst</p></td>
+<td class="parameter_description"><p>the pointer to destination context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>src</p></td>
-<td><p>the pointer to source context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>the pointer to source context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN25434"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxCopyUserPref.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXRESET"></a><h3>xmlSecEncCtxReset ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecEncCtxReset (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>);</pre>
-<p>Resets <code class="PARAMETER">encCtx</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxReset"></a><h3>xmlSecEncCtxReset ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecEncCtxReset (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>);</pre>
+<p>Resets <em class="parameter"><code>encCtx</code></em>
object, user settings are not touched.</p>
-<div class="REFSECT3">
-<a name="AEN25449"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25451"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxReset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXBINARYENCRYPT"></a><h3>xmlSecEncCtxBinaryEncrypt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxBinaryEncrypt (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> tmpl</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *data</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> dataSize</code>);</pre>
-<p>Encrypts <code class="PARAMETER">data</code>
- according to template <code class="PARAMETER">tmpl</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxBinaryEncrypt"></a><h3>xmlSecEncCtxBinaryEncrypt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxBinaryEncrypt (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> tmpl</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *data</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> dataSize</code></em>);</pre>
+<p>Encrypts <em class="parameter"><code>data</code></em>
+ according to template <em class="parameter"><code>tmpl</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN25482"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25484"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxBinaryEncrypt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>tmpl</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; template node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>tmpl</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> template node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>data</p></td>
-<td><p>the pointer for binary buffer.</p></td>
-<td> </td>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>the pointer for binary buffer.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>dataSize</p></td>
-<td><p>the <code class="PARAMETER">data</code>
+<td class="parameter_name"><p>dataSize</p></td>
+<td class="parameter_description"><p>the <em class="parameter"><code>data</code></em>
buffer size.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN25512"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxBinaryEncrypt.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXXMLENCRYPT"></a><h3>xmlSecEncCtxXmlEncrypt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxXmlEncrypt (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> tmpl</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Encrypts <code class="PARAMETER">node</code>
- according to template <code class="PARAMETER">tmpl</code>
-. If requested, <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxXmlEncrypt"></a><h3>xmlSecEncCtxXmlEncrypt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxXmlEncrypt (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> tmpl</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Encrypts <em class="parameter"><code>node</code></em>
+ according to template <em class="parameter"><code>tmpl</code></em>
+. If requested, <em class="parameter"><code>node</code></em>
is replaced
-with result &lt;enc:EncryptedData/&gt; node.</p>
-<div class="REFSECT3">
-<a name="AEN25535"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25537"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+with result <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p>
+<div class="refsect3">
+<a name="xmlSecEncCtxXmlEncrypt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>tmpl</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; template node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>tmpl</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> template node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node for encryption.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node for encryption.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN25558"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxXmlEncrypt.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXURIENCRYPT"></a><h3>xmlSecEncCtxUriEncrypt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxUriEncrypt (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> tmpl</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *uri</code>);</pre>
-<p>Encrypts data from <code class="PARAMETER">uri</code>
- according to template <code class="PARAMETER">tmpl</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxUriEncrypt"></a><h3>xmlSecEncCtxUriEncrypt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxUriEncrypt (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> tmpl</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *uri</code></em>);</pre>
+<p>Encrypts data from <em class="parameter"><code>uri</code></em>
+ according to template <em class="parameter"><code>tmpl</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN25580"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25582"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxUriEncrypt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>tmpl</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; template node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>tmpl</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> template node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>uri</p></td>
-<td><p>the URI.</p></td>
-<td> </td>
+<td class="parameter_name"><p>uri</p></td>
+<td class="parameter_description"><p>the URI.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN25603"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxUriEncrypt.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXDECRYPT"></a><h3>xmlSecEncCtxDecrypt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecEncCtxDecrypt (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Decrypts <code class="PARAMETER">node</code>
- and if necessary replaces <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxDecrypt"></a><h3>xmlSecEncCtxDecrypt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecEncCtxDecrypt (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Decrypts <em class="parameter"><code>node</code></em>
+ and if necessary replaces <em class="parameter"><code>node</code></em>
with decrypted data.</p>
-<div class="REFSECT3">
-<a name="AEN25622"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25624"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxDecrypt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN25639"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxDecrypt.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXDECRYPTTOBUFFER"></a><h3>xmlSecEncCtxDecryptToBuffer ()</h3>
-<pre class="PROGRAMLISTING"><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="RETURNVALUE">xmlSecBufferPtr</span></a>
-xmlSecEncCtxDecryptToBuffer (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Decrypts <code class="PARAMETER">node</code>
- data to the <code class="PARAMETER">encCtx</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxDecryptToBuffer"></a><h3>xmlSecEncCtxDecryptToBuffer ()</h3>
+<pre class="programlisting"><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="returnvalue">xmlSecBufferPtr</span></a>
+xmlSecEncCtxDecryptToBuffer (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Decrypts <em class="parameter"><code>node</code></em>
+ data to the <em class="parameter"><code>encCtx</code></em>
buffer.</p>
-<div class="REFSECT3">
-<a name="AEN25658"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25660"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxDecryptToBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN25675"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecEncCtxDecryptToBuffer.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXDEBUGDUMP"></a><h3>xmlSecEncCtxDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecEncCtxDebugDump (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the debug information about <code class="PARAMETER">encCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxDebugDump"></a><h3>xmlSecEncCtxDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecEncCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the debug information about <em class="parameter"><code>encCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN25694"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25696"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTXDEBUGXMLDUMP"></a><h3>xmlSecEncCtxDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecEncCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtxPtr</span></a> encCtx</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints the debug information about <code class="PARAMETER">encCtx</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecEncCtxDebugXmlDump"></a><h3>xmlSecEncCtxDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecEncCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> encCtx</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints the debug information about <em class="parameter"><code>encCtx</code></em>
+ to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN25727"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25729"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecEncCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>encCtx</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt; processing context.</p></td>
-<td> </td>
+<td class="parameter_name"><p>encCtx</p></td>
+<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> processing context.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLENC.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLENCCTXMODE"></a><h3>enum xmlEncCtxMode</h3>
-<p>The <a href="xmlsec-xmlenc.html#XMLSECENCCTX"><span class="TYPE">xmlSecEncCtx</span></a> mode.</p>
-<div class="REFSECT3">
-<a name="AEN25753"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25755"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-xmlenc.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlEncCtxMode"></a><h3>enum xmlEncCtxMode</h3>
+<p>The <a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtx</span></a> mode.</p>
+<div class="refsect3">
+<a name="xmlEncCtxMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlEncCtxModeEncryptedData</p></td>
-<td><p>the &lt;enc:EncryptedData/&gt; element procesing.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlEncCtxModeEncryptedData"></a>xmlEncCtxModeEncryptedData</p></td>
+<td class="enum_member_description"><p>the <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a> element procesing.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlEncCtxModeEncryptedKey</p></td>
-<td><p>the &lt;enc:EncryptedKey/&gt; element processing.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlEncCtxModeEncryptedKey"></a>xmlEncCtxModeEncryptedKey</p></td>
+<td class="enum_member_description"><p>the <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> element processing.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
+<div class="refsect2">
<a name="XMLSEC-ENC-RETURN-REPLACED-NODE:CAPS"></a><h3>XMLSEC_ENC_RETURN_REPLACED_NODE</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_ENC_RETURN_REPLACED_NODE 0x00000001</pre>
+<pre class="programlisting">#define XMLSEC_ENC_RETURN_REPLACED_NODE 0x00000001
+</pre>
<p>If this flag is set, then the replaced node will be returned in the replacedNodeList</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECENCCTX"></a><h3>struct xmlSecEncCtx</h3>
-<pre class="PROGRAMLISTING">struct xmlSecEncCtx {
+<div class="refsect2">
+<a name="xmlSecEncCtx"></a><h3>struct xmlSecEncCtx</h3>
+<pre class="programlisting">struct xmlSecEncCtx {
/* these data user can set before performing the operation */
void* userData;
unsigned int flags;
@@ -773,167 +692,165 @@ xmlSecEncCtxDebugXmlDump (<code class="PARAMETER"><a href="xmlsec-xmlenc.html#XM
xmlNodePtr replacedNodeList; /* the pointer to the replaced node */
void* reserved1; /* reserved for future */
-};</pre>
-<p>XML Encrypiton context.</p>
-<div class="REFSECT3">
-<a name="AEN25782"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN25784"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+};
+</pre>
+<p>XML Encryption context.</p>
+<div class="refsect3">
+<a name="xmlSecEncCtx.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">userData</code>;</p></td>
-<td><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.userData"></a>userData</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto libraries
never touches this).</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags</code>;</p></td>
-<td><p>the XML Encryption processing flags.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.flags"></a>flags</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML Encryption processing flags.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>unsigned <font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">flags2</code>;</p></td>
-<td><p>the XML Encryption processing flags.</p></td>
-<td> </td>
+<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.flags2"></a>flags2</code></em>;</p></td>
+<td class="struct_member_description"><p>the XML Encryption processing flags.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmlenc.html#XMLENCCTXMODE"><span class="TYPE">xmlEncCtxMode</span></a> <code class="STRUCTFIELD">mode</code>;</p></td>
-<td><p>the mode.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlenc.html#xmlEncCtxMode" title="enum xmlEncCtxMode"><span class="type">xmlEncCtxMode</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.mode"></a>mode</code></em>;</p></td>
+<td class="struct_member_description"><p>the mode.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> <code class="STRUCTFIELD">keyInfoReadCtx</code>;</p></td>
-<td><p>the reading key context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.keyInfoReadCtx"></a>keyInfoReadCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the reading key context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keyinfo.html#XMLSECKEYINFOCTX"><span class="TYPE">xmlSecKeyInfoCtx</span></a> <code class="STRUCTFIELD">keyInfoWriteCtx</code>;</p></td>
-<td><p>the writing key context (not used for signature verification).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtx</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.keyInfoWriteCtx"></a>keyInfoWriteCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the writing key context (not used for signature verification).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMCTX"><span class="TYPE">xmlSecTransformCtx</span></a> <code class="STRUCTFIELD">transformCtx</code>;</p></td>
-<td><p>the transforms processing context.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtx</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.transformCtx"></a>transformCtx</code></em>;</p></td>
+<td class="struct_member_description"><p>the transforms processing context.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlSecTransformId</span></font> <code class="STRUCTFIELD">defEncMethodId</code>;</p></td>
-<td><p>the default encryption method (used if
-&lt;enc:EncryptionMethod/&gt; node is not present).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlSecTransformId</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.defEncMethodId"></a>defEncMethodId</code></em>;</p></td>
+<td class="struct_member_description">
+<p>the default encryption method (used if</p>
+<a class="ulink" href="" target="_top">&lt;enc:EncryptionMethod/&gt;</a> node is not present).</td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-keys.html#XMLSECKEY"><span class="TYPE">xmlSecKeyPtr</span></a> <code class="STRUCTFIELD">encKey</code>;</p></td>
-<td><p>the signature key; application may set <font><span class="TYPE">encKey</span></font>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.encKey"></a>encKey</code></em>;</p></td>
+<td class="struct_member_description"><p>the signature key; application may set <font><span class="type">encKey</span></font>
before calling encryption/decryption functions.</p></td>
-<td> </td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMOPERATION"><span class="TYPE">xmlSecTransformOperation</span></a> <code class="STRUCTFIELD">operation</code>;</p></td>
-<td><p>the operation: encrypt or decrypt.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformOperation" title="enum xmlSecTransformOperation"><span class="type">xmlSecTransformOperation</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.operation"></a>operation</code></em>;</p></td>
+<td class="struct_member_description"><p>the operation: encrypt or decrypt.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-buffer.html#XMLSECBUFFER"><span class="TYPE">xmlSecBufferPtr</span></a> <code class="STRUCTFIELD">result</code>;</p></td>
-<td><p>the pointer to signature (not valid for signature verification).</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-buffer.html#xmlSecBuffer" title="struct xmlSecBuffer"><span class="type">xmlSecBufferPtr</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.result"></a>result</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to signature (not valid for signature verification).</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">resultBase64Encoded</code>;</p></td>
-<td><p>the flag: if set then result in <font><span class="TYPE">result</span></font> is base64 encoded.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.resultBase64Encoded"></a>resultBase64Encoded</code></em>;</p></td>
+<td class="struct_member_description"><p>the flag: if set then result in <font><span class="type">result</span></font> is base64 encoded.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">resultReplaced</code>;</p></td>
-<td><p>the flag: if set then resulted &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node is added to the document.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.resultReplaced"></a>resultReplaced</code></em>;</p></td>
+<td class="struct_member_description"><p>the flag: if set then resulted <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node is added to the document.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-transforms.html#XMLSECTRANSFORM"><span class="TYPE">xmlSecTransformPtr</span></a> <code class="STRUCTFIELD">encMethod</code>;</p></td>
-<td><p>the pointer to encryption transform.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransform" title="struct xmlSecTransform"><span class="type">xmlSecTransformPtr</span></a> <em class="structfield"><code><a name="xmlSecEncCtx.encMethod"></a>encMethod</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to encryption transform.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">id</code>;</p></td>
-<td><p>the ID attribute of &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.id"></a>id</code></em>;</p></td>
+<td class="struct_member_description"><p>the ID attribute of <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">type</code>;</p></td>
-<td><p>the Type attribute of &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.type"></a>type</code></em>;</p></td>
+<td class="struct_member_description"><p>the Type attribute of <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">mimeType</code>;</p></td>
-<td><p>the MimeType attribute of &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.mimeType"></a>mimeType</code></em>;</p></td>
+<td class="struct_member_description"><p>the MimeType attribute of <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">encoding</code>;</p></td>
-<td><p>the Encoding attributeof &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.encoding"></a>encoding</code></em>;</p></td>
+<td class="struct_member_description"><p>the Encoding attributeof <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">recipient</code>;</p></td>
-<td><p>the Recipient attribute of &lt;enc:EncryptedKey/&gt; node..</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.recipient"></a>recipient</code></em>;</p></td>
+<td class="struct_member_description"><p>the Recipient attribute of <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node..</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">carriedKeyName</code>;</p></td>
-<td><p>the CarriedKeyName attribute of &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.carriedKeyName"></a>carriedKeyName</code></em>;</p></td>
+<td class="struct_member_description"><p>the CarriedKeyName attribute of <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">encDataNode</code>;</p></td>
-<td><p>the pointer to &lt;enc:EncryptedData/&gt;
-or &lt;enc:EncryptedKey/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.encDataNode"></a>encDataNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptedData/&gt;</a>
+or <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">encMethodNode</code>;</p></td>
-<td><p>the pointer to &lt;enc:EncryptionMethod/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.encMethodNode"></a>encMethodNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:EncryptionMethod/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">keyInfoNode</code>;</p></td>
-<td><p>the pointer to &lt;enc:KeyInfo/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.keyInfoNode"></a>keyInfoNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:KeyInfo/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">cipherValueNode</code>;</p></td>
-<td><p>the pointer to &lt;enc:CipherValue/&gt; node.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.cipherValueNode"></a>cipherValueNode</code></em>;</p></td>
+<td class="struct_member_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;enc:CipherValue/&gt;</a> node.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">xmlNodePtr</span></font> <code class="STRUCTFIELD">replacedNodeList</code>;</p></td>
-<td><p>the first node of the list of replaced nodes depending on the nodeReplacementMode</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">xmlNodePtr</span></font> <em class="structfield"><code><a name="xmlSecEncCtx.replacedNodeList"></a>replacedNodeList</code></em>;</p></td>
+<td class="struct_member_description"><p>the first node of the list of replaced nodes depending on the nodeReplacementMode</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">void</span></font> *<code class="STRUCTFIELD">reserved1</code>;</p></td>
-<td><p>reserved for the future.</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecEncCtx.reserved1"></a>reserved1</code></em>;</p></td>
+<td class="struct_member_description"><p>reserved for the future.</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-xmldsig.html"><b>&lt;&lt;&lt; xmldsig</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-xmlsec.html"><b>xmlsec &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-xmlsec.html b/docs/api/xmlsec-xmlsec.html
index ebd4d809..22c780e7 100644
--- a/docs/api/xmlsec-xmlsec.html
+++ b/docs/api/xmlsec-xmlsec.html
@@ -1,474 +1,334 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>xmlsec</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="xmlenc" href="xmlsec-xmlenc.html">
-<link rel="NEXT" title="xmltree" href="xmlsec-xmltree.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xmlsec: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-xmlenc.html" title="xmlenc">
+<link rel="next" href="xmlsec-xmltree.html" title="xmltree">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-xmlsec.description" class="shortcut">Description</a></span>
</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-xmlenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-xmlenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-xmltree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-XMLSEC"></a>xmlsec</h1>
-<div class="REFNAMEDIV">
-<a name="AEN26030"></a><h2>Name</h2>xmlsec -- Utility functions.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLSEC.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26035"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-xmlsec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-xmlsec.top_of_page"></a>xmlsec</span></h2>
+<p>xmlsec — Utility functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-xmlsec.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmlsec.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSEC-SIZE-BAD-CAST:CAPS">XMLSEC_SIZE_BAD_CAST</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#XMLSEC-SIZE-BAD-CAST:CAPS" title="XMLSEC_SIZE_BAD_CAST()">XMLSEC_SIZE_BAD_CAST</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSECINIT">xmlSecInit</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
</td>
-</tr>
-<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN">xmlSecShutdown</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecInit" title="xmlSecInit ()">xmlSecInit</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONEXACT">xmlSecCheckVersionExact</a></td>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecShutdown" title="xmlSecShutdown ()">xmlSecShutdown</a> <span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSION">xmlSecCheckVersion</a></td>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecGetDefaultCrypto" title="xmlSecGetDefaultCrypto ()">xmlSecGetDefaultCrypto</a> <span class="c_punctuation">()</span>
+</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONEXT">xmlSecCheckVersionExt</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecSetExternalEntityLoader" title="xmlSecSetExternalEntityLoader ()">xmlSecSetExternalEntityLoader</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSEC-PTR-TO-FUNC-IMPL:CAPS">XMLSEC_PTR_TO_FUNC_IMPL</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
-</td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionExact" title="xmlSecCheckVersionExact">xmlSecCheckVersionExact</a></td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSEC-PTR-TO-FUNC:CAPS">XMLSEC_PTR_TO_FUNC</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
-</td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersion" title="xmlSecCheckVersion">xmlSecCheckVersion</a></td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmlsec.html#XMLSEC-FUNC-TO-PTR:CAPS">XMLSEC_FUNC_TO_PTR</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionExt" title="xmlSecCheckVersionExt ()">xmlSecCheckVersionExt</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLSEC.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26089"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-xmlsec.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>typedef</td>
-<td><font>xmlSecPtr</font></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><font>xmlSecPtr</font></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize">xmlSecSize</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlsec.html#XMLSECSIZE">xmlSecSize</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte">xmlSecByte</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlsec.html#XMLSECBYTE">xmlSecByte</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#XMLSEC-CRYPTO:CAPS" title="XMLSEC_CRYPTO">XMLSEC_CRYPTO</a></td>
</tr>
<tr>
-<td>enum</td>
-<td><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONMODE">xmlSecCheckVersionMode</a></td>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#XMLSEC-DEPRECATED:CAPS" title="XMLSEC_DEPRECATED">XMLSEC_DEPRECATED</a></td>
</tr>
<tr>
-<td>#define</td>
-<td><a href="xmlsec-xmlsec.html#ATTRIBUTE-UNUSED:CAPS">ATTRIBUTE_UNUSED</a></td>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionMode" title="enum xmlSecCheckVersionMode">xmlSecCheckVersionMode</a></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLSEC.DESCRIPTION"></a><h2>Description</h2>
-<p>Utility functions.</p>
+<div class="refsect1">
+<a name="xmlsec-xmlsec.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLSEC.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
+<div class="refsect1">
+<a name="xmlsec-xmlsec.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
<a name="XMLSEC-SIZE-BAD-CAST:CAPS"></a><h3>XMLSEC_SIZE_BAD_CAST()</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_SIZE_BAD_CAST(val) ((xmlSecSize)(val))</pre>
+<pre class="programlisting">#define XMLSEC_SIZE_BAD_CAST(val) ((xmlSecSize)(val))
+</pre>
<p>Bad cast to xmlSecSize</p>
-<div class="REFSECT3">
-<a name="AEN26123"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26125"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="XMLSEC-SIZE-BAD-CAST.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>val</p></td>
-<td><p>the value to cast</p></td>
-<td> </td>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p>the value to cast</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECINIT"></a><h3>xmlSecInit ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecInit (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
+<div class="refsect2">
+<a name="xmlSecInit"></a><h3>xmlSecInit ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecInit (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Initializes XML Security Library. The depended libraries
(LibXML and LibXSLT) must be initialized before.</p>
-<div class="REFSECT3">
-<a name="AEN26144"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecInit.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSHUTDOWN"></a><h3>xmlSecShutdown ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecShutdown (<code class="PARAMETER"><span class="TYPE">void</span></code>);</pre>
-<p>Clean ups the XML Security Library.</p>
-<div class="REFSECT3">
-<a name="AEN26157"></a><h4>Returns</h4>
-<p> 0 on success or a negative value otherwise.</p>
+<div class="refsect2">
+<a name="xmlSecShutdown"></a><h3>xmlSecShutdown ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecShutdown (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets the default crypto engine ("openssl", "nss", etc.) for the XML Security Library.</p>
+<div class="refsect3">
+<a name="xmlSecShutdown.returns"></a><h4>Returns</h4>
+<p> the default crypto engine ("openssl", "nss", etc.).</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCHECKVERSIONEXACT"></a><h3>xmlSecCheckVersionExact</h3>
-<pre class="PROGRAMLISTING">#define xmlSecCheckVersionExact()</pre>
+<div class="refsect2">
+<a name="xmlSecGetDefaultCrypto"></a><h3>xmlSecGetDefaultCrypto ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+xmlSecGetDefaultCrypto (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecSetExternalEntityLoader"></a><h3>xmlSecSetExternalEntityLoader ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecSetExternalEntityLoader (<em class="parameter"><code><font><span class="type">xmlExternalEntityLoader</span></font> Param1</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecCheckVersionExact"></a><h3>xmlSecCheckVersionExact</h3>
+<pre class="programlisting">#define xmlSecCheckVersionExact()</pre>
<p>Macro. Returns 1 if the loaded xmlsec library version exactly matches
the one used to compile the caller, 0 if it does not or a negative
value if an error occurs.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCHECKVERSION"></a><h3>xmlSecCheckVersion</h3>
-<pre class="PROGRAMLISTING">#define xmlSecCheckVersion()</pre>
+<div class="refsect2">
+<a name="xmlSecCheckVersion"></a><h3>xmlSecCheckVersion</h3>
+<pre class="programlisting">#define xmlSecCheckVersion()</pre>
<p>Macro. Returns 1 if the loaded xmlsec library version ABI compatible with
the one used to compile the caller, 0 if it does not or a negative
value if an error occurs.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCHECKVERSIONEXT"></a><h3>xmlSecCheckVersionExt ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCheckVersionExt (<code class="PARAMETER"><font><span class="TYPE">int</span></font> major</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> minor</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> subminor</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECCHECKVERSIONMODE"><span class="TYPE">xmlSecCheckVersionMode</span></a> mode</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCheckVersionExt"></a><h3>xmlSecCheckVersionExt ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCheckVersionExt (<em class="parameter"><code><font><span class="type">int</span></font> major</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> minor</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> subminor</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecCheckVersionMode" title="enum xmlSecCheckVersionMode"><span class="type">xmlSecCheckVersionMode</span></a> mode</code></em>);</pre>
<p>Checks if the loaded version of xmlsec library could be used.</p>
-<div class="REFSECT3">
-<a name="AEN26192"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26194"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCheckVersionExt.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>major</p></td>
-<td><p>the major version number.</p></td>
-<td> </td>
+<td class="parameter_name"><p>major</p></td>
+<td class="parameter_description"><p>the major version number.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>minor</p></td>
-<td><p>the minor version number.</p></td>
-<td> </td>
+<td class="parameter_name"><p>minor</p></td>
+<td class="parameter_description"><p>the minor version number.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>subminor</p></td>
-<td><p>the subminor version number.</p></td>
-<td> </td>
+<td class="parameter_name"><p>subminor</p></td>
+<td class="parameter_description"><p>the subminor version number.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mode</p></td>
-<td><p>the version check mode.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>the version check mode.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN26221"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCheckVersionExt.returns"></a><h4>Returns</h4>
<p> 1 if the loaded xmlsec library version is OK to use
0 if it is not or a negative value if an error occurs.</p>
</div>
</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-PTR-TO-FUNC-IMPL:CAPS"></a><h3>XMLSEC_PTR_TO_FUNC_IMPL()</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_PTR_TO_FUNC_IMPL(func_type)</pre>
-<p>Macro declares helper functions to convert between "void *" pointer and
-function pointer.</p>
-<div class="REFSECT3">
-<a name="AEN26230"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26232"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody><tr>
-<td><p>func_type</p></td>
-<td><p>the function type.</p></td>
-<td> </td>
-</tr></tbody>
-</table>
-<p></p>
</div>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-PTR-TO-FUNC:CAPS"></a><h3>XMLSEC_PTR_TO_FUNC()</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_PTR_TO_FUNC(func_type, ptr)</pre>
-<p>Macro converts from "void*" pointer to "func_type" function pointer.</p>
-<div class="REFSECT3">
-<a name="AEN26247"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26249"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody>
-<tr>
-<td><p>func_type</p></td>
-<td><p>the function type.</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>ptr</p></td>
-<td><p>the "void*" pointer to be converted.</p></td>
-<td> </td>
-</tr>
-</tbody>
-</table>
-<p></p>
-</div>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSEC-FUNC-TO-PTR:CAPS"></a><h3>XMLSEC_FUNC_TO_PTR()</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_FUNC_TO_PTR(func_type, func)</pre>
-<p>Macro converts from "func_type" function pointer to "void*" pointer.</p>
-<div class="REFSECT3">
-<a name="AEN26270"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26272"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody>
-<tr>
-<td><p>func_type</p></td>
-<td><p>the function type.</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>func</p></td>
-<td><p>the "func_type" function pointer to be converted.</p></td>
-<td> </td>
-</tr>
-</tbody>
-</table>
-<p></p>
-</div>
-</div>
-</div>
-</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLSEC.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECPTR"></a><h3>xmlSecPtr</h3>
-<pre class="PROGRAMLISTING">typedef void* xmlSecPtr;</pre>
+<div class="refsect1">
+<a name="xmlsec-xmlsec.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecPtr"></a><h3>xmlSecPtr</h3>
+<pre class="programlisting">typedef void* xmlSecPtr;
+</pre>
<p>Void pointer.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECSIZE"></a><h3>xmlSecSize</h3>
-<pre class="PROGRAMLISTING">#define xmlSecSize unsigned int</pre>
+<div class="refsect2">
+<a name="xmlSecSize"></a><h3>xmlSecSize</h3>
+<pre class="programlisting">#define xmlSecSize unsigned int
+</pre>
<p>Size of something. Should be typedef instead of define
but it will break ABI (todo).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBYTE"></a><h3>xmlSecByte</h3>
-<pre class="PROGRAMLISTING">#define xmlSecByte unsigned char</pre>
+<div class="refsect2">
+<a name="xmlSecByte"></a><h3>xmlSecByte</h3>
+<pre class="programlisting">#define xmlSecByte unsigned char
+</pre>
<p>One byte. Should be typedef instead of define
but it will break ABI (todo).</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCHECKVERSIONMODE"></a><h3>enum xmlSecCheckVersionMode</h3>
+<div class="refsect2">
+<a name="XMLSEC-CRYPTO:CAPS"></a><h3>XMLSEC_CRYPTO</h3>
+<pre class="programlisting">#define XMLSEC_CRYPTO (xmlSecGetDefaultCrypto())
+</pre>
+<p>Macro. Deprecated. Defined for backward compatibility only. Do not use
+in your code and use <a class="link" href="xmlsec-xmlsec.html#xmlSecGetDefaultCrypto" title="xmlSecGetDefaultCrypto ()"><code class="function">xmlSecGetDefaultCrypto()</code></a> function instead.</p>
+<p>Returns the default crypto engine.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="XMLSEC-DEPRECATED:CAPS"></a><h3>XMLSEC_DEPRECATED</h3>
+<pre class="programlisting">#define XMLSEC_DEPRECATED __attribute__((deprecated))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecCheckVersionMode"></a><h3>enum xmlSecCheckVersionMode</h3>
<p>The xmlsec library version mode.</p>
-<div class="REFSECT3">
-<a name="AEN26312"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26314"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCheckVersionMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>xmlSecCheckVersionExactMatch</p></td>
-<td><p>the version should match exactly.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecCheckVersionExactMatch"></a>xmlSecCheckVersionExactMatch</p></td>
+<td class="enum_member_description"><p>the version should match exactly.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
-<td><p>xmlSecCheckVersionABICompatible</p></td>
-<td><p>the version should be ABI compatible.</p></td>
-<td> </td>
+<td class="enum_member_name"><p><a name="xmlSecCheckVersionABICompatible"></a>xmlSecCheckVersionABICompatible</p></td>
+<td class="enum_member_description"><p>the version should be ABI compatible.</p></td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
</div>
-<hr>
-<div class="REFSECT2">
-<a name="ATTRIBUTE-UNUSED:CAPS"></a><h3>ATTRIBUTE_UNUSED</h3>
-<pre class="PROGRAMLISTING">#define ATTRIBUTE_UNUSED</pre>
-<p>Macro used to signal to GCC unused function parameters</p>
</div>
-</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-xmlenc.html"><b>&lt;&lt;&lt; xmlenc</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-xmltree.html"><b>xmltree &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec-xmltree.html b/docs/api/xmlsec-xmltree.html
index 6ef85cf5..dcc98204 100644
--- a/docs/api/xmlsec-xmltree.html
+++ b/docs/api/xmlsec-xmltree.html
@@ -1,2526 +1,2720 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>xmltree</title>
-<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
-<link rel="HOME" title="XML Security Library Reference Manual" href="index.html">
-<link rel="UP" title="XML Security Core Library API Reference." href="xmlsec-ref.html">
-<link rel="PREVIOUS" title="xmlsec" href="xmlsec-xmlsec.html">
-<link rel="NEXT" title="x509" href="xmlsec-x509.html">
-<style type="text/css">.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
- padding: 0.5em;
-}
-.programlisting {
- background: #eeeeff;
- border: solid 1px #aaaaff;
- padding: 0.5em;
-}
-.variablelist {
- padding: 4px;
- margin-left: 3em;
-}
-.navigation {
- background: #ffeeee;
- border: solid 1px #ffaaaa;
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-.navigation a {
- color: #770000;
-}
-.navigation a:visited {
- color: #550000;
-}
-.navigation .title {
- font-size: 200%;
-}</style>
-<style type="text/css">
-table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
- width: 20em;
-}
-.synopsis, .classsynopsis {
- background: #eeeeee;
- border: solid 1px #aaaaaa;
-}
-.programlisting {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation {
- background: #eeeeee;
- border: solid 1px #000000;
-}
-.navigation a {
- color: initial;
-}
-.navigation a:visited {
- color: initial;
-}
-</style>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xmltree: XML Security Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="XML Security Library Reference Manual">
+<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
+<link rel="prev" href="xmlsec-xmlsec.html" title="xmlsec">
+<link rel="next" href="xmlsec-x509.html" title="x509">
+<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
</head>
-<body><table width="100%" valign="top"><tr valign="top">
-<td valign="top" align="left" width="210">
-<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
-<ul>
-<li><a href="../index.html">Home</a></li>
-<li><a href="../download.html">Download</a></li>
-<li><a href="../news.html">News</a></li>
-<li><a href="../documentation.html">Documentation</a></li>
-<ul>
-<li><a href="../faq.html">FAQ</a></li>
-<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
-<li><a href="../api/xmlsec-reference.html">API reference</a></li>
-<li><a href="../api/xmlsec-examples.html">Examples</a></li>
-</ul>
-<li><a href="../xmldsig.html">XML Digital Signature</a></li>
-<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
-<li><a href="../xmlenc.html">XML Encryption</a></li>
-<li><a href="../c14n.html">XML Canonicalization</a></li>
-<li><a href="../bugs.html">Reporting Bugs</a></li>
-<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
-<li><a href="../related.html">Related</a></li>
-<li><a href="../authors.html">Authors</a></li>
-</ul>
-<table width="100%">
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
-</tr>
-<tr>
-<td width="15"></td>
-<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
-</tr>
-<!--Links - start--><!--Links - end-->
-</table>
-</td>
-<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
-<table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td><a accesskey="p" href="xmlsec-xmlsec.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+ <a href="#xmlsec-xmltree.description" class="shortcut">Description</a></span>
+</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<th width="100%" align="center">XML Security Library Reference Manual</th>
+<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="xmlsec-xmlsec.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-x509.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<h1>
-<a name="XMLSEC-XMLTREE"></a>xmltree</h1>
-<div class="REFNAMEDIV">
-<a name="AEN26340"></a><h2>Name</h2>xmltree -- XML tree operations.</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLTREE.FUNCTIONS"></a><h2>Functions</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26345"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refentry">
+<a name="xmlsec-xmltree"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="xmlsec-xmltree.top_of_page"></a>xmltree</span></h2>
+<p>xmltree — XML tree functions.</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="xmlsec-xmltree.stability-level"></a><h2>Stability Level</h2>
+<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmltree.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECNODEGETNAME">xmlSecNodeGetName</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecNodeGetName" title="xmlSecNodeGetName()">xmlSecNodeGetName</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecGetDefaultLineFeed" title="xmlSecGetDefaultLineFeed ()">xmlSecGetDefaultLineFeed</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecSetDefaultLineFeed" title="xmlSecSetDefaultLineFeed ()">xmlSecSetDefaultLineFeed</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecGetNodeNsHref" title="xmlSecGetNodeNsHref ()">xmlSecGetNodeNsHref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>const <font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGETNODENSHREF">xmlSecGetNodeNsHref</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecCheckNodeName" title="xmlSecCheckNodeName ()">xmlSecCheckNodeName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECCHECKNODENAME">xmlSecCheckNodeName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecGetNextElementNode" title="xmlSecGetNextElementNode ()">xmlSecGetNextElementNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGETNEXTELEMENTNODE">xmlSecGetNextElementNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecFindSibling" title="xmlSecFindSibling ()">xmlSecFindSibling</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecFindChild" title="xmlSecFindChild ()">xmlSecFindChild</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecFindParent" title="xmlSecFindParent ()">xmlSecFindParent</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecFindNode" title="xmlSecFindNode ()">xmlSecFindNode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecAddChild" title="xmlSecAddChild ()">xmlSecAddChild</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecEnsureEmptyChild" title="xmlSecEnsureEmptyChild ()">xmlSecEnsureEmptyChild</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecAddChildNode" title="xmlSecAddChildNode ()">xmlSecAddChildNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECFINDCHILD">xmlSecFindChild</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecAddNextSibling" title="xmlSecAddNextSibling ()">xmlSecAddNextSibling</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECFINDPARENT">xmlSecFindParent</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlNodePtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecAddPrevSibling" title="xmlSecAddPrevSibling ()">xmlSecAddPrevSibling</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECFINDNODE">xmlSecFindNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNode" title="xmlSecReplaceNode ()">xmlSecReplaceNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECADDCHILD">xmlSecAddChild</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeAndReturn" title="xmlSecReplaceNodeAndReturn ()">xmlSecReplaceNodeAndReturn</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECADDCHILDNODE">xmlSecAddChildNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceContent" title="xmlSecReplaceContent ()">xmlSecReplaceContent</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECADDNEXTSIBLING">xmlSecAddNextSibling</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceContentAndReturn" title="xmlSecReplaceContentAndReturn ()">xmlSecReplaceContentAndReturn</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlNodePtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECADDPREVSIBLING">xmlSecAddPrevSibling</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeBuffer" title="xmlSecReplaceNodeBuffer ()">xmlSecReplaceNodeBuffer</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACENODE">xmlSecReplaceNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecReplaceNodeBufferAndReturn" title="xmlSecReplaceNodeBufferAndReturn ()">xmlSecReplaceNodeBufferAndReturn</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACENODEANDRETURN">xmlSecReplaceNodeAndReturn</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecNodeEncodeAndSetContent" title="xmlSecNodeEncodeAndSetContent ()">xmlSecNodeEncodeAndSetContent</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACECONTENT">xmlSecReplaceContent</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecAddIDs" title="xmlSecAddIDs ()">xmlSecAddIDs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACECONTENTANDRETURN">xmlSecReplaceContentAndReturn</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlDocPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecCreateTree" title="xmlSecCreateTree ()">xmlSecCreateTree</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACENODEBUFFER">xmlSecReplaceNodeBuffer</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecIsEmptyNode" title="xmlSecIsEmptyNode ()">xmlSecIsEmptyNode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECREPLACENODEBUFFERANDRETURN">xmlSecReplaceNodeBufferAndReturn</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecIsEmptyString" title="xmlSecIsEmptyString ()">xmlSecIsEmptyString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECNODEENCODEANDSETCONTENT">xmlSecNodeEncodeAndSetContent</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecGetQName" title="xmlSecGetQName ()">xmlSecGetQName</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECADDIDS">xmlSecAddIDs</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecPrintXmlString" title="xmlSecPrintXmlString ()">xmlSecPrintXmlString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGENERATEANDADDID">xmlSecGenerateAndAddID</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecIsHex" title="xmlSecIsHex()">xmlSecIsHex</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGENERATEID">xmlSecGenerateID</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecGetHex" title="xmlSecGetHex()">xmlSecGetHex</a><span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlDocPtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECCREATETREE">xmlSecCreateTree</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecQName2IntegerInfoConstPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetInfo" title="xmlSecQName2IntegerGetInfo ()">xmlSecQName2IntegerGetInfo</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECISEMPTYNODE">xmlSecIsEmptyNode</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetInteger" title="xmlSecQName2IntegerGetInteger ()">xmlSecQName2IntegerGetInteger</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECISEMPTYSTRING">xmlSecIsEmptyString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetIntegerFromString" title="xmlSecQName2IntegerGetIntegerFromString ()">xmlSecQName2IntegerGetIntegerFromString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGETQNAME">xmlSecGetQName</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerGetStringFromInteger" title="xmlSecQName2IntegerGetStringFromInteger ()">xmlSecQName2IntegerGetStringFromInteger</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECPRINTXMLSTRING">xmlSecPrintXmlString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerNodeRead" title="xmlSecQName2IntegerNodeRead ()">xmlSecQName2IntegerNodeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECISHEX">xmlSecIsHex</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerNodeWrite" title="xmlSecQName2IntegerNodeWrite ()">xmlSecQName2IntegerNodeWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>#define</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECGETHEX">xmlSecGetHex</a><span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeRead" title="xmlSecQName2IntegerAttributeRead ()">xmlSecQName2IntegerAttributeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecQName2IntegerInfoConstPtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINFO">xmlSecQName2IntegerGetInfo</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeWrite" title="xmlSecQName2IntegerAttributeWrite ()">xmlSecQName2IntegerAttributeWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINTEGER">xmlSecQName2IntegerGetInteger</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerDebugDump" title="xmlSecQName2IntegerDebugDump ()">xmlSecQName2IntegerDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETINTEGERFROMSTRING">xmlSecQName2IntegerGetIntegerFromString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerDebugXmlDump" title="xmlSecQName2IntegerDebugXmlDump ()">xmlSecQName2IntegerDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERGETSTRINGFROMINTEGER">xmlSecQName2IntegerGetStringFromInteger</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlSecQName2BitMaskInfoConstPtr</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetInfo" title="xmlSecQName2BitMaskGetInfo ()">xmlSecQName2BitMaskGetInfo</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERNODEREAD">xmlSecQName2IntegerNodeRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMask" title="xmlSecQName2BitMaskGetBitMask ()">xmlSecQName2BitMaskGetBitMask</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERNODEWRITE">xmlSecQName2IntegerNodeWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesRead" title="xmlSecQName2BitMaskNodesRead ()">xmlSecQName2BitMaskNodesRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERATTRIBUTEREAD">xmlSecQName2IntegerAttributeRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMaskFromString" title="xmlSecQName2BitMaskGetBitMaskFromString ()">xmlSecQName2BitMaskGetBitMaskFromString</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERATTRIBUTEWRITE">xmlSecQName2IntegerAttributeWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskGetStringFromBitMask" title="xmlSecQName2BitMaskGetStringFromBitMask ()">xmlSecQName2BitMaskGetStringFromBitMask</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERDEBUGDUMP">xmlSecQName2IntegerDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">int</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesWrite" title="xmlSecQName2BitMaskNodesWrite ()">xmlSecQName2BitMaskNodesWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERDEBUGXMLDUMP">xmlSecQName2IntegerDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugDump" title="xmlSecQName2BitMaskDebugDump ()">xmlSecQName2BitMaskDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">xmlSecQName2BitMaskInfoConstPtr</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETINFO">xmlSecQName2BitMaskGetInfo</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">void</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugXmlDump" title="xmlSecQName2BitMaskDebugXmlDump ()">xmlSecQName2BitMaskDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETBITMASK">xmlSecQName2BitMaskGetBitMask</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">LPWSTR</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUnicode" title="xmlSecWin32ConvertLocaleToUnicode ()">xmlSecWin32ConvertLocaleToUnicode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKNODESREAD">xmlSecQName2BitMaskNodesRead</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">LPWSTR</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToUnicode" title="xmlSecWin32ConvertUtf8ToUnicode ()">xmlSecWin32ConvertUtf8ToUnicode</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETBITMASKFROMSTRING">xmlSecQName2BitMaskGetBitMaskFromString</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUnicodeToUtf8" title="xmlSecWin32ConvertUnicodeToUtf8 ()">xmlSecWin32ConvertUnicodeToUtf8</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td>
-<font><span class="RETURNVALUE">xmlChar</span></font> *</td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKGETSTRINGFROMBITMASK">xmlSecQName2BitMaskGetStringFromBitMask</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUtf8" title="xmlSecWin32ConvertLocaleToUtf8 ()">xmlSecWin32ConvertLocaleToUtf8</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">int</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKNODESWRITE">xmlSecQName2BitMaskNodesWrite</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">char</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToLocale" title="xmlSecWin32ConvertUtf8ToLocale ()">xmlSecWin32ConvertUtf8ToLocale</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKDEBUGDUMP">xmlSecQName2BitMaskDebugDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">xmlChar</span></font> *
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertTstrToUtf8" title="xmlSecWin32ConvertTstrToUtf8 ()">xmlSecWin32ConvertTstrToUtf8</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td><font><span class="RETURNVALUE">void</span></font></td>
-<td>
-<a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKDEBUGXMLDUMP">xmlSecQName2BitMaskDebugXmlDump</a> <span class="c_punctuation"><span class="PHRASE">()</span></span>
+<td class="function_type">
+<font><span class="returnvalue">LPTSTR</span></font>
+</td>
+<td class="function_name">
+<a class="link" href="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToTstr" title="xmlSecWin32ConvertUtf8ToTstr ()">xmlSecWin32ConvertUtf8ToTstr</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLTREE.OTHER"></a><h2>Types and Values</h2>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26666"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect1">
+<a name="xmlsec-xmltree.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-xmltree.html#XMLSECQNAME2INTEGERINFO">xmlSecQName2IntegerInfo</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-xmltree.html#xmlSecQName2IntegerInfo" title="struct xmlSecQName2IntegerInfo">xmlSecQName2IntegerInfo</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><font>xmlSecQName2IntegerInfoConstPtr</font></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><font>xmlSecQName2IntegerInfoConstPtr</font></td>
</tr>
<tr>
-<td>typedef</td>
-<td><a href="xmlsec-xmltree.html#XMLSECBITMASK">xmlSecBitMask</a></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask">xmlSecBitMask</a></td>
</tr>
<tr>
-<td>struct</td>
-<td><a href="xmlsec-xmltree.html#XMLSECQNAME2BITMASKINFO">xmlSecQName2BitMaskInfo</a></td>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo" title="struct xmlSecQName2BitMaskInfo">xmlSecQName2BitMaskInfo</a></td>
</tr>
<tr>
-<td>typedef</td>
-<td><font>xmlSecQName2BitMaskInfoConstPtr</font></td>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><font>xmlSecQName2BitMaskInfoConstPtr</font></td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLTREE.DESCRIPTION"></a><h2>Description</h2>
-<p>XML tree operations.</p>
+<div class="refsect1">
+<a name="xmlsec-xmltree.description"></a><h2>Description</h2>
+<p></p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLTREE.FUNCTIONS_DETAILS"></a><h2>Functions</h2>
-<div class="REFSECT2">
-<a name="XMLSECNODEGETNAME"></a><h3>xmlSecNodeGetName()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecNodeGetName(node)</pre>
+<div class="refsect1">
+<a name="xmlsec-xmltree.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="xmlSecNodeGetName"></a><h3>xmlSecNodeGetName()</h3>
+<pre class="programlisting">#define xmlSecNodeGetName(node)</pre>
<p>Macro. Returns node's name.</p>
-<div class="REFSECT3">
-<a name="AEN26700"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26702"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeGetName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
+</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGetDefaultLineFeed"></a><h3>xmlSecGetDefaultLineFeed ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+xmlSecGetDefaultLineFeed (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Gets the current default linefeed.</p>
+<div class="refsect3">
+<a name="xmlSecGetDefaultLineFeed.returns"></a><h4>Returns</h4>
+<p> the current default linefeed.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGETNODENSHREF"></a><h3>xmlSecGetNodeNsHref ()</h3>
-<pre class="PROGRAMLISTING">const <font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecGetNodeNsHref (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> cur</code>);</pre>
-<p>Get's node's namespace href.</p>
-<div class="REFSECT3">
-<a name="AEN26722"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26724"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecSetDefaultLineFeed"></a><h3>xmlSecSetDefaultLineFeed ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecSetDefaultLineFeed (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *linefeed</code></em>);</pre>
+<p>Sets the current default linefeed. The caller must ensure that the linefeed
+string exists for the lifetime of the program or until the new linefeed is set.</p>
+<div class="refsect3">
+<a name="xmlSecSetDefaultLineFeed.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>cur</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>linefeed</p></td>
+<td class="parameter_description"><p>default linefeed.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
-<div class="REFSECT3">
-<a name="AEN26733"></a><h4>Returns</h4>
+<hr>
+<div class="refsect2">
+<a name="xmlSecGetNodeNsHref"></a><h3>xmlSecGetNodeNsHref ()</h3>
+<pre class="programlisting">const <font><span class="returnvalue">xmlChar</span></font> *
+xmlSecGetNodeNsHref (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>);</pre>
+<p>Get's node's namespace href.</p>
+<div class="refsect3">
+<a name="xmlSecGetNodeNsHref.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecGetNodeNsHref.returns"></a><h4>Returns</h4>
<p> node's namespace href.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECCHECKNODENAME"></a><h3>xmlSecCheckNodeName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecCheckNodeName (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecCheckNodeName"></a><h3>xmlSecCheckNodeName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecCheckNodeName (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
<p>Checks that the node has a given name and a given namespace href.</p>
-<div class="REFSECT3">
-<a name="AEN26753"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26755"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCheckNodeName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the name,</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name,</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the namespace href.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN26776"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCheckNodeName.returns"></a><h4>Returns</h4>
<p> 1 if the node matches or 0 otherwise.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGETNEXTELEMENTNODE"></a><h3>xmlSecGetNextElementNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecGetNextElementNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>);</pre>
+<div class="refsect2">
+<a name="xmlSecGetNextElementNode"></a><h3>xmlSecGetNextElementNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecGetNextElementNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>);</pre>
<p>Seraches for the next element node.</p>
-<div class="REFSECT3">
-<a name="AEN26790"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26792"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGetNextElementNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN26801"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGetNextElementNode.returns"></a><h4>Returns</h4>
<p> the pointer to next element node or NULL if it is not found.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECFINDCHILD"></a><h3>xmlSecFindChild ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecFindChild (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Searches a direct child of the <code class="PARAMETER">parent</code>
+<div class="refsect2">
+<a name="xmlSecFindSibling"></a><h3>xmlSecFindSibling ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecFindSibling (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Searches <em class="parameter"><code>cur</code></em>
+ and the next siblings of the <em class="parameter"><code>cur</code></em>
node having given name and
namespace href.</p>
-<div class="REFSECT3">
-<a name="AEN26822"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26824"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecFindSibling.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the namespace href (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
+<div class="refsect3">
+<a name="xmlSecFindSibling.returns"></a><h4>Returns</h4>
+<p> the pointer to the found node or NULL if an error occurs or
+node is not found.</p>
</div>
-<div class="REFSECT3">
-<a name="AEN26845"></a><h4>Returns</h4>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecFindChild"></a><h3>xmlSecFindChild ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecFindChild (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Searches a direct child of the <em class="parameter"><code>parent</code></em>
+ node having given name and
+namespace href.</p>
+<div class="refsect3">
+<a name="xmlSecFindChild.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to XML node.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecFindChild.returns"></a><h4>Returns</h4>
<p> the pointer to the found node or NULL if an error occurs or
node is not found.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECFINDPARENT"></a><h3>xmlSecFindParent ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecFindParent (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Searches the ancestors axis of the <code class="PARAMETER">cur</code>
+<div class="refsect2">
+<a name="xmlSecFindParent"></a><h3>xmlSecFindParent ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecFindParent (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Searches the ancestors axis of the <em class="parameter"><code>cur</code></em>
node for a node having given name
and namespace href.</p>
-<div class="REFSECT3">
-<a name="AEN26866"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26868"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecFindParent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the namespace href (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN26889"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecFindParent.returns"></a><h4>Returns</h4>
<p> the pointer to the found node or NULL if an error occurs or
node is not found.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECFINDNODE"></a><h3>xmlSecFindNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecFindNode (<code class="PARAMETER">const <font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Searches all children of the <code class="PARAMETER">parent</code>
+<div class="refsect2">
+<a name="xmlSecFindNode"></a><h3>xmlSecFindNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecFindNode (<em class="parameter"><code>const <font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Searches all children of the <em class="parameter"><code>parent</code></em>
node having given name and
namespace href.</p>
-<div class="REFSECT3">
-<a name="AEN26910"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26912"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecFindNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the namespace href (may be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN26933"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecFindNode.returns"></a><h4>Returns</h4>
<p> the pointer to the found node or NULL if an error occurs or
node is not found.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECADDCHILD"></a><h3>xmlSecAddChild ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecAddChild (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Adds a child to the node <code class="PARAMETER">parent</code>
- with given <code class="PARAMETER">name</code>
- and namespace <code class="PARAMETER">ns</code>
+<div class="refsect2">
+<a name="xmlSecAddChild"></a><h3>xmlSecAddChild ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecAddChild (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Adds a child to the node <em class="parameter"><code>parent</code></em>
+ with given <em class="parameter"><code>name</code></em>
+ and namespace <em class="parameter"><code>ns</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN26956"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN26958"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAddChild.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the new node name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the new node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the new node namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the new node namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN26979"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecAddChild.returns"></a><h4>Returns</h4>
<p> pointer to the new node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECADDCHILDNODE"></a><h3>xmlSecAddChildNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecAddChildNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> parent</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> child</code>);</pre>
-<p>Adds <code class="PARAMETER">child</code>
- node to the <code class="PARAMETER">parent</code>
- node.</p>
-<div class="REFSECT3">
-<a name="AEN26998"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27000"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect2">
+<a name="xmlSecEnsureEmptyChild"></a><h3>xmlSecEnsureEmptyChild ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecEnsureEmptyChild (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Searches a direct child of the <em class="parameter"><code>parent</code></em>
+ node having given name and
+namespace href. If not found then element node with given name / namespace
+is added.</p>
+<div class="refsect3">
+<a name="xmlSecEnsureEmptyChild.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>parent</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to XML node.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>child</p></td>
-<td><p>the new node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the namespace href (may be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecEnsureEmptyChild.returns"></a><h4>Returns</h4>
+<p> the pointer to the found or created node; or NULL if an error occurs.</p>
</div>
</div>
-<div class="REFSECT3">
-<a name="AEN27015"></a><h4>Returns</h4>
+<hr>
+<div class="refsect2">
+<a name="xmlSecAddChildNode"></a><h3>xmlSecAddChildNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecAddChildNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> parent</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> child</code></em>);</pre>
+<p>Adds <em class="parameter"><code>child</code></em>
+ node to the <em class="parameter"><code>parent</code></em>
+ node.</p>
+<div class="refsect3">
+<a name="xmlSecAddChildNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>parent</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>child</p></td>
+<td class="parameter_description"><p>the new node.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecAddChildNode.returns"></a><h4>Returns</h4>
<p> pointer to the new node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECADDNEXTSIBLING"></a><h3>xmlSecAddNextSibling ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecAddNextSibling (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Adds next sibling to the node <code class="PARAMETER">node</code>
- with given <code class="PARAMETER">name</code>
- and namespace <code class="PARAMETER">ns</code>
+<div class="refsect2">
+<a name="xmlSecAddNextSibling"></a><h3>xmlSecAddNextSibling ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecAddNextSibling (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Adds next sibling to the node <em class="parameter"><code>node</code></em>
+ with given <em class="parameter"><code>name</code></em>
+ and namespace <em class="parameter"><code>ns</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27038"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27040"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAddNextSibling.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the new node name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the new node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the new node namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the new node namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27061"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecAddNextSibling.returns"></a><h4>Returns</h4>
<p> pointer to the new node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECADDPREVSIBLING"></a><h3>xmlSecAddPrevSibling ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlNodePtr</span></font>
-xmlSecAddPrevSibling (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *ns</code>);</pre>
-<p>Adds prev sibling to the node <code class="PARAMETER">node</code>
- with given <code class="PARAMETER">name</code>
- and namespace <code class="PARAMETER">ns</code>
+<div class="refsect2">
+<a name="xmlSecAddPrevSibling"></a><h3>xmlSecAddPrevSibling ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlNodePtr</span></font>
+xmlSecAddPrevSibling (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *ns</code></em>);</pre>
+<p>Adds prev sibling to the node <em class="parameter"><code>node</code></em>
+ with given <em class="parameter"><code>name</code></em>
+ and namespace <em class="parameter"><code>ns</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27084"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27086"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAddPrevSibling.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the new node name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the new node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ns</p></td>
-<td><p>the new node namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ns</p></td>
+<td class="parameter_description"><p>the new node namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27107"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecAddPrevSibling.returns"></a><h4>Returns</h4>
<p> pointer to the new node or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACENODE"></a><h3>xmlSecReplaceNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> newNode</code>);</pre>
-<p>Swaps the <code class="PARAMETER">node</code>
- and <code class="PARAMETER">newNode</code>
+<div class="refsect2">
+<a name="xmlSecReplaceNode"></a><h3>xmlSecReplaceNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> newNode</code></em>);</pre>
+<p>Swaps the <em class="parameter"><code>node</code></em>
+ and <em class="parameter"><code>newNode</code></em>
in the XML tree.</p>
-<div class="REFSECT3">
-<a name="AEN27126"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27128"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNode</p></td>
-<td><p>the new node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNode</p></td>
+<td class="parameter_description"><p>the new node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27143"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceNode.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACENODEANDRETURN"></a><h3>xmlSecReplaceNodeAndReturn ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceNodeAndReturn (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> newNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> *replaced</code>);</pre>
-<p>Swaps the <code class="PARAMETER">node</code>
- and <code class="PARAMETER">newNode</code>
+<div class="refsect2">
+<a name="xmlSecReplaceNodeAndReturn"></a><h3>xmlSecReplaceNodeAndReturn ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceNodeAndReturn (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> newNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> *replaced</code></em>);</pre>
+<p>Swaps the <em class="parameter"><code>node</code></em>
+ and <em class="parameter"><code>newNode</code></em>
in the XML tree.</p>
-<div class="REFSECT3">
-<a name="AEN27165"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27167"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceNodeAndReturn.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNode</p></td>
-<td><p>the new node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNode</p></td>
+<td class="parameter_description"><p>the new node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>replaced</p></td>
-<td><p>the replaced node, or release it if NULL is given</p></td>
-<td> </td>
+<td class="parameter_name"><p>replaced</p></td>
+<td class="parameter_description"><p>the replaced node, or release it if NULL is given</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27188"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceNodeAndReturn.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACECONTENT"></a><h3>xmlSecReplaceContent ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceContent (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> newNode</code>);</pre>
-<p>Swaps the content of <code class="PARAMETER">node</code>
- and <code class="PARAMETER">newNode</code>
+<div class="refsect2">
+<a name="xmlSecReplaceContent"></a><h3>xmlSecReplaceContent ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceContent (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> newNode</code></em>);</pre>
+<p>Swaps the content of <em class="parameter"><code>node</code></em>
+ and <em class="parameter"><code>newNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27207"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27209"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceContent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNode</p></td>
-<td><p>the new node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNode</p></td>
+<td class="parameter_description"><p>the new node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27224"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceContent.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACECONTENTANDRETURN"></a><h3>xmlSecReplaceContentAndReturn ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceContentAndReturn (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> newNode</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> *replaced</code>);</pre>
-<p>Swaps the content of <code class="PARAMETER">node</code>
- and <code class="PARAMETER">newNode</code>
+<div class="refsect2">
+<a name="xmlSecReplaceContentAndReturn"></a><h3>xmlSecReplaceContentAndReturn ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceContentAndReturn (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> newNode</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> *replaced</code></em>);</pre>
+<p>Swaps the content of <em class="parameter"><code>node</code></em>
+ and <em class="parameter"><code>newNode</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27246"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27248"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceContentAndReturn.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>newNode</p></td>
-<td><p>the new node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>newNode</p></td>
+<td class="parameter_description"><p>the new node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>replaced</p></td>
-<td><p>the replaced nodes, or release them if NULL is given</p></td>
-<td> </td>
+<td class="parameter_name"><p>replaced</p></td>
+<td class="parameter_description"><p>the replaced nodes, or release them if NULL is given</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27269"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceContentAndReturn.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACENODEBUFFER"></a><h3>xmlSecReplaceNodeBuffer ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceNodeBuffer (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>);</pre>
-<p>Swaps the <code class="PARAMETER">node</code>
- and the parsed XML data from the <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecReplaceNodeBuffer"></a><h3>xmlSecReplaceNodeBuffer ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceNodeBuffer (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>);</pre>
+<p>Swaps the <em class="parameter"><code>node</code></em>
+ and the parsed XML data from the <em class="parameter"><code>buffer</code></em>
in the XML tree.</p>
-<div class="REFSECT3">
-<a name="AEN27291"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27293"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceNodeBuffer.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buffer</p></td>
-<td><p>the XML data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the XML data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the XML data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the XML data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27314"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceNodeBuffer.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECREPLACENODEBUFFERANDRETURN"></a><h3>xmlSecReplaceNodeBufferAndReturn ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecReplaceNodeBufferAndReturn (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <a href="xmlsec-xmlsec.html#XMLSECBYTE"><span class="TYPE">xmlSecByte</span></a> *buffer</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> size</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> *replaced</code>);</pre>
-<p>Swaps the <code class="PARAMETER">node</code>
- and the parsed XML data from the <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecReplaceNodeBufferAndReturn"></a><h3>xmlSecReplaceNodeBufferAndReturn ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecReplaceNodeBufferAndReturn (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <a class="link" href="xmlsec-xmlsec.html#xmlSecByte" title="xmlSecByte"><span class="type">xmlSecByte</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmlsec.html#xmlSecSize" title="xmlSecSize"><span class="type">xmlSecSize</span></a> size</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> *replaced</code></em>);</pre>
+<p>Swaps the <em class="parameter"><code>node</code></em>
+ and the parsed XML data from the <em class="parameter"><code>buffer</code></em>
in the XML tree.</p>
-<div class="REFSECT3">
-<a name="AEN27339"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27341"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecReplaceNodeBufferAndReturn.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the current node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the current node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buffer</p></td>
-<td><p>the XML data.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the XML data.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>size</p></td>
-<td><p>the XML data size.</p></td>
-<td> </td>
+<td class="parameter_name"><p>size</p></td>
+<td class="parameter_description"><p>the XML data size.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>replaced</p></td>
-<td><p>the replaced nodes, or release them if NULL is given</p></td>
-<td> </td>
+<td class="parameter_name"><p>replaced</p></td>
+<td class="parameter_description"><p>the replaced nodes, or release them if NULL is given</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27368"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecReplaceNodeBufferAndReturn.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECNODEENCODEANDSETCONTENT"></a><h3>xmlSecNodeEncodeAndSetContent ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecNodeEncodeAndSetContent (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *buffer</code>);</pre>
-<p>Encodes "special" characters in the <code class="PARAMETER">buffer</code>
+<div class="refsect2">
+<a name="xmlSecNodeEncodeAndSetContent"></a><h3>xmlSecNodeEncodeAndSetContent ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecNodeEncodeAndSetContent (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *buffer</code></em>);</pre>
+<p>Encodes "special" characters in the <em class="parameter"><code>buffer</code></em>
and sets the result
as the node content.</p>
-<div class="REFSECT3">
-<a name="AEN27386"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27388"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecNodeEncodeAndSetContent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>buffer</p></td>
-<td><p>the pointer to the node content.</p></td>
-<td> </td>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>the pointer to the node content.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27403"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecNodeEncodeAndSetContent.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECADDIDS"></a><h3>xmlSecAddIDs ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecAddIDs (<code class="PARAMETER"><font><span class="TYPE">xmlDocPtr</span></font> doc</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> cur</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> **ids</code>);</pre>
-<p>Walks thru all children of the <code class="PARAMETER">cur</code>
+<div class="refsect2">
+<a name="xmlSecAddIDs"></a><h3>xmlSecAddIDs ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecAddIDs (<em class="parameter"><code><font><span class="type">xmlDocPtr</span></font> doc</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> cur</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> **ids</code></em>);</pre>
+<p>Walks thru all children of the <em class="parameter"><code>cur</code></em>
node and adds all attributes
-from the <code class="PARAMETER">ids</code>
- list to the <code class="PARAMETER">doc</code>
+from the <em class="parameter"><code>ids</code></em>
+ list to the <em class="parameter"><code>doc</code></em>
document IDs attributes hash.</p>
-<div class="REFSECT3">
-<a name="AEN27426"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27428"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecAddIDs.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>doc</p></td>
-<td><p>the pointer to an XML document.</p></td>
-<td> </td>
+<td class="parameter_name"><p>doc</p></td>
+<td class="parameter_description"><p>the pointer to an XML document.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>cur</p></td>
-<td><p>the pointer to an XML node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>cur</p></td>
+<td class="parameter_description"><p>the pointer to an XML node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>ids</p></td>
-<td><p>the pointer to a NULL terminated list of ID attributes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>ids</p></td>
+<td class="parameter_description"><p>the pointer to a NULL terminated list of ID attributes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGENERATEANDADDID"></a><h3>xmlSecGenerateAndAddID ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecGenerateAndAddID (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *attrName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *prefix</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> len</code>);</pre>
-<p>Generates a unique ID in the format &lt;<code class="PARAMETER">prefix</code>
-&gt;base64-encoded(<code class="PARAMETER">len</code>
- random bytes)
-and puts it in the attribute <code class="PARAMETER">attrName</code>
+<div class="refsect2">
+<a name="xmlSecCreateTree"></a><h3>xmlSecCreateTree ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlDocPtr</span></font>
+xmlSecCreateTree (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *rootNodeName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *rootNodeNs</code></em>);</pre>
+<p>Creates a new XML tree with one root node <em class="parameter"><code>rootNodeName</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27472"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27474"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecCreateTree.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the node to ID attr to.</p></td>
-<td> </td>
+<td class="parameter_name"><p>rootNodeName</p></td>
+<td class="parameter_description"><p>the root node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>attrName</p></td>
-<td><p>the ID attr name.</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>prefix</p></td>
-<td><p>the prefix to add to the generated ID (can be NULL).</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>len</p></td>
-<td><p>the length of ID.</p></td>
-<td> </td>
+<td class="parameter_name"><p>rootNodeNs</p></td>
+<td class="parameter_description"><p>the root node namespace (optional).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27501"></a><h4>Returns</h4>
-<p> 0 on success or a negative value if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECGENERATEID"></a><h3>xmlSecGenerateID ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecGenerateID (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *prefix</code>,
- <code class="PARAMETER"><a href="xmlsec-xmlsec.html#XMLSECSIZE"><span class="TYPE">xmlSecSize</span></a> len</code>);</pre>
-<p>Generates a unique ID in the format &lt;<code class="PARAMETER">prefix</code>
-&gt;base64-encoded(<code class="PARAMETER">len</code>
- random bytes).
-The caller is responsible for freeing returned string using <code class="PARAMETER">xmlFree</code>
- function.</p>
-<div class="REFSECT3">
-<a name="AEN27521"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27523"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody>
-<tr>
-<td><p>prefix</p></td>
-<td><p>the prefix to add to the generated ID (can be NULL).</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>len</p></td>
-<td><p>the length of ID.</p></td>
-<td> </td>
-</tr>
-</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27538"></a><h4>Returns</h4>
-<p> pointer to generated ID string or NULL if an error occurs.</p>
-</div>
-</div>
-<hr>
-<div class="REFSECT2">
-<a name="XMLSECCREATETREE"></a><h3>xmlSecCreateTree ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlDocPtr</span></font>
-xmlSecCreateTree (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *rootNodeName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *rootNodeNs</code>);</pre>
-<p>Creates a new XML tree with one root node <code class="PARAMETER">rootNodeName</code>
-.</p>
-<div class="REFSECT3">
-<a name="AEN27556"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27558"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
-<col>
-<col>
-<col>
-<tbody>
-<tr>
-<td><p>rootNodeName</p></td>
-<td><p>the root node name.</p></td>
-<td> </td>
-</tr>
-<tr>
-<td><p>rootNodeNs</p></td>
-<td><p>the root node namespace (otpional).</p></td>
-<td> </td>
-</tr>
-</tbody>
-</table>
-<p></p>
-</div>
-</div>
-<div class="REFSECT3">
-<a name="AEN27573"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecCreateTree.returns"></a><h4>Returns</h4>
<p> pointer to the newly created tree or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECISEMPTYNODE"></a><h3>xmlSecIsEmptyNode ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecIsEmptyNode (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>);</pre>
-<p>Checks whethere the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecIsEmptyNode"></a><h3>xmlSecIsEmptyNode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecIsEmptyNode (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>);</pre>
+<p>Checks whether the <em class="parameter"><code>node</code></em>
is empty (i.e. has only whitespaces children).</p>
-<div class="REFSECT3">
-<a name="AEN27588"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27590"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecIsEmptyNode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>node</p></td>
-<td><p>the node to check</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the node to check</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27599"></a><h4>Returns</h4>
-<p> 1 if <code class="PARAMETER">node</code>
+<div class="refsect3">
+<a name="xmlSecIsEmptyNode.returns"></a><h4>Returns</h4>
+<p> 1 if <em class="parameter"><code>node</code></em>
is empty, 0 otherwise or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECISEMPTYSTRING"></a><h3>xmlSecIsEmptyString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecIsEmptyString (<code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Checks whethere the <code class="PARAMETER">str</code>
+<div class="refsect2">
+<a name="xmlSecIsEmptyString"></a><h3>xmlSecIsEmptyString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecIsEmptyString (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Checks whether the <em class="parameter"><code>str</code></em>
is empty (i.e. has only whitespaces children).</p>
-<div class="REFSECT3">
-<a name="AEN27615"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27617"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecIsEmptyString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>str</p></td>
-<td><p>the string to check</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to check</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27626"></a><h4>Returns</h4>
-<p> 1 if <code class="PARAMETER">str</code>
+<div class="refsect3">
+<a name="xmlSecIsEmptyString.returns"></a><h4>Returns</h4>
+<p> 1 if <em class="parameter"><code>str</code></em>
is empty, 0 otherwise or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGETQNAME"></a><h3>xmlSecGetQName ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
-xmlSecGetQName (<code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *href</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *local</code>);</pre>
-<p>Creates QName (prefix:local) from <code class="PARAMETER">href</code>
- and <code class="PARAMETER">local</code>
- in the context of the <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecGetQName"></a><h3>xmlSecGetQName ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecGetQName (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *href</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *local</code></em>);</pre>
+<p>Creates QName (prefix:local) from <em class="parameter"><code>href</code></em>
+ and <em class="parameter"><code>local</code></em>
+ in the context of the <em class="parameter"><code>node</code></em>
.
Caller is responsible for freeing returned string with xmlFree.</p>
-<div class="REFSECT3">
-<a name="AEN27650"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27652"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGetQName.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>node</p></td>
-<td><p>the context node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the context node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>href</p></td>
-<td><p>the QName href (can be NULL).</p></td>
-<td> </td>
+<td class="parameter_name"><p>href</p></td>
+<td class="parameter_description"><p>the QName href (can be NULL).</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>local</p></td>
-<td><p>the QName local part.</p></td>
-<td> </td>
+<td class="parameter_name"><p>local</p></td>
+<td class="parameter_description"><p>the QName local part.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27673"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecGetQName.returns"></a><h4>Returns</h4>
<p> qname or NULL if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECPRINTXMLSTRING"></a><h3>xmlSecPrintXmlString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecPrintXmlString (<code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *fd</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *str</code>);</pre>
-<p>Encodes the <code class="PARAMETER">str</code>
- (e.g. replaces '&amp;' with '&amp;') and writes it to <code class="PARAMETER">fd</code>
+<div class="refsect2">
+<a name="xmlSecPrintXmlString"></a><h3>xmlSecPrintXmlString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecPrintXmlString (<em class="parameter"><code><font><span class="type">FILE</span></font> *fd</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Encodes the <em class="parameter"><code>str</code></em>
+ (e.g. replaces '&amp;' with '&amp;') and writes it to <em class="parameter"><code>fd</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27692"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27694"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecPrintXmlString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>fd</p></td>
-<td><p>the file descriptor to write the XML string to</p></td>
-<td> </td>
+<td class="parameter_name"><p>fd</p></td>
+<td class="parameter_description"><p>the file descriptor to write the XML string to</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>str</p></td>
-<td><p>the string</p></td>
-<td> </td>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27709"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecPrintXmlString.returns"></a><h4>Returns</h4>
<p> he number of bytes transmitted or a negative value if an error occurs.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECISHEX"></a><h3>xmlSecIsHex()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecIsHex(c)</pre>
-<p>Macro. Returns 1 if <code class="PARAMETER">c</code>
+<div class="refsect2">
+<a name="xmlSecIsHex"></a><h3>xmlSecIsHex()</h3>
+<pre class="programlisting">#define xmlSecIsHex(c)</pre>
+<p>Macro. Returns 1 if <em class="parameter"><code>c</code></em>
is a hex digit or 0 other wise.</p>
-<div class="REFSECT3">
-<a name="AEN27719"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27721"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecIsHex.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>c</p></td>
-<td><p>the character.</p></td>
-<td> </td>
+<td class="parameter_name"><p>c</p></td>
+<td class="parameter_description"><p>the character.</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECGETHEX"></a><h3>xmlSecGetHex()</h3>
-<pre class="PROGRAMLISTING">#define xmlSecGetHex(c)</pre>
-<p>Macro. Returns the hex value of the <code class="PARAMETER">c</code>
+<div class="refsect2">
+<a name="xmlSecGetHex"></a><h3>xmlSecGetHex()</h3>
+<pre class="programlisting">#define xmlSecGetHex(c)</pre>
+<p>Macro. Returns the hex value of the <em class="parameter"><code>c</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27737"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27739"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecGetHex.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody><tr>
-<td><p>c</p></td>
-<td><p>the character,</p></td>
-<td> </td>
+<td class="parameter_name"><p>c</p></td>
+<td class="parameter_description"><p>the character,</p></td>
+<td class="parameter_annotations"> </td>
</tr></tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERGETINFO"></a><h3>xmlSecQName2IntegerGetInfo ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecQName2IntegerInfoConstPtr</span></font>
-xmlSecQName2IntegerGetInfo (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>);</pre>
-<p>Maps integer <code class="PARAMETER">intValue</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerGetInfo"></a><h3>xmlSecQName2IntegerGetInfo ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecQName2IntegerInfoConstPtr</span></font>
+xmlSecQName2IntegerGetInfo (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>);</pre>
+<p>Maps integer <em class="parameter"><code>intValue</code></em>
to a QName prefix.</p>
-<div class="REFSECT3">
-<a name="AEN27763"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27765"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetInfo.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27780"></a><h4>Returns</h4>
-<p> the QName info that is mapped to <code class="PARAMETER">intValue</code>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetInfo.returns"></a><h4>Returns</h4>
+<p> the QName info that is mapped to <em class="parameter"><code>intValue</code></em>
or NULL if such value
is not found.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERGETINTEGER"></a><h3>xmlSecQName2IntegerGetInteger ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2IntegerGetInteger (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qnameHref</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qnameLocalPart</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> *intValue</code>);</pre>
-<p>Maps qname qname to an integer and returns it in <code class="PARAMETER">intValue</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerGetInteger"></a><h3>xmlSecQName2IntegerGetInteger ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2IntegerGetInteger (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qnameHref</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qnameLocalPart</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> *intValue</code></em>);</pre>
+<p>Maps qname qname to an integer and returns it in <em class="parameter"><code>intValue</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27805"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27807"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetInteger.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qnameHref</p></td>
-<td><p>the qname href value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qnameHref</p></td>
+<td class="parameter_description"><p>the qname href value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qnameLocalPart</p></td>
-<td><p>the qname local part value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qnameLocalPart</p></td>
+<td class="parameter_description"><p>the qname local part value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the pointer to result integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the pointer to result integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27834"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetInteger.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERGETINTEGERFROMSTRING"></a><h3>xmlSecQName2IntegerGetIntegerFromString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerGetIntegerFromString"></a><h3>xmlSecQName2IntegerGetIntegerFromString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecQName2IntegerGetIntegerFromString
- (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qname</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> *intValue</code>);</pre>
-<p>Converts <code class="PARAMETER">qname</code>
- into integer in context of <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qname</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> *intValue</code></em>);</pre>
+<p>Converts <em class="parameter"><code>qname</code></em>
+ into integer in context of <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27859"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27861"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetIntegerFromString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qname</p></td>
-<td><p>the qname string.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qname</p></td>
+<td class="parameter_description"><p>the qname string.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the pointer to result integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the pointer to result integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27888"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetIntegerFromString.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERGETSTRINGFROMINTEGER"></a><h3>xmlSecQName2IntegerGetStringFromInteger ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
+<div class="refsect2">
+<a name="xmlSecQName2IntegerGetStringFromInteger"></a><h3>xmlSecQName2IntegerGetStringFromInteger ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
xmlSecQName2IntegerGetStringFromInteger
- (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>);</pre>
-<p>Creates qname string for <code class="PARAMETER">intValue</code>
- in context of given <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>);</pre>
+<p>Creates qname string for <em class="parameter"><code>intValue</code></em>
+ in context of given <em class="parameter"><code>node</code></em>
. Caller
-is responsible for freeing returned string with <code class="PARAMETER">xmlFree</code>
+is responsible for freeing returned string with <em class="parameter"><code>xmlFree</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27911"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27913"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetStringFromInteger.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27934"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerGetStringFromInteger.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated string on success or NULL if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERNODEREAD"></a><h3>xmlSecQName2IntegerNodeRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2IntegerNodeRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> *intValue</code>);</pre>
-<p>Reads the content of <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerNodeRead"></a><h3>xmlSecQName2IntegerNodeRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2IntegerNodeRead (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> *intValue</code></em>);</pre>
+<p>Reads the content of <em class="parameter"><code>node</code></em>
and converts it to an integer using mapping
-from <code class="PARAMETER">info</code>
+from <em class="parameter"><code>info</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN27956"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN27958"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerNodeRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the pointer to result integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the pointer to result integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN27979"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerNodeRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERNODEWRITE"></a><h3>xmlSecQName2IntegerNodeWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2IntegerNodeWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeNs</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>);</pre>
-<p>Creates new child node in <code class="PARAMETER">node</code>
- and sets its value to <code class="PARAMETER">intValue</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerNodeWrite"></a><h3>xmlSecQName2IntegerNodeWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2IntegerNodeWrite (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeNs</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>);</pre>
+<p>Creates new child node in <em class="parameter"><code>node</code></em>
+ and sets its value to <em class="parameter"><code>intValue</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28007"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28009"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerNodeWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the parent node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the parent node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeName</p></td>
-<td><p>the child node name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeName</p></td>
+<td class="parameter_description"><p>the child node name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeNs</p></td>
-<td><p>the child node namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeNs</p></td>
+<td class="parameter_description"><p>the child node namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28042"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerNodeWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERATTRIBUTEREAD"></a><h3>xmlSecQName2IntegerAttributeRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2IntegerAttributeRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *attrName</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> *intValue</code>);</pre>
-<p>Gets the value of <code class="PARAMETER">attrName</code>
- atrtibute from <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerAttributeRead"></a><h3>xmlSecQName2IntegerAttributeRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2IntegerAttributeRead (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *attrName</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> *intValue</code></em>);</pre>
+<p>Gets the value of <em class="parameter"><code>attrName</code></em>
+ atrtibute from <em class="parameter"><code>node</code></em>
and converts it to integer
-according to <code class="PARAMETER">info</code>
+according to <em class="parameter"><code>info</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28068"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28070"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerAttributeRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the element node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the element node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>attrName</p></td>
-<td><p>the attribute name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>attrName</p></td>
+<td class="parameter_description"><p>the attribute name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the pointer to result integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the pointer to result integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28097"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerAttributeRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERATTRIBUTEWRITE"></a><h3>xmlSecQName2IntegerAttributeWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2IntegerAttributeWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *attrName</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>);</pre>
-<p>Converts <code class="PARAMETER">intValue</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerAttributeWrite"></a><h3>xmlSecQName2IntegerAttributeWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2IntegerAttributeWrite (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *attrName</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>);</pre>
+<p>Converts <em class="parameter"><code>intValue</code></em>
to a qname and sets it to the value of
-attribute <code class="PARAMETER">attrName</code>
- in <code class="PARAMETER">node</code>
+attribute <em class="parameter"><code>attrName</code></em>
+ in <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28123"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28125"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerAttributeWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the parent node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the parent node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>attrName</p></td>
-<td><p>the name of attribute.</p></td>
-<td> </td>
+<td class="parameter_name"><p>attrName</p></td>
+<td class="parameter_description"><p>the name of attribute.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28152"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2IntegerAttributeWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERDEBUGDUMP"></a><h3>xmlSecQName2IntegerDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecQName2IntegerDebugDump (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints <code class="PARAMETER">intValue</code>
- into <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerDebugDump"></a><h3>xmlSecQName2IntegerDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecQName2IntegerDebugDump (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints <em class="parameter"><code>intValue</code></em>
+ into <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28177"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28179"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the value name to print.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the value name to print.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERDEBUGXMLDUMP"></a><h3>xmlSecQName2IntegerDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecQName2IntegerDebugXmlDump (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2IntegerInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> intValue</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints <code class="PARAMETER">intValue</code>
- into <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerDebugXmlDump"></a><h3>xmlSecQName2IntegerDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecQName2IntegerDebugXmlDump (<em class="parameter"><code><font><span class="type">xmlSecQName2IntegerInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> intValue</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints <em class="parameter"><code>intValue</code></em>
+ into <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN28228"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28230"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>intValue</p></td>
-<td><p>the integer value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>intValue</p></td>
+<td class="parameter_description"><p>the integer value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the value name to print.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the value name to print.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKGETINFO"></a><h3>xmlSecQName2BitMaskGetInfo ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlSecQName2BitMaskInfoConstPtr</span></font>
-xmlSecQName2BitMaskGetInfo (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> mask</code>);</pre>
-<p>Converts <code class="PARAMETER">mask</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskGetInfo"></a><h3>xmlSecQName2BitMaskGetInfo ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlSecQName2BitMaskInfoConstPtr</span></font>
+xmlSecQName2BitMaskGetInfo (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> mask</code></em>);</pre>
+<p>Converts <em class="parameter"><code>mask</code></em>
to qname.</p>
-<div class="REFSECT3">
-<a name="AEN28272"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28274"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetInfo.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the bit mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the bit mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28289"></a><h4>Returns</h4>
-<p> pointer to the qname info for <code class="PARAMETER">mask</code>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetInfo.returns"></a><h4>Returns</h4>
+<p> pointer to the qname info for <em class="parameter"><code>mask</code></em>
or NULL if mask is unknown.</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKGETBITMASK"></a><h3>xmlSecQName2BitMaskGetBitMask ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2BitMaskGetBitMask (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qnameLocalPart</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qnameHref</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> *mask</code>);</pre>
-<p>Converts <code class="PARAMETER">qnameLocalPart</code>
- to <code class="PARAMETER">mask</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskGetBitMask"></a><h3>xmlSecQName2BitMaskGetBitMask ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2BitMaskGetBitMask (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qnameLocalPart</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qnameHref</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> *mask</code></em>);</pre>
+<p>Converts <em class="parameter"><code>qnameLocalPart</code></em>
+ to <em class="parameter"><code>mask</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28315"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28317"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetBitMask.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qnameLocalPart</p></td>
-<td><p>the qname LocalPart value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qnameHref</p></td>
+<td class="parameter_description"><p>the qname Href value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qnameHref</p></td>
-<td><p>the qname Href value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qnameLocalPart</p></td>
+<td class="parameter_description"><p>the qname LocalPart value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the pointer to result mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the pointer to result mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28344"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetBitMask.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKNODESREAD"></a><h3>xmlSecQName2BitMaskNodesRead ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2BitMaskNodesRead (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> *node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeNs</code>,
- <code class="PARAMETER"><font><span class="TYPE">int</span></font> stopOnUnknown</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> *mask</code>);</pre>
-<p>Reads &lt;<code class="PARAMETER">nodeNs</code>
-:<code class="PARAMETER">nodeName</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskNodesRead"></a><h3>xmlSecQName2BitMaskNodesRead ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2BitMaskNodesRead (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> *node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeNs</code></em>,
+ <em class="parameter"><code><font><span class="type">int</span></font> stopOnUnknown</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> *mask</code></em>);</pre>
+<p>Reads &lt;<em class="parameter"><code>nodeNs</code></em>
+:<em class="parameter"><code>nodeName</code></em>
&gt; elements and puts the result bit mask
-into <code class="PARAMETER">mask</code>
-. When function exits, <code class="PARAMETER">node</code>
+into <em class="parameter"><code>mask</code></em>
+. When function exits, <em class="parameter"><code>node</code></em>
points to the first element node
-after all the &lt;<code class="PARAMETER">nodeNs</code>
-:<code class="PARAMETER">nodeName</code>
+after all the &lt;<em class="parameter"><code>nodeNs</code></em>
+:<em class="parameter"><code>nodeName</code></em>
&gt; elements.</p>
-<div class="REFSECT3">
-<a name="AEN28379"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28381"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskNodesRead.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the start.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the start.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeName</p></td>
-<td><p>the mask nodes name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeName</p></td>
+<td class="parameter_description"><p>the mask nodes name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeNs</p></td>
-<td><p>the mask nodes namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeNs</p></td>
+<td class="parameter_description"><p>the mask nodes namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>stopOnUnknown</p></td>
-<td><p>if this flag is set then function exits if unknown
+<td class="parameter_name"><p>stopOnUnknown</p></td>
+<td class="parameter_description"><p>if this flag is set then function exits if unknown
value was found.</p></td>
-<td> </td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the pointer to result mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the pointer to result mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28420"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskNodesRead.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKGETBITMASKFROMSTRING"></a><h3>xmlSecQName2BitMaskGetBitMaskFromString ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskGetBitMaskFromString"></a><h3>xmlSecQName2BitMaskGetBitMaskFromString ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecQName2BitMaskGetBitMaskFromString
- (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *qname</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> *mask</code>);</pre>
-<p>Converts <code class="PARAMETER">qname</code>
- into integer in context of <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *qname</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> *mask</code></em>);</pre>
+<p>Converts <em class="parameter"><code>qname</code></em>
+ into integer in context of <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28445"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28447"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetBitMaskFromString.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>qname</p></td>
-<td><p>the qname string.</p></td>
-<td> </td>
+<td class="parameter_name"><p>qname</p></td>
+<td class="parameter_description"><p>the qname string.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the pointer to result msk value.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the pointer to result msk value.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28474"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetBitMaskFromString.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKGETSTRINGFROMBITMASK"></a><h3>xmlSecQName2BitMaskGetStringFromBitMask ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">xmlChar</span></font> *
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskGetStringFromBitMask"></a><h3>xmlSecQName2BitMaskGetStringFromBitMask ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
xmlSecQName2BitMaskGetStringFromBitMask
- (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> mask</code>);</pre>
-<p>Creates qname string for <code class="PARAMETER">mask</code>
- in context of given <code class="PARAMETER">node</code>
+ (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> mask</code></em>);</pre>
+<p>Creates qname string for <em class="parameter"><code>mask</code></em>
+ in context of given <em class="parameter"><code>node</code></em>
. Caller
-is responsible for freeing returned string with <code class="PARAMETER">xmlFree</code>
+is responsible for freeing returned string with <em class="parameter"><code>xmlFree</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28497"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28499"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetStringFromBitMask.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;integer mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;integer mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the pointer to node.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the pointer to node.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28520"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskGetStringFromBitMask.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated string on success or NULL if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKNODESWRITE"></a><h3>xmlSecQName2BitMaskNodesWrite ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">int</span></font>
-xmlSecQName2BitMaskNodesWrite (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><font><span class="TYPE">xmlNodePtr</span></font> node</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeName</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *nodeNs</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> mask</code>);</pre>
-<p>Writes &lt;<code class="PARAMETER">nodeNs</code>
-:<code class="PARAMETER">nodeName</code>
-&gt; elemnts with values from <code class="PARAMETER">mask</code>
- to <code class="PARAMETER">node</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskNodesWrite"></a><h3>xmlSecQName2BitMaskNodesWrite ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">int</span></font>
+xmlSecQName2BitMaskNodesWrite (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> node</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeName</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *nodeNs</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> mask</code></em>);</pre>
+<p>Writes &lt;<em class="parameter"><code>nodeNs</code></em>
+:<em class="parameter"><code>nodeName</code></em>
+&gt; elemnts with values from <em class="parameter"><code>mask</code></em>
+ to <em class="parameter"><code>node</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28550"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28552"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskNodesWrite.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>node</p></td>
-<td><p>the parent element for mask nodes.</p></td>
-<td> </td>
+<td class="parameter_name"><p>node</p></td>
+<td class="parameter_description"><p>the parent element for mask nodes.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeName</p></td>
-<td><p>the mask nodes name.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeName</p></td>
+<td class="parameter_description"><p>the mask nodes name.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>nodeNs</p></td>
-<td><p>the mask nodes namespace.</p></td>
-<td> </td>
+<td class="parameter_name"><p>nodeNs</p></td>
+<td class="parameter_description"><p>the mask nodes namespace.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the bit mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the bit mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
-<div class="REFSECT3">
-<a name="AEN28585"></a><h4>Returns</h4>
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskNodesWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or a negative value if an error occurs,</p>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKDEBUGDUMP"></a><h3>xmlSecQName2BitMaskDebugDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecQName2BitMaskDebugDump (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> mask</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">mask</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskDebugDump"></a><h3>xmlSecQName2BitMaskDebugDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecQName2BitMaskDebugDump (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> mask</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>mask</code></em>
+ to <em class="parameter"><code>output</code></em>
.</p>
-<div class="REFSECT3">
-<a name="AEN28610"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28612"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskDebugDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the bit mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the bit mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the value name to print.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the value name to print.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKDEBUGXMLDUMP"></a><h3>xmlSecQName2BitMaskDebugXmlDump ()</h3>
-<pre class="PROGRAMLISTING"><font><span class="RETURNVALUE">void</span></font>
-xmlSecQName2BitMaskDebugXmlDump (<code class="PARAMETER"><font><span class="TYPE">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code>,
- <code class="PARAMETER"><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> mask</code>,
- <code class="PARAMETER">const <font><span class="TYPE">xmlChar</span></font> *name</code>,
- <code class="PARAMETER"><font><span class="TYPE">FILE</span></font> *output</code>);</pre>
-<p>Prints debug information about <code class="PARAMETER">mask</code>
- to <code class="PARAMETER">output</code>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskDebugXmlDump"></a><h3>xmlSecQName2BitMaskDebugXmlDump ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">void</span></font>
+xmlSecQName2BitMaskDebugXmlDump (<em class="parameter"><code><font><span class="type">xmlSecQName2BitMaskInfoConstPtr</span></font> info</code></em>,
+ <em class="parameter"><code><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> mask</code></em>,
+ <em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *name</code></em>,
+ <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
+<p>Prints debug information about <em class="parameter"><code>mask</code></em>
+ to <em class="parameter"><code>output</code></em>
in XML format.</p>
-<div class="REFSECT3">
-<a name="AEN28661"></a><h4>Parameters</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28663"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskDebugXmlDump.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>info</p></td>
-<td><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
-<td> </td>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>the qname&lt;-&gt;bit mask mapping information.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>mask</p></td>
-<td><p>the bit mask.</p></td>
-<td> </td>
+<td class="parameter_name"><p>mask</p></td>
+<td class="parameter_description"><p>the bit mask.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>name</p></td>
-<td><p>the value name to print.</p></td>
-<td> </td>
+<td class="parameter_name"><p>name</p></td>
+<td class="parameter_description"><p>the value name to print.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
<tr>
-<td><p>output</p></td>
-<td><p>the pointer to output FILE.</p></td>
-<td> </td>
+<td class="parameter_name"><p>output</p></td>
+<td class="parameter_description"><p>the pointer to output FILE.</p></td>
+<td class="parameter_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
+</table></div>
</div>
</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertLocaleToUnicode"></a><h3>xmlSecWin32ConvertLocaleToUnicode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">LPWSTR</span></font>
+xmlSecWin32ConvertLocaleToUnicode (<em class="parameter"><code>const <font><span class="type">char</span></font> *str</code></em>);</pre>
+<p>Converts input string from current system locale to Unicode.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertLocaleToUnicode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertLocaleToUnicode.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertUtf8ToUnicode"></a><h3>xmlSecWin32ConvertUtf8ToUnicode ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">LPWSTR</span></font>
+xmlSecWin32ConvertUtf8ToUnicode (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Converts input string from UTF8 to Unicode.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToUnicode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToUnicode.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertUnicodeToUtf8"></a><h3>xmlSecWin32ConvertUnicodeToUtf8 ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecWin32ConvertUnicodeToUtf8 (<em class="parameter"><code><font><span class="type">LPCWSTR</span></font> str</code></em>);</pre>
+<p>Converts input string from Unicode to UTF8.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUnicodeToUtf8.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUnicodeToUtf8.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
</div>
-<div class="REFSECT1">
-<a name="XMLSEC-XMLTREE.OTHER_DETAILS"></a><h2>Types and Values</h2>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERINFO"></a><h3>struct xmlSecQName2IntegerInfo</h3>
-<pre class="PROGRAMLISTING">struct xmlSecQName2IntegerInfo {
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertLocaleToUtf8"></a><h3>xmlSecWin32ConvertLocaleToUtf8 ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecWin32ConvertLocaleToUtf8 (<em class="parameter"><code>const <font><span class="type">char</span></font> *str</code></em>);</pre>
+<p>Converts input string from locale to UTF8.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertLocaleToUtf8.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertLocaleToUtf8.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertUtf8ToLocale"></a><h3>xmlSecWin32ConvertUtf8ToLocale ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">char</span></font> *
+xmlSecWin32ConvertUtf8ToLocale (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Converts input string from UTF8 to locale.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToLocale.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToLocale.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertTstrToUtf8"></a><h3>xmlSecWin32ConvertTstrToUtf8 ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">xmlChar</span></font> *
+xmlSecWin32ConvertTstrToUtf8 (<em class="parameter"><code><font><span class="type">LPCTSTR</span></font> str</code></em>);</pre>
+<p>Converts input string from TSTR (locale or Unicode) to UTF8.</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertTstrToUtf8.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertTstrToUtf8.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="xmlSecWin32ConvertUtf8ToTstr"></a><h3>xmlSecWin32ConvertUtf8ToTstr ()</h3>
+<pre class="programlisting"><font><span class="returnvalue">LPTSTR</span></font>
+xmlSecWin32ConvertUtf8ToTstr (<em class="parameter"><code>const <font><span class="type">xmlChar</span></font> *str</code></em>);</pre>
+<p>Converts input string from UTF8 to TSTR (locale or Unicode).</p>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToTstr.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>str</p></td>
+<td class="parameter_description"><p>the string to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="xmlSecWin32ConvertUtf8ToTstr.returns"></a><h4>Returns</h4>
+<p> a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.</p>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="xmlsec-xmltree.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerInfo"></a><h3>struct xmlSecQName2IntegerInfo</h3>
+<pre class="programlisting">struct xmlSecQName2IntegerInfo {
const xmlChar* qnameHref;
const xmlChar* qnameLocalPart;
int intValue;
-};</pre>
+};
+</pre>
<p>QName &lt;-&gt; Integer conversion definition.</p>
-<div class="REFSECT3">
-<a name="AEN28698"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28700"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2IntegerInfo.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">qnameHref</code>;</p></td>
-<td><p>the QName href</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecQName2IntegerInfo.qnameHref"></a>qnameHref</code></em>;</p></td>
+<td class="struct_member_description"><p>the QName href</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">qnameLocalPart</code>;</p></td>
-<td><p>the QName local</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecQName2IntegerInfo.qnameLocalPart"></a>qnameLocalPart</code></em>;</p></td>
+<td class="struct_member_description"><p>the QName local</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><font><span class="TYPE">int</span></font> <code class="STRUCTFIELD">intValue</code>;</p></td>
-<td><p>the integer value</p></td>
-<td> </td>
+<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecQName2IntegerInfo.intValue"></a>intValue</code></em>;</p></td>
+<td class="struct_member_description"><p>the integer value</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2INTEGERINFOCONSTPTR"></a><h3>xmlSecQName2IntegerInfoConstPtr</h3>
-<pre class="PROGRAMLISTING">typedef const xmlSecQName2IntegerInfo * xmlSecQName2IntegerInfoConstPtr;</pre>
+<div class="refsect2">
+<a name="xmlSecQName2IntegerInfoConstPtr"></a><h3>xmlSecQName2IntegerInfoConstPtr</h3>
+<pre class="programlisting">typedef const xmlSecQName2IntegerInfo * xmlSecQName2IntegerInfoConstPtr;
+</pre>
<p>Pointer to constant QName &lt;-&gt; Integer conversion definition.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECBITMASK"></a><h3>xmlSecBitMask</h3>
-<pre class="PROGRAMLISTING">typedef unsigned int xmlSecBitMask;</pre>
+<div class="refsect2">
+<a name="xmlSecBitMask"></a><h3>xmlSecBitMask</h3>
+<pre class="programlisting">typedef unsigned int xmlSecBitMask;
+</pre>
<p>Bitmask datatype.</p>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKINFO"></a><h3>struct xmlSecQName2BitMaskInfo</h3>
-<pre class="PROGRAMLISTING">struct xmlSecQName2BitMaskInfo {
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskInfo"></a><h3>struct xmlSecQName2BitMaskInfo</h3>
+<pre class="programlisting">struct xmlSecQName2BitMaskInfo {
const xmlChar* qnameHref;
const xmlChar* qnameLocalPart;
xmlSecBitMask mask;
-};</pre>
+};
+</pre>
<p>QName &lt;-&gt; Bitmask conversion definition.</p>
-<div class="REFSECT3">
-<a name="AEN28748"></a><h4>Members</h4>
-<div class="INFORMALTABLE">
-<p></p>
-<a name="AEN28750"></a><table border="0" frame="void" width="100%" class="CALSTABLE">
+<div class="refsect3">
+<a name="xmlSecQName2BitMaskInfo.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
<col>
<col>
<col>
+</colgroup>
<tbody>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">qnameHref</code>;</p></td>
-<td><p>the QName href</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecQName2BitMaskInfo.qnameHref"></a>qnameHref</code></em>;</p></td>
+<td class="struct_member_description"><p>the QName href</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p>const <font><span class="TYPE">xmlChar</span></font> *<code class="STRUCTFIELD">qnameLocalPart</code>;</p></td>
-<td><p>the QName local</p></td>
-<td> </td>
+<td class="struct_member_name"><p>const <font><span class="type">xmlChar</span></font> *<em class="structfield"><code><a name="xmlSecQName2BitMaskInfo.qnameLocalPart"></a>qnameLocalPart</code></em>;</p></td>
+<td class="struct_member_description"><p>the QName local</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
<tr>
-<td><p><a href="xmlsec-xmltree.html#XMLSECBITMASK"><span class="TYPE">xmlSecBitMask</span></a> <code class="STRUCTFIELD">mask</code>;</p></td>
-<td><p>the bitmask value</p></td>
-<td> </td>
+<td class="struct_member_name"><p><a class="link" href="xmlsec-xmltree.html#xmlSecBitMask" title="xmlSecBitMask"><span class="type">xmlSecBitMask</span></a> <em class="structfield"><code><a name="xmlSecQName2BitMaskInfo.mask"></a>mask</code></em>;</p></td>
+<td class="struct_member_description"><p>the bitmask value</p></td>
+<td class="struct_member_annotations"> </td>
</tr>
</tbody>
-</table>
-<p></p>
-</div>
+</table></div>
</div>
</div>
<hr>
-<div class="REFSECT2">
-<a name="XMLSECQNAME2BITMASKINFOCONSTPTR"></a><h3>xmlSecQName2BitMaskInfoConstPtr</h3>
-<pre class="PROGRAMLISTING">typedef const xmlSecQName2BitMaskInfo* xmlSecQName2BitMaskInfoConstPtr;</pre>
+<div class="refsect2">
+<a name="xmlSecQName2BitMaskInfoConstPtr"></a><h3>xmlSecQName2BitMaskInfoConstPtr</h3>
+<pre class="programlisting">typedef const xmlSecQName2BitMaskInfo* xmlSecQName2BitMaskInfoConstPtr;
+</pre>
<p>Pointer to constant QName &lt;-&gt; Bitmask conversion definition.</p>
</div>
</div>
-<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="2"><tr valign="middle">
-<td align="left"><a accesskey="p" href="xmlsec-xmlsec.html"><b>&lt;&lt;&lt; xmlsec</b></a></td>
-<td align="right"><a accesskey="n" href="xmlsec-x509.html"><b>x509 &gt;&gt;&gt;</b></a></td>
-</tr></table>
-</td></tr></table></td>
-</tr></table></body>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.27</div>
+</body>
</html>
diff --git a/docs/api/xmlsec.devhelp2 b/docs/api/xmlsec.devhelp2
new file mode 100644
index 00000000..cfffbeb6
--- /dev/null
+++ b/docs/api/xmlsec.devhelp2
@@ -0,0 +1,2098 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<book xmlns="http://www.devhelp.net/book" title="XML Security Library Reference Manual" link="index.html" author="Aleksey Sanin" name="xmlsec" version="2" language="c">
+ <chapters>
+ <sub name="XML Security Library Tutorial" link="xmlsec-notes.html">
+ <sub name="Overview." link="xmlsec-notes-overview.html"/>
+ <sub name="XML Security Library Structure." link="xmlsec-notes-structure.html"/>
+ <sub name="Building the application with XML Security Library." link="xmlsec-notes-compiling.html">
+ <sub name="Overview." link="xmlsec-notes-compiling.html#xmlsec-notes-compiling-overview"/>
+ <sub name="Include files." link="xmlsec-notes-include-files.html"/>
+ <sub name="Compiling and linking on Unix." link="xmlsec-notes-compiling-unix.html"/>
+ <sub name="Compiling and linking on Windows." link="xmlsec-notes-compiling-windows.html"/>
+ <sub name="Compiling and linking on other systems." link="xmlsec-notes-compiling-others.html"/>
+ </sub>
+ <sub name="Initialization and shutdown." link="xmlsec-notes-init-shutdown.html"/>
+ <sub name="Signing and encrypting documents." link="xmlsec-notes-sign-encrypt.html">
+ <sub name="Overview." link="xmlsec-notes-sign-encrypt.html#xmlsec-notes-sign-encrypt-overview"/>
+ <sub name="Signing a document." link="xmlsec-notes-sign.html"/>
+ <sub name="Encrypting data." link="xmlsec-notes-encrypt.html"/>
+ </sub>
+ <sub name="Creating dynamic templates." link="xmlsec-notes-templates.html">
+ <sub name="Overview." link="xmlsec-notes-templates.html#xmlsec-notes-templates-overview"/>
+ <sub name="Creating dynamic signature templates." link="xmlsec-notes-dynamic-signature-templates.html"/>
+ <sub name="Creating dynamic encryption templates." link="xmlsec-notes-dynamic-encryption-templates.html"/>
+ </sub>
+ <sub name="Verifing and decrypting documents." link="xmlsec-notes-verify-decrypt.html">
+ <sub name="Overview." link="xmlsec-notes-verify-decrypt.html#xmlsec-notes-verify-decrypt-overview"/>
+ <sub name="Verifying a signed document" link="xmlsec-notes-verify.html"/>
+ <sub name="Decrypting an encrypted document" link="xmlsec-notes-decrypt.html"/>
+ </sub>
+ <sub name="Keys." link="xmlsec-notes-keys.html"/>
+ <sub name="Keys manager." link="xmlsec-notes-keysmngr.html">
+ <sub name="Overview." link="xmlsec-notes-keysmngr.html#xmlsec-notes-keysmngr-overview"/>
+ <sub name="Simple keys store." link="xmlsec-notes-simple-keys-store.html"/>
+ <sub name="Using keys manager for signatures/encryption." link="xmlsec-notes-keys-manager-sign-enc.html"/>
+ <sub name="Using keys manager for verification/decryption." link="xmlsec-notes-keys-mngr-verify-decrypt.html"/>
+ <sub name="Implementing a custom keys store." link="xmlsec-notes-custom-keys-store.html"/>
+ </sub>
+ <sub name="Using X509 Certificates." link="xmlsec-notes-x509.html">
+ <sub name="Overview." link="xmlsec-notes-x509.html#xmlsec-notes-x509-overview"/>
+ <sub name="Signing data with X509 certificate." link="xmlsec-notes-sign-x509.html"/>
+ <sub name="Verifing document signed with X509 certificates." link="xmlsec-notes-verify-x509.html"/>
+ </sub>
+ <sub name="Transforms and transforms chain." link="xmlsec-notes-transforms.html"/>
+ <sub name="Using context objects." link="xmlsec-notes-contexts.html"/>
+ <sub name="Adding support for new cryptographic library." link="xmlsec-notes-new-crypto.html">
+ <sub name="Overview." link="xmlsec-notes-new-crypto.html#xmlsec-notes-new-crypto-overview"/>
+ <sub name="Creating a framework from the skeleton." link="xmlsec-notes-new-crypto-skeleton.html"/>
+ <sub name="xmlSecCryptoApp* functions." link="xmlsec-notes-new-crypto-functions.html"/>
+ <sub name="Klasses and objects." link="xmlsec-notes-new-crypto-klasses.html"/>
+ <sub name="Cryptographic transforms." link="xmlsec-notes-new-crypto-transforms.html"/>
+ <sub name="Keys data and keys data stores." link="xmlsec-notes-new-crypto-keys.html"/>
+ <sub name="Default keys manager." link="xmlsec-notes-new-crypto-simple-keys-mngr.html"/>
+ <sub name="Sharing the results." link="xmlsec-notes-new-crypto-sharing-results.html"/>
+ </sub>
+ <sub name="Examples." link="xmlsec-examples.html">
+ <sub name="XML Security Library Examples." link="xmlsec-examples.html#xmlsec-examples-overview"/>
+ <sub name="Signing a template file." link="xmlsec-examples-sign-template-file.html"/>
+ <sub name="Signing a dynamicaly created template." link="xmlsec-examples-sign-dynamimc-template.html"/>
+ <sub name="Signing with X509 certificate." link="xmlsec-examples-sign-x509.html"/>
+ <sub name="Verifying a signature with a single key." link="xmlsec-verify-with-key.html"/>
+ <sub name="Verifying a signature with keys manager." link="xmlsec-verify-with-keys-mngr.html"/>
+ <sub name="Verifying a signature with X509 certificates." link="xmlsec-verify-with-x509.html"/>
+ <sub name="Verifying a signature with additional restrictions." link="xmlsec-verify-with-restrictions.html"/>
+ <sub name="Encrypting data with a template file." link="xmlsec-encrypt-template-file.html"/>
+ <sub name="Encrypting data with a dynamicaly created template." link="xmlsec-encrypt-dynamic-template.html"/>
+ <sub name="Encrypting data with a session key." link="xmlsec-encrypt-with-session-key.html"/>
+ <sub name="Decrypting data with a single key." link="xmlsec-decrypt-with-signle-key.html"/>
+ <sub name="Decrypting data with keys manager." link="xmlsec-decrypt-with-keys-mngr.html"/>
+ <sub name="Writing a custom keys manager." link="xmlsec-custom-keys-manager.html"/>
+ </sub>
+ <sub name="APPENDIX A. XML Security Library Signature Klasses." link="xmlsec-signature-klasses.html"/>
+ <sub name="APPENDIX B. XML Security Library Encryption Klasses." link="xmlsec-encryption-klasses.html"/>
+ </sub>
+ <sub name="XML Security Library API Reference." link="xmlsec-reference.html">
+ <sub name="XML Security Core Library API Reference." link="xmlsec-ref.html">
+ <sub name="app" link="xmlsec-app.html"/>
+ <sub name="base64" link="xmlsec-base64.html"/>
+ <sub name="bn" link="xmlsec-bn.html"/>
+ <sub name="buffer" link="xmlsec-buffer.html"/>
+ <sub name="dl" link="xmlsec-dl.html"/>
+ <sub name="errors" link="xmlsec-errors.html"/>
+ <sub name="io" link="xmlsec-io.html"/>
+ <sub name="keyinfo" link="xmlsec-keyinfo.html"/>
+ <sub name="keysdata" link="xmlsec-keysdata.html"/>
+ <sub name="keys" link="xmlsec-keys.html"/>
+ <sub name="keysmngr" link="xmlsec-keysmngr.html"/>
+ <sub name="list" link="xmlsec-list.html"/>
+ <sub name="membuf" link="xmlsec-membuf.html"/>
+ <sub name="nodeset" link="xmlsec-nodeset.html"/>
+ <sub name="parser" link="xmlsec-parser.html"/>
+ <sub name="templates" link="xmlsec-templates.html"/>
+ <sub name="transforms" link="xmlsec-transforms.html"/>
+ <sub name="version" link="xmlsec-version.html"/>
+ <sub name="xmldsig" link="xmlsec-xmldsig.html"/>
+ <sub name="xmlenc" link="xmlsec-xmlenc.html"/>
+ <sub name="xmlsec" link="xmlsec-xmlsec.html"/>
+ <sub name="xmltree" link="xmlsec-xmltree.html"/>
+ <sub name="x509" link="xmlsec-x509.html"/>
+ </sub>
+ <sub name="XML Security Library for OpenSLL API Reference." link="xmlsec-openssl-ref.html">
+ <sub name="app" link="xmlsec-openssl-app.html"/>
+ <sub name="bn" link="xmlsec-openssl-bn.html"/>
+ <sub name="crypto" link="xmlsec-openssl-crypto.html"/>
+ <sub name="evp" link="xmlsec-openssl-evp.html"/>
+ <sub name="x509" link="xmlsec-openssl-x509.html"/>
+ </sub>
+ <sub name="XML Security Library for GnuTLS API Reference." link="xmlsec-gnutls-ref.html">
+ <sub name="app" link="xmlsec-gnutls-app.html"/>
+ <sub name="crypto" link="xmlsec-gnutls-crypto.html"/>
+ <sub name="x509" link="xmlsec-gnutls-x509.html"/>
+ </sub>
+ <sub name="XML Security Library for GCrypt API Reference." link="xmlsec-gcrypt-ref.html">
+ <sub name="app" link="xmlsec-gcrypt-app.html"/>
+ <sub name="crypto" link="xmlsec-gcrypt-crypto.html"/>
+ </sub>
+ <sub name="XML Security Library for NSS API Reference." link="xmlsec-nss-ref.html">
+ <sub name="app" link="xmlsec-nss-app.html"/>
+ <sub name="bignum" link="xmlsec-nss-bignum.html"/>
+ <sub name="crypto" link="xmlsec-nss-crypto.html"/>
+ <sub name="keysstore" link="xmlsec-nss-keysstore.html"/>
+ <sub name="pkikeys" link="xmlsec-nss-pkikeys.html"/>
+ <sub name="x509" link="xmlsec-nss-x509.html"/>
+ </sub>
+ <sub name="XML Security Library for Microsoft Crypto API Reference." link="xmlsec-mscrypto-ref.html">
+ <sub name="app" link="xmlsec-mscrypto-app.html"/>
+ <sub name="certkeys" link="xmlsec-mscrypto-certkeys.html"/>
+ <sub name="crypto" link="xmlsec-mscrypto-crypto.html"/>
+ <sub name="keysstore" link="xmlsec-mscrypto-keysstore.html"/>
+ <sub name="x509" link="xmlsec-mscrypto-x509.html"/>
+ </sub>
+ <sub name="XML Security Library for Microsoft Cryptography API: Next Generation (CNG) Reference." link="xmlsec-msccng-ref.html">
+ <sub name="app" link="xmlsec-mscng-app.html"/>
+ <sub name="certkeys" link="xmlsec-mscng-certkeys.html"/>
+ <sub name="crypto" link="xmlsec-mscng-crypto.html"/>
+ <sub name="keysstore" link="xmlsec-mscng-keysstore.html"/>
+ <sub name="x509" link="xmlsec-mscng-x509.html"/>
+ </sub>
+ <sub name="XML Security Library Reference Index" link="xmlsec-index.html"/>
+ </sub>
+ </chapters>
+ <functions>
+ <keyword type="function" name="xmlSecCryptoInit ()" link="xmlsec-app.html#xmlSecCryptoInit"/>
+ <keyword type="function" name="xmlSecCryptoShutdown ()" link="xmlsec-app.html#xmlSecCryptoShutdown"/>
+ <keyword type="function" name="xmlSecCryptoKeysMngrInit ()" link="xmlsec-app.html#xmlSecCryptoKeysMngrInit"/>
+ <keyword type="function" name="xmlSecKeyDataAesGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataDesGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataDsaGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataEcdsaGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataEcdsaGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataGost2001GetKlass ()" link="xmlsec-app.html#xmlSecKeyDataGost2001GetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataGostR3410_2012_256GetKlass ()" link="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataGostR3410_2012_512GetKlass ()" link="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataHmacGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataRsaGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataX509GetKlass ()" link="xmlsec-app.html#xmlSecKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataRawX509CertGetKlass ()" link="xmlsec-app.html#xmlSecKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecX509StoreGetKlass ()" link="xmlsec-app.html#xmlSecX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes128CbcGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes192CbcGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes256CbcGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes128GcmGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes128GcmGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes192GcmGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes192GcmGetKlass"/>
+ <keyword type="function" name="xmlSecTransformAes256GcmGetKlass ()" link="xmlsec-app.html#xmlSecTransformAes256GcmGetKlass"/>
+ <keyword type="function" name="xmlSecTransformKWAes128GetKlass ()" link="xmlsec-app.html#xmlSecTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecTransformKWAes192GetKlass ()" link="xmlsec-app.html#xmlSecTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecTransformKWAes256GetKlass ()" link="xmlsec-app.html#xmlSecTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformDes3CbcGetKlass ()" link="xmlsec-app.html#xmlSecTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecTransformKWDes3GetKlass ()" link="xmlsec-app.html#xmlSecTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecTransformDsaSha1GetKlass ()" link="xmlsec-app.html#xmlSecTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformDsaSha256GetKlass ()" link="xmlsec-app.html#xmlSecTransformDsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformEcdsaSha1GetKlass ()" link="xmlsec-app.html#xmlSecTransformEcdsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformEcdsaSha224GetKlass ()" link="xmlsec-app.html#xmlSecTransformEcdsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecTransformEcdsaSha256GetKlass ()" link="xmlsec-app.html#xmlSecTransformEcdsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformEcdsaSha384GetKlass ()" link="xmlsec-app.html#xmlSecTransformEcdsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecTransformEcdsaSha512GetKlass ()" link="xmlsec-app.html#xmlSecTransformEcdsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecTransformGost2001GostR3411_94GetKlass ()" link="xmlsec-app.html#xmlSecTransformGost2001GostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass ()" link="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass ()" link="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacMd5GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacRipemd160GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacSha1GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacSha224GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacSha224GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacSha256GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacSha384GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecTransformHmacSha512GetKlass ()" link="xmlsec-app.html#xmlSecTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecTransformMd5GetKlass ()" link="xmlsec-app.html#xmlSecTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRipemd160GetKlass ()" link="xmlsec-app.html#xmlSecTransformRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaMd5GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaRipemd160GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaSha1GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaSha224GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaSha256GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaSha384GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaSha512GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaPkcs1GetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaPkcs1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformRsaOaepGetKlass ()" link="xmlsec-app.html#xmlSecTransformRsaOaepGetKlass"/>
+ <keyword type="function" name="xmlSecTransformGostR3411_94GetKlass ()" link="xmlsec-app.html#xmlSecTransformGostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecTransformGostR3411_2012_256GetKlass ()" link="xmlsec-app.html#xmlSecTransformGostR3411-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformGostR3411_2012_512GetKlass ()" link="xmlsec-app.html#xmlSecTransformGostR3411-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecTransformSha1GetKlass ()" link="xmlsec-app.html#xmlSecTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecTransformSha224GetKlass ()" link="xmlsec-app.html#xmlSecTransformSha224GetKlass"/>
+ <keyword type="function" name="xmlSecTransformSha256GetKlass ()" link="xmlsec-app.html#xmlSecTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecTransformSha384GetKlass ()" link="xmlsec-app.html#xmlSecTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecTransformSha512GetKlass ()" link="xmlsec-app.html#xmlSecTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecCryptoAppInit ()" link="xmlsec-app.html#xmlSecCryptoAppInit"/>
+ <keyword type="function" name="xmlSecCryptoAppShutdown ()" link="xmlsec-app.html#xmlSecCryptoAppShutdown"/>
+ <keyword type="function" name="xmlSecCryptoAppDefaultKeysMngrInit ()" link="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecCryptoAppDefaultKeysMngrAdoptKey ()" link="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecCryptoAppDefaultKeysMngrLoad ()" link="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecCryptoAppDefaultKeysMngrSave ()" link="xmlsec-app.html#xmlSecCryptoAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecCryptoAppKeysMngrCertLoad ()" link="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecCryptoAppKeysMngrCertLoadMemory ()" link="xmlsec-app.html#xmlSecCryptoAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecCryptoAppKeyLoad ()" link="xmlsec-app.html#xmlSecCryptoAppKeyLoad"/>
+ <keyword type="function" name="xmlSecCryptoAppKeyLoadMemory ()" link="xmlsec-app.html#xmlSecCryptoAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecCryptoAppPkcs12Load ()" link="xmlsec-app.html#xmlSecCryptoAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecCryptoAppPkcs12LoadMemory ()" link="xmlsec-app.html#xmlSecCryptoAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecCryptoAppKeyCertLoad ()" link="xmlsec-app.html#xmlSecCryptoAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecCryptoAppKeyCertLoadMemory ()" link="xmlsec-app.html#xmlSecCryptoAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecCryptoAppGetDefaultPwdCallback ()" link="xmlsec-app.html#xmlSecCryptoAppGetDefaultPwdCallback"/>
+ <keyword type="macro" name="xmlSecKeyDataAesId" link="xmlsec-app.html#xmlSecKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecKeyDataDesId" link="xmlsec-app.html#xmlSecKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecKeyDataDsaId" link="xmlsec-app.html#xmlSecKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecKeyDataEcdsaId" link="xmlsec-app.html#xmlSecKeyDataEcdsaId"/>
+ <keyword type="macro" name="xmlSecKeyDataGost2001Id" link="xmlsec-app.html#xmlSecKeyDataGost2001Id"/>
+ <keyword type="macro" name="xmlSecKeyDataGostR3410_2012_256Id" link="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-256Id"/>
+ <keyword type="macro" name="xmlSecKeyDataGostR3410_2012_512Id" link="xmlsec-app.html#xmlSecKeyDataGostR3410-2012-512Id"/>
+ <keyword type="macro" name="xmlSecKeyDataHmacId" link="xmlsec-app.html#xmlSecKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecKeyDataRsaId" link="xmlsec-app.html#xmlSecKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecKeyDataX509Id" link="xmlsec-app.html#xmlSecKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecKeyDataRawX509CertId" link="xmlsec-app.html#xmlSecKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecX509StoreId" link="xmlsec-app.html#xmlSecX509StoreId"/>
+ <keyword type="macro" name="xmlSecTransformAes128CbcId" link="xmlsec-app.html#xmlSecTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecTransformAes192CbcId" link="xmlsec-app.html#xmlSecTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecTransformAes256CbcId" link="xmlsec-app.html#xmlSecTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecTransformAes128GcmId" link="xmlsec-app.html#xmlSecTransformAes128GcmId"/>
+ <keyword type="macro" name="xmlSecTransformAes192GcmId" link="xmlsec-app.html#xmlSecTransformAes192GcmId"/>
+ <keyword type="macro" name="xmlSecTransformAes256GcmId" link="xmlsec-app.html#xmlSecTransformAes256GcmId"/>
+ <keyword type="macro" name="xmlSecTransformKWAes128Id" link="xmlsec-app.html#xmlSecTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecTransformKWAes192Id" link="xmlsec-app.html#xmlSecTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecTransformKWAes256Id" link="xmlsec-app.html#xmlSecTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecTransformDes3CbcId" link="xmlsec-app.html#xmlSecTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecTransformKWDes3Id" link="xmlsec-app.html#xmlSecTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecTransformDsaSha1Id" link="xmlsec-app.html#xmlSecTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecTransformDsaSha256Id" link="xmlsec-app.html#xmlSecTransformDsaSha256Id"/>
+ <keyword type="macro" name="xmlSecTransformEcdsaSha1Id" link="xmlsec-app.html#xmlSecTransformEcdsaSha1Id"/>
+ <keyword type="macro" name="xmlSecTransformEcdsaSha224Id" link="xmlsec-app.html#xmlSecTransformEcdsaSha224Id"/>
+ <keyword type="macro" name="xmlSecTransformEcdsaSha256Id" link="xmlsec-app.html#xmlSecTransformEcdsaSha256Id"/>
+ <keyword type="macro" name="xmlSecTransformEcdsaSha384Id" link="xmlsec-app.html#xmlSecTransformEcdsaSha384Id"/>
+ <keyword type="macro" name="xmlSecTransformEcdsaSha512Id" link="xmlsec-app.html#xmlSecTransformEcdsaSha512Id"/>
+ <keyword type="macro" name="xmlSecTransformGost2001GostR3411_94Id" link="xmlsec-app.html#xmlSecTransformGost2001GostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecTransformGostR3410_2012GostR3411_2012_256Id" link="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-256Id"/>
+ <keyword type="macro" name="xmlSecTransformGostR3410_2012GostR3411_2012_512Id" link="xmlsec-app.html#xmlSecTransformGostR3410-2012GostR3411-2012-512Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacMd5Id" link="xmlsec-app.html#xmlSecTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacRipemd160Id" link="xmlsec-app.html#xmlSecTransformHmacRipemd160Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacSha1Id" link="xmlsec-app.html#xmlSecTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacSha224Id" link="xmlsec-app.html#xmlSecTransformHmacSha224Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacSha256Id" link="xmlsec-app.html#xmlSecTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacSha384Id" link="xmlsec-app.html#xmlSecTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecTransformHmacSha512Id" link="xmlsec-app.html#xmlSecTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecTransformMd5Id" link="xmlsec-app.html#xmlSecTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecTransformRipemd160Id" link="xmlsec-app.html#xmlSecTransformRipemd160Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaMd5Id" link="xmlsec-app.html#xmlSecTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaRipemd160Id" link="xmlsec-app.html#xmlSecTransformRsaRipemd160Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaSha1Id" link="xmlsec-app.html#xmlSecTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaSha224Id" link="xmlsec-app.html#xmlSecTransformRsaSha224Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaSha256Id" link="xmlsec-app.html#xmlSecTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaSha384Id" link="xmlsec-app.html#xmlSecTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaSha512Id" link="xmlsec-app.html#xmlSecTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaPkcs1Id" link="xmlsec-app.html#xmlSecTransformRsaPkcs1Id"/>
+ <keyword type="macro" name="xmlSecTransformRsaOaepId" link="xmlsec-app.html#xmlSecTransformRsaOaepId"/>
+ <keyword type="macro" name="xmlSecTransformGostR3411_94Id" link="xmlsec-app.html#xmlSecTransformGostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecTransformGostR3411_2012_256Id" link="xmlsec-app.html#xmlSecTransformGostR3411-2012-256Id"/>
+ <keyword type="macro" name="xmlSecTransformGostR3411_2012_512Id" link="xmlsec-app.html#xmlSecTransformGostR3411-2012-512Id"/>
+ <keyword type="macro" name="xmlSecTransformSha1Id" link="xmlsec-app.html#xmlSecTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecTransformSha224Id" link="xmlsec-app.html#xmlSecTransformSha224Id"/>
+ <keyword type="macro" name="xmlSecTransformSha256Id" link="xmlsec-app.html#xmlSecTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecTransformSha384Id" link="xmlsec-app.html#xmlSecTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecTransformSha512Id" link="xmlsec-app.html#xmlSecTransformSha512Id"/>
+ <keyword type="function" name="xmlSecBase64GetDefaultLineSize ()" link="xmlsec-base64.html#xmlSecBase64GetDefaultLineSize"/>
+ <keyword type="function" name="xmlSecBase64SetDefaultLineSize ()" link="xmlsec-base64.html#xmlSecBase64SetDefaultLineSize"/>
+ <keyword type="function" name="xmlSecBase64CtxCreate ()" link="xmlsec-base64.html#xmlSecBase64CtxCreate"/>
+ <keyword type="function" name="xmlSecBase64CtxDestroy ()" link="xmlsec-base64.html#xmlSecBase64CtxDestroy"/>
+ <keyword type="function" name="xmlSecBase64CtxInitialize ()" link="xmlsec-base64.html#xmlSecBase64CtxInitialize"/>
+ <keyword type="function" name="xmlSecBase64CtxFinalize ()" link="xmlsec-base64.html#xmlSecBase64CtxFinalize"/>
+ <keyword type="function" name="xmlSecBase64CtxUpdate ()" link="xmlsec-base64.html#xmlSecBase64CtxUpdate"/>
+ <keyword type="function" name="xmlSecBase64CtxFinal ()" link="xmlsec-base64.html#xmlSecBase64CtxFinal"/>
+ <keyword type="function" name="xmlSecBase64Encode ()" link="xmlsec-base64.html#xmlSecBase64Encode"/>
+ <keyword type="function" name="xmlSecBase64Decode ()" link="xmlsec-base64.html#xmlSecBase64Decode"/>
+ <keyword type="macro" name="XMLSEC_BASE64_LINESIZE" link="xmlsec-base64.html#XMLSEC-BASE64-LINESIZE:CAPS"/>
+ <keyword type="function" name="xmlSecBnCreate ()" link="xmlsec-bn.html#xmlSecBnCreate"/>
+ <keyword type="function" name="xmlSecBnDestroy ()" link="xmlsec-bn.html#xmlSecBnDestroy"/>
+ <keyword type="function" name="xmlSecBnInitialize ()" link="xmlsec-bn.html#xmlSecBnInitialize"/>
+ <keyword type="function" name="xmlSecBnFinalize ()" link="xmlsec-bn.html#xmlSecBnFinalize"/>
+ <keyword type="function" name="xmlSecBnGetData ()" link="xmlsec-bn.html#xmlSecBnGetData"/>
+ <keyword type="function" name="xmlSecBnSetData ()" link="xmlsec-bn.html#xmlSecBnSetData"/>
+ <keyword type="function" name="xmlSecBnGetSize ()" link="xmlsec-bn.html#xmlSecBnGetSize"/>
+ <keyword type="function" name="xmlSecBnZero ()" link="xmlsec-bn.html#xmlSecBnZero"/>
+ <keyword type="function" name="xmlSecBnFromString ()" link="xmlsec-bn.html#xmlSecBnFromString"/>
+ <keyword type="function" name="xmlSecBnToString ()" link="xmlsec-bn.html#xmlSecBnToString"/>
+ <keyword type="function" name="xmlSecBnFromHexString ()" link="xmlsec-bn.html#xmlSecBnFromHexString"/>
+ <keyword type="function" name="xmlSecBnToHexString ()" link="xmlsec-bn.html#xmlSecBnToHexString"/>
+ <keyword type="function" name="xmlSecBnFromDecString ()" link="xmlsec-bn.html#xmlSecBnFromDecString"/>
+ <keyword type="function" name="xmlSecBnToDecString ()" link="xmlsec-bn.html#xmlSecBnToDecString"/>
+ <keyword type="function" name="xmlSecBnMul ()" link="xmlsec-bn.html#xmlSecBnMul"/>
+ <keyword type="function" name="xmlSecBnDiv ()" link="xmlsec-bn.html#xmlSecBnDiv"/>
+ <keyword type="function" name="xmlSecBnAdd ()" link="xmlsec-bn.html#xmlSecBnAdd"/>
+ <keyword type="function" name="xmlSecBnReverse ()" link="xmlsec-bn.html#xmlSecBnReverse"/>
+ <keyword type="function" name="xmlSecBnCompare ()" link="xmlsec-bn.html#xmlSecBnCompare"/>
+ <keyword type="function" name="xmlSecBnCompareReverse ()" link="xmlsec-bn.html#xmlSecBnCompareReverse"/>
+ <keyword type="function" name="xmlSecBnGetNodeValue ()" link="xmlsec-bn.html#xmlSecBnGetNodeValue"/>
+ <keyword type="function" name="xmlSecBnSetNodeValue ()" link="xmlsec-bn.html#xmlSecBnSetNodeValue"/>
+ <keyword type="function" name="xmlSecBnBlobSetNodeValue ()" link="xmlsec-bn.html#xmlSecBnBlobSetNodeValue"/>
+ <keyword type="enum" name="enum xmlSecBnFormat" link="xmlsec-bn.html#xmlSecBnFormat"/>
+ <keyword type="function" name="xmlSecBufferSetDefaultAllocMode ()" link="xmlsec-buffer.html#xmlSecBufferSetDefaultAllocMode"/>
+ <keyword type="function" name="xmlSecBufferCreate ()" link="xmlsec-buffer.html#xmlSecBufferCreate"/>
+ <keyword type="function" name="xmlSecBufferDestroy ()" link="xmlsec-buffer.html#xmlSecBufferDestroy"/>
+ <keyword type="function" name="xmlSecBufferInitialize ()" link="xmlsec-buffer.html#xmlSecBufferInitialize"/>
+ <keyword type="function" name="xmlSecBufferFinalize ()" link="xmlsec-buffer.html#xmlSecBufferFinalize"/>
+ <keyword type="function" name="xmlSecBufferGetData ()" link="xmlsec-buffer.html#xmlSecBufferGetData"/>
+ <keyword type="function" name="xmlSecBufferSetData ()" link="xmlsec-buffer.html#xmlSecBufferSetData"/>
+ <keyword type="function" name="xmlSecBufferGetSize ()" link="xmlsec-buffer.html#xmlSecBufferGetSize"/>
+ <keyword type="function" name="xmlSecBufferSetSize ()" link="xmlsec-buffer.html#xmlSecBufferSetSize"/>
+ <keyword type="function" name="xmlSecBufferGetMaxSize ()" link="xmlsec-buffer.html#xmlSecBufferGetMaxSize"/>
+ <keyword type="function" name="xmlSecBufferSetMaxSize ()" link="xmlsec-buffer.html#xmlSecBufferSetMaxSize"/>
+ <keyword type="function" name="xmlSecBufferEmpty ()" link="xmlsec-buffer.html#xmlSecBufferEmpty"/>
+ <keyword type="function" name="xmlSecBufferAppend ()" link="xmlsec-buffer.html#xmlSecBufferAppend"/>
+ <keyword type="function" name="xmlSecBufferPrepend ()" link="xmlsec-buffer.html#xmlSecBufferPrepend"/>
+ <keyword type="function" name="xmlSecBufferRemoveHead ()" link="xmlsec-buffer.html#xmlSecBufferRemoveHead"/>
+ <keyword type="function" name="xmlSecBufferRemoveTail ()" link="xmlsec-buffer.html#xmlSecBufferRemoveTail"/>
+ <keyword type="function" name="xmlSecBufferReadFile ()" link="xmlsec-buffer.html#xmlSecBufferReadFile"/>
+ <keyword type="function" name="xmlSecBufferBase64NodeContentRead ()" link="xmlsec-buffer.html#xmlSecBufferBase64NodeContentRead"/>
+ <keyword type="function" name="xmlSecBufferBase64NodeContentWrite ()" link="xmlsec-buffer.html#xmlSecBufferBase64NodeContentWrite"/>
+ <keyword type="function" name="xmlSecBufferCreateOutputBuffer ()" link="xmlsec-buffer.html#xmlSecBufferCreateOutputBuffer"/>
+ <keyword type="enum" name="enum xmlSecAllocMode" link="xmlsec-buffer.html#xmlSecAllocMode"/>
+ <keyword type="struct" name="struct xmlSecBuffer" link="xmlsec-buffer.html#xmlSecBuffer"/>
+ <keyword type="function" name="xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms ()" link="xmlsec-dl.html#xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms"/>
+ <keyword type="function" name="xmlSecCryptoDLInit ()" link="xmlsec-dl.html#xmlSecCryptoDLInit"/>
+ <keyword type="function" name="xmlSecCryptoDLShutdown ()" link="xmlsec-dl.html#xmlSecCryptoDLShutdown"/>
+ <keyword type="function" name="xmlSecCryptoDLLoadLibrary ()" link="xmlsec-dl.html#xmlSecCryptoDLLoadLibrary"/>
+ <keyword type="function" name="xmlSecCryptoDLGetLibraryFunctions ()" link="xmlsec-dl.html#xmlSecCryptoDLGetLibraryFunctions"/>
+ <keyword type="function" name="xmlSecCryptoDLUnloadLibrary ()" link="xmlsec-dl.html#xmlSecCryptoDLUnloadLibrary"/>
+ <keyword type="function" name="xmlSecCryptoDLSetFunctions ()" link="xmlsec-dl.html#xmlSecCryptoDLSetFunctions"/>
+ <keyword type="function" name="xmlSecCryptoDLGetFunctions ()" link="xmlsec-dl.html#xmlSecCryptoDLGetFunctions"/>
+ <keyword type="function" name="xmlSecErrorsCallback ()" link="xmlsec-errors.html#xmlSecErrorsCallback"/>
+ <keyword type="function" name="xmlSecErrorsInit ()" link="xmlsec-errors.html#xmlSecErrorsInit"/>
+ <keyword type="function" name="xmlSecErrorsShutdown ()" link="xmlsec-errors.html#xmlSecErrorsShutdown"/>
+ <keyword type="function" name="xmlSecErrorsSetCallback ()" link="xmlsec-errors.html#xmlSecErrorsSetCallback"/>
+ <keyword type="function" name="xmlSecErrorsDefaultCallback ()" link="xmlsec-errors.html#xmlSecErrorsDefaultCallback"/>
+ <keyword type="function" name="xmlSecErrorsDefaultCallbackEnableOutput ()" link="xmlsec-errors.html#xmlSecErrorsDefaultCallbackEnableOutput"/>
+ <keyword type="function" name="xmlSecErrorsGetCode ()" link="xmlsec-errors.html#xmlSecErrorsGetCode"/>
+ <keyword type="function" name="xmlSecErrorsGetMsg ()" link="xmlsec-errors.html#xmlSecErrorsGetMsg"/>
+ <keyword type="macro" name="xmlSecErrorsSafeString()" link="xmlsec-errors.html#xmlSecErrorsSafeString"/>
+ <keyword type="function" name="xmlSecError ()" link="xmlsec-errors.html#xmlSecError"/>
+ <keyword type="macro" name="xmlSecAssert()" link="xmlsec-errors.html#xmlSecAssert"/>
+ <keyword type="macro" name="xmlSecAssert2()" link="xmlsec-errors.html#xmlSecAssert2"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_XMLSEC_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-XMLSEC-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_MALLOC_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-MALLOC-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_STRDUP_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-STRDUP-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CRYPTO_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CRYPTO-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_XML_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-XML-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_XSLT_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-XSLT-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_IO_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-IO-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_DISABLED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-DISABLED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_NOT_IMPLEMENTED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-NOT-IMPLEMENTED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_CONFIG" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-CONFIG:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_SIZE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-SIZE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_DATA" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-DATA:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_RESULT" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-RESULT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_TYPE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TYPE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_OPERATION" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-OPERATION:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_STATUS" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-STATUS:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_FORMAT" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-FORMAT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_DATA_NOT_MATCH" link="xmlsec-errors.html#XMLSEC-ERRORS-R-DATA-NOT-MATCH:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_VERSION" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-VERSION:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_NODE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_NODE_CONTENT" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-CONTENT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-NODE-ATTRIBUTE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-MISSING-NODE-ATTRIBUTE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT" link="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-ALREADY-PRESENT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_UNEXPECTED_NODE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-UNEXPECTED-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_NODE_NOT_FOUND" link="xmlsec-errors.html#XMLSEC-ERRORS-R-NODE-NOT-FOUND:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_TRANSFORM" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-TRANSFORM-KEY:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_URI_TYPE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-URI-TYPE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-SAME-DOCUMENT-REQUIRED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_TRANSFORM_DISABLED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-TRANSFORM-DISABLED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_KEY_DATA" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND" link="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-NOT-FOUND:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST" link="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-DATA-ALREADY-EXIST:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-INVALID-KEY-DATA-SIZE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_KEY_NOT_FOUND" link="xmlsec-errors.html#XMLSEC-ERRORS-R-KEY-NOT-FOUND:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_KEYDATA_DISABLED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-KEYDATA-DISABLED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL" link="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVALS-LEVEL:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH" link="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-RETRIEVAL-TYPE-MISMATCH:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL" link="xmlsec-errors.html#XMLSEC-ERRORS-R-MAX-ENCKEY-LEVEL:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_VERIFY_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-VERIFY-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_NOT_FOUND" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-FOUND:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_REVOKED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-REVOKED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_ISSUER_FAILED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-ISSUER-FAILED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_NOT_YET_VALID" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-NOT-YET-VALID:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_CERT_HAS_EXPIRED" link="xmlsec-errors.html#XMLSEC-ERRORS-R-CERT-HAS-EXPIRED:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_DSIG_NO_REFERENCES" link="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-NO-REFERENCES:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE" link="xmlsec-errors.html#XMLSEC-ERRORS-R-DSIG-INVALID-REFERENCE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_R_ASSERTION" link="xmlsec-errors.html#XMLSEC-ERRORS-R-ASSERTION:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_MAX_NUMBER" link="xmlsec-errors.html#XMLSEC-ERRORS-MAX-NUMBER:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_HERE" link="xmlsec-errors.html#XMLSEC-ERRORS-HERE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_ERRORS_NO_MESSAGE" link="xmlsec-errors.html#XMLSEC-ERRORS-NO-MESSAGE:CAPS"/>
+ <keyword type="function" name="xmlSecIOInit ()" link="xmlsec-io.html#xmlSecIOInit"/>
+ <keyword type="function" name="xmlSecIOShutdown ()" link="xmlsec-io.html#xmlSecIOShutdown"/>
+ <keyword type="function" name="xmlSecIOCleanupCallbacks ()" link="xmlsec-io.html#xmlSecIOCleanupCallbacks"/>
+ <keyword type="function" name="xmlSecIORegisterDefaultCallbacks ()" link="xmlsec-io.html#xmlSecIORegisterDefaultCallbacks"/>
+ <keyword type="function" name="xmlSecIORegisterCallbacks ()" link="xmlsec-io.html#xmlSecIORegisterCallbacks"/>
+ <keyword type="function" name="xmlSecTransformInputURIGetKlass ()" link="xmlsec-io.html#xmlSecTransformInputURIGetKlass"/>
+ <keyword type="function" name="xmlSecTransformInputURIOpen ()" link="xmlsec-io.html#xmlSecTransformInputURIOpen"/>
+ <keyword type="function" name="xmlSecTransformInputURIClose ()" link="xmlsec-io.html#xmlSecTransformInputURIClose"/>
+ <keyword type="macro" name="xmlSecTransformInputURIId" link="xmlsec-io.html#xmlSecTransformInputURIId"/>
+ <keyword type="function" name="xmlSecKeyInfoNodeRead ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoNodeRead"/>
+ <keyword type="function" name="xmlSecKeyInfoNodeWrite ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoNodeWrite"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxCreate ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxDestroy ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxInitialize ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxFinalize ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxReset ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxReset"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxCopyUserPref ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCopyUserPref"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxCreateEncCtx ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreateEncCtx"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxDebugDump ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugDump"/>
+ <keyword type="function" name="xmlSecKeyInfoCtxDebugXmlDump ()" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyDataNameGetKlass ()" link="xmlsec-keyinfo.html#xmlSecKeyDataNameGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataValueGetKlass ()" link="xmlsec-keyinfo.html#xmlSecKeyDataValueGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataRetrievalMethodGetKlass ()" link="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataEncryptedKeyGetKlass ()" link="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyGetKlass"/>
+ <keyword type="enum" name="enum xmlSecKeyInfoMode" link="xmlsec-keyinfo.html#xmlSecKeyInfoMode"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS" link="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS"/>
+ <keyword type="struct" name="struct xmlSecKeyInfoCtx" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx"/>
+ <keyword type="macro" name="xmlSecKeyDataNameId" link="xmlsec-keyinfo.html#xmlSecKeyDataNameId"/>
+ <keyword type="macro" name="xmlSecKeyDataValueId" link="xmlsec-keyinfo.html#xmlSecKeyDataValueId"/>
+ <keyword type="macro" name="xmlSecKeyDataRetrievalMethodId" link="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodId"/>
+ <keyword type="macro" name="xmlSecKeyDataEncryptedKeyId" link="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyId"/>
+ <keyword type="function" name="xmlSecKeyDataIdsGet ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdsGet"/>
+ <keyword type="function" name="xmlSecKeyDataIdsInit ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdsInit"/>
+ <keyword type="function" name="xmlSecKeyDataIdsShutdown ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdsShutdown"/>
+ <keyword type="function" name="xmlSecKeyDataIdsRegisterDefault ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdsRegisterDefault"/>
+ <keyword type="function" name="xmlSecKeyDataIdsRegister ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdsRegister"/>
+ <keyword type="function" name="xmlSecKeyDataCreate ()" link="xmlsec-keysdata.html#xmlSecKeyDataCreate"/>
+ <keyword type="function" name="xmlSecKeyDataDuplicate ()" link="xmlsec-keysdata.html#xmlSecKeyDataDuplicate"/>
+ <keyword type="function" name="xmlSecKeyDataDestroy ()" link="xmlsec-keysdata.html#xmlSecKeyDataDestroy"/>
+ <keyword type="function" name="xmlSecKeyDataGenerate ()" link="xmlsec-keysdata.html#xmlSecKeyDataGenerate"/>
+ <keyword type="function" name="xmlSecKeyDataGetType ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetType"/>
+ <keyword type="function" name="xmlSecKeyDataGetSize ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetSize"/>
+ <keyword type="function" name="xmlSecKeyDataGetIdentifier ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifier"/>
+ <keyword type="function" name="xmlSecKeyDataDebugDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataDebugDump"/>
+ <keyword type="function" name="xmlSecKeyDataDebugXmlDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyDataXmlRead ()" link="xmlsec-keysdata.html#xmlSecKeyDataXmlRead"/>
+ <keyword type="function" name="xmlSecKeyDataXmlWrite ()" link="xmlsec-keysdata.html#xmlSecKeyDataXmlWrite"/>
+ <keyword type="function" name="xmlSecKeyDataBinRead ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinRead"/>
+ <keyword type="function" name="xmlSecKeyDataBinWrite ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinWrite"/>
+ <keyword type="macro" name="xmlSecKeyDataGetName()" link="xmlsec-keysdata.html#xmlSecKeyDataGetName"/>
+ <keyword type="macro" name="xmlSecKeyDataIsValid()" link="xmlsec-keysdata.html#xmlSecKeyDataIsValid"/>
+ <keyword type="macro" name="xmlSecKeyDataCheckId()" link="xmlsec-keysdata.html#xmlSecKeyDataCheckId"/>
+ <keyword type="macro" name="xmlSecKeyDataCheckUsage()" link="xmlsec-keysdata.html#xmlSecKeyDataCheckUsage"/>
+ <keyword type="macro" name="xmlSecKeyDataCheckSize()" link="xmlsec-keysdata.html#xmlSecKeyDataCheckSize"/>
+ <keyword type="function" name="xmlSecKeyDataInitMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataInitMethod"/>
+ <keyword type="function" name="xmlSecKeyDataDuplicateMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataDuplicateMethod"/>
+ <keyword type="function" name="xmlSecKeyDataFinalizeMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataFinalizeMethod"/>
+ <keyword type="function" name="xmlSecKeyDataXmlReadMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataXmlReadMethod"/>
+ <keyword type="function" name="xmlSecKeyDataXmlWriteMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataXmlWriteMethod"/>
+ <keyword type="function" name="xmlSecKeyDataBinReadMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinReadMethod"/>
+ <keyword type="function" name="xmlSecKeyDataBinWriteMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinWriteMethod"/>
+ <keyword type="function" name="xmlSecKeyDataGenerateMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataGenerateMethod"/>
+ <keyword type="function" name="xmlSecKeyDataGetTypeMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetTypeMethod"/>
+ <keyword type="function" name="xmlSecKeyDataGetSizeMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetSizeMethod"/>
+ <keyword type="function" name="xmlSecKeyDataGetIdentifierMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataGetIdentifierMethod"/>
+ <keyword type="function" name="xmlSecKeyDataDebugDumpMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataDebugDumpMethod"/>
+ <keyword type="macro" name="xmlSecKeyDataKlassGetName()" link="xmlsec-keysdata.html#xmlSecKeyDataKlassGetName"/>
+ <keyword type="function" name="xmlSecKeyDataListGetKlass ()" link="xmlsec-keysdata.html#xmlSecKeyDataListGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataIdListGetKlass ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListGetKlass"/>
+ <keyword type="function" name="xmlSecKeyDataIdListFind ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListFind"/>
+ <keyword type="function" name="xmlSecKeyDataIdListFindByNode ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByNode"/>
+ <keyword type="function" name="xmlSecKeyDataIdListFindByHref ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByHref"/>
+ <keyword type="function" name="xmlSecKeyDataIdListFindByName ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListFindByName"/>
+ <keyword type="function" name="xmlSecKeyDataIdListDebugDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugDump"/>
+ <keyword type="function" name="xmlSecKeyDataIdListDebugXmlDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataIdListDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueInitialize ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueInitialize"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueDuplicate ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDuplicate"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueFinalize ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueFinalize"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueXmlRead ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlRead"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueXmlWrite ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueXmlWrite"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueBinRead ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinRead"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueBinWrite ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueBinWrite"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueDebugDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugDump"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueDebugXmlDump ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueGetSize ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetSize"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueGetBuffer ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueGetBuffer"/>
+ <keyword type="function" name="xmlSecKeyDataBinaryValueSetBuffer ()" link="xmlsec-keysdata.html#xmlSecKeyDataBinaryValueSetBuffer"/>
+ <keyword type="function" name="xmlSecKeyDataStoreCreate ()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreCreate"/>
+ <keyword type="function" name="xmlSecKeyDataStoreDestroy ()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreDestroy"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreGetName()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreGetName"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreIsValid()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreIsValid"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreCheckId()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckId"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreCheckSize()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreCheckSize"/>
+ <keyword type="function" name="xmlSecKeyDataStoreInitializeMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreInitializeMethod"/>
+ <keyword type="function" name="xmlSecKeyDataStoreFinalizeMethod ()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreFinalizeMethod"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreKlassGetName()" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlassGetName"/>
+ <keyword type="function" name="xmlSecKeyDataStorePtrListGetKlass ()" link="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListGetKlass"/>
+ <keyword type="function" name="xmlSecImportSetPersistKey ()" link="xmlsec-keysdata.html#xmlSecImportSetPersistKey"/>
+ <keyword type="function" name="xmlSecImportGetPersistKey ()" link="xmlsec-keysdata.html#xmlSecImportGetPersistKey"/>
+ <keyword type="typedef" name="xmlSecKeyDataUsage" link="xmlsec-keysdata.html#xmlSecKeyDataUsage"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageUnknown" link="xmlsec-keysdata.html#xmlSecKeyDataUsageUnknown"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyInfoNodeRead" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeRead"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyInfoNodeWrite" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNodeWrite"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyValueNodeRead" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeRead"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyValueNodeWrite" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNodeWrite"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageRetrievalMethodNodeXml" link="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeXml"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageRetrievalMethodNodeBin" link="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNodeBin"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageAny" link="xmlsec-keysdata.html#xmlSecKeyDataUsageAny"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyInfoNode" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyInfoNode"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageKeyValueNode" link="xmlsec-keysdata.html#xmlSecKeyDataUsageKeyValueNode"/>
+ <keyword type="macro" name="xmlSecKeyDataUsageRetrievalMethodNode" link="xmlsec-keysdata.html#xmlSecKeyDataUsageRetrievalMethodNode"/>
+ <keyword type="typedef" name="xmlSecKeyDataType" link="xmlsec-keysdata.html#xmlSecKeyDataType"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeUnknown" link="xmlsec-keysdata.html#xmlSecKeyDataTypeUnknown"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeNone" link="xmlsec-keysdata.html#xmlSecKeyDataTypeNone"/>
+ <keyword type="macro" name="xmlSecKeyDataTypePublic" link="xmlsec-keysdata.html#xmlSecKeyDataTypePublic"/>
+ <keyword type="macro" name="xmlSecKeyDataTypePrivate" link="xmlsec-keysdata.html#xmlSecKeyDataTypePrivate"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeSymmetric" link="xmlsec-keysdata.html#xmlSecKeyDataTypeSymmetric"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeSession" link="xmlsec-keysdata.html#xmlSecKeyDataTypeSession"/>
+ <keyword type="macro" name="xmlSecKeyDataTypePermanent" link="xmlsec-keysdata.html#xmlSecKeyDataTypePermanent"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeTrusted" link="xmlsec-keysdata.html#xmlSecKeyDataTypeTrusted"/>
+ <keyword type="macro" name="xmlSecKeyDataTypeAny" link="xmlsec-keysdata.html#xmlSecKeyDataTypeAny"/>
+ <keyword type="enum" name="enum xmlSecKeyDataFormat" link="xmlsec-keysdata.html#xmlSecKeyDataFormat"/>
+ <keyword type="struct" name="struct xmlSecKeyData" link="xmlsec-keysdata.html#xmlSecKeyData"/>
+ <keyword type="macro" name="xmlSecKeyDataIdUnknown" link="xmlsec-keysdata.html#xmlSecKeyDataIdUnknown"/>
+ <keyword type="struct" name="struct xmlSecKeyDataKlass" link="xmlsec-keysdata.html#xmlSecKeyDataKlass"/>
+ <keyword type="macro" name="xmlSecKeyDataListId" link="xmlsec-keysdata.html#xmlSecKeyDataListId"/>
+ <keyword type="macro" name="xmlSecKeyDataIdListId" link="xmlsec-keysdata.html#xmlSecKeyDataIdListId"/>
+ <keyword type="macro" name="xmlSecKeyDataBinarySize" link="xmlsec-keysdata.html#xmlSecKeyDataBinarySize"/>
+ <keyword type="struct" name="struct xmlSecKeyDataStore" link="xmlsec-keysdata.html#xmlSecKeyDataStore"/>
+ <keyword type="macro" name="xmlSecKeyDataStoreIdUnknown" link="xmlsec-keysdata.html#xmlSecKeyDataStoreIdUnknown"/>
+ <keyword type="struct" name="struct xmlSecKeyDataStoreKlass" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass"/>
+ <keyword type="macro" name="xmlSecKeyDataStorePtrListId" link="xmlsec-keysdata.html#xmlSecKeyDataStorePtrListId"/>
+ <keyword type="function" name="xmlSecKeyUseWithInitialize ()" link="xmlsec-keys.html#xmlSecKeyUseWithInitialize"/>
+ <keyword type="function" name="xmlSecKeyUseWithFinalize ()" link="xmlsec-keys.html#xmlSecKeyUseWithFinalize"/>
+ <keyword type="function" name="xmlSecKeyUseWithReset ()" link="xmlsec-keys.html#xmlSecKeyUseWithReset"/>
+ <keyword type="function" name="xmlSecKeyUseWithCopy ()" link="xmlsec-keys.html#xmlSecKeyUseWithCopy"/>
+ <keyword type="function" name="xmlSecKeyUseWithCreate ()" link="xmlsec-keys.html#xmlSecKeyUseWithCreate"/>
+ <keyword type="function" name="xmlSecKeyUseWithDuplicate ()" link="xmlsec-keys.html#xmlSecKeyUseWithDuplicate"/>
+ <keyword type="function" name="xmlSecKeyUseWithDestroy ()" link="xmlsec-keys.html#xmlSecKeyUseWithDestroy"/>
+ <keyword type="function" name="xmlSecKeyUseWithSet ()" link="xmlsec-keys.html#xmlSecKeyUseWithSet"/>
+ <keyword type="function" name="xmlSecKeyUseWithDebugDump ()" link="xmlsec-keys.html#xmlSecKeyUseWithDebugDump"/>
+ <keyword type="function" name="xmlSecKeyUseWithDebugXmlDump ()" link="xmlsec-keys.html#xmlSecKeyUseWithDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyUseWithPtrListGetKlass ()" link="xmlsec-keys.html#xmlSecKeyUseWithPtrListGetKlass"/>
+ <keyword type="function" name="xmlSecKeyReqInitialize ()" link="xmlsec-keys.html#xmlSecKeyReqInitialize"/>
+ <keyword type="function" name="xmlSecKeyReqFinalize ()" link="xmlsec-keys.html#xmlSecKeyReqFinalize"/>
+ <keyword type="function" name="xmlSecKeyReqReset ()" link="xmlsec-keys.html#xmlSecKeyReqReset"/>
+ <keyword type="function" name="xmlSecKeyReqCopy ()" link="xmlsec-keys.html#xmlSecKeyReqCopy"/>
+ <keyword type="function" name="xmlSecKeyReqMatchKey ()" link="xmlsec-keys.html#xmlSecKeyReqMatchKey"/>
+ <keyword type="function" name="xmlSecKeyReqMatchKeyValue ()" link="xmlsec-keys.html#xmlSecKeyReqMatchKeyValue"/>
+ <keyword type="function" name="xmlSecKeyReqDebugDump ()" link="xmlsec-keys.html#xmlSecKeyReqDebugDump"/>
+ <keyword type="function" name="xmlSecKeyReqDebugXmlDump ()" link="xmlsec-keys.html#xmlSecKeyReqDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyCreate ()" link="xmlsec-keys.html#xmlSecKeyCreate"/>
+ <keyword type="function" name="xmlSecKeyDestroy ()" link="xmlsec-keys.html#xmlSecKeyDestroy"/>
+ <keyword type="function" name="xmlSecKeyEmpty ()" link="xmlsec-keys.html#xmlSecKeyEmpty"/>
+ <keyword type="function" name="xmlSecKeyDuplicate ()" link="xmlsec-keys.html#xmlSecKeyDuplicate"/>
+ <keyword type="function" name="xmlSecKeyCopy ()" link="xmlsec-keys.html#xmlSecKeyCopy"/>
+ <keyword type="function" name="xmlSecKeyGetName ()" link="xmlsec-keys.html#xmlSecKeyGetName"/>
+ <keyword type="function" name="xmlSecKeySetName ()" link="xmlsec-keys.html#xmlSecKeySetName"/>
+ <keyword type="function" name="xmlSecKeyGetType ()" link="xmlsec-keys.html#xmlSecKeyGetType"/>
+ <keyword type="function" name="xmlSecKeyGetValue ()" link="xmlsec-keys.html#xmlSecKeyGetValue"/>
+ <keyword type="function" name="xmlSecKeySetValue ()" link="xmlsec-keys.html#xmlSecKeySetValue"/>
+ <keyword type="function" name="xmlSecKeyGetData ()" link="xmlsec-keys.html#xmlSecKeyGetData"/>
+ <keyword type="function" name="xmlSecKeyEnsureData ()" link="xmlsec-keys.html#xmlSecKeyEnsureData"/>
+ <keyword type="function" name="xmlSecKeyAdoptData ()" link="xmlsec-keys.html#xmlSecKeyAdoptData"/>
+ <keyword type="function" name="xmlSecKeyDebugDump ()" link="xmlsec-keys.html#xmlSecKeyDebugDump"/>
+ <keyword type="function" name="xmlSecKeyDebugXmlDump ()" link="xmlsec-keys.html#xmlSecKeyDebugXmlDump"/>
+ <keyword type="function" name="xmlSecKeyGenerate ()" link="xmlsec-keys.html#xmlSecKeyGenerate"/>
+ <keyword type="function" name="xmlSecKeyGenerateByName ()" link="xmlsec-keys.html#xmlSecKeyGenerateByName"/>
+ <keyword type="function" name="xmlSecKeyMatch ()" link="xmlsec-keys.html#xmlSecKeyMatch"/>
+ <keyword type="function" name="xmlSecKeyReadBuffer ()" link="xmlsec-keys.html#xmlSecKeyReadBuffer"/>
+ <keyword type="function" name="xmlSecKeyReadBinaryFile ()" link="xmlsec-keys.html#xmlSecKeyReadBinaryFile"/>
+ <keyword type="function" name="xmlSecKeyReadMemory ()" link="xmlsec-keys.html#xmlSecKeyReadMemory"/>
+ <keyword type="macro" name="xmlSecKeyIsValid()" link="xmlsec-keys.html#xmlSecKeyIsValid"/>
+ <keyword type="macro" name="xmlSecKeyCheckId()" link="xmlsec-keys.html#xmlSecKeyCheckId"/>
+ <keyword type="function" name="xmlSecKeyPtrListGetKlass ()" link="xmlsec-keys.html#xmlSecKeyPtrListGetKlass"/>
+ <keyword type="typedef" name="xmlSecKeyUsage" link="xmlsec-keys.html#xmlSecKeyUsage"/>
+ <keyword type="macro" name="xmlSecKeyUsageSign" link="xmlsec-keys.html#xmlSecKeyUsageSign"/>
+ <keyword type="macro" name="xmlSecKeyUsageVerify" link="xmlsec-keys.html#xmlSecKeyUsageVerify"/>
+ <keyword type="macro" name="xmlSecKeyUsageEncrypt" link="xmlsec-keys.html#xmlSecKeyUsageEncrypt"/>
+ <keyword type="macro" name="xmlSecKeyUsageDecrypt" link="xmlsec-keys.html#xmlSecKeyUsageDecrypt"/>
+ <keyword type="macro" name="xmlSecKeyUsageKeyExchange" link="xmlsec-keys.html#xmlSecKeyUsageKeyExchange"/>
+ <keyword type="macro" name="xmlSecKeyUsageAny" link="xmlsec-keys.html#xmlSecKeyUsageAny"/>
+ <keyword type="struct" name="struct xmlSecKeyUseWith" link="xmlsec-keys.html#xmlSecKeyUseWith"/>
+ <keyword type="macro" name="xmlSecKeyUseWithPtrListId" link="xmlsec-keys.html#xmlSecKeyUseWithPtrListId"/>
+ <keyword type="struct" name="struct xmlSecKeyReq" link="xmlsec-keys.html#xmlSecKeyReq"/>
+ <keyword type="struct" name="struct xmlSecKey" link="xmlsec-keys.html#xmlSecKey"/>
+ <keyword type="macro" name="xmlSecKeyPtrListId" link="xmlsec-keys.html#xmlSecKeyPtrListId"/>
+ <keyword type="function" name="xmlSecKeysMngrCreate ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrCreate"/>
+ <keyword type="function" name="xmlSecKeysMngrDestroy ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrDestroy"/>
+ <keyword type="function" name="xmlSecKeysMngrFindKey ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrFindKey"/>
+ <keyword type="function" name="xmlSecKeysMngrAdoptKeysStore ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptKeysStore"/>
+ <keyword type="function" name="xmlSecKeysMngrGetKeysStore ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrGetKeysStore"/>
+ <keyword type="function" name="xmlSecKeysMngrAdoptDataStore ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrAdoptDataStore"/>
+ <keyword type="function" name="xmlSecKeysMngrGetDataStore ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrGetDataStore"/>
+ <keyword type="function" name="xmlSecGetKeyCallback ()" link="xmlsec-keysmngr.html#xmlSecGetKeyCallback"/>
+ <keyword type="function" name="xmlSecKeysMngrGetKey ()" link="xmlsec-keysmngr.html#xmlSecKeysMngrGetKey"/>
+ <keyword type="function" name="xmlSecKeyStoreCreate ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreCreate"/>
+ <keyword type="function" name="xmlSecKeyStoreDestroy ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreDestroy"/>
+ <keyword type="function" name="xmlSecKeyStoreFindKey ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreFindKey"/>
+ <keyword type="macro" name="xmlSecKeyStoreGetName()" link="xmlsec-keysmngr.html#xmlSecKeyStoreGetName"/>
+ <keyword type="macro" name="xmlSecKeyStoreIsValid()" link="xmlsec-keysmngr.html#xmlSecKeyStoreIsValid"/>
+ <keyword type="macro" name="xmlSecKeyStoreCheckId()" link="xmlsec-keysmngr.html#xmlSecKeyStoreCheckId"/>
+ <keyword type="macro" name="xmlSecKeyStoreCheckSize()" link="xmlsec-keysmngr.html#xmlSecKeyStoreCheckSize"/>
+ <keyword type="function" name="xmlSecKeyStoreInitializeMethod ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreInitializeMethod"/>
+ <keyword type="function" name="xmlSecKeyStoreFinalizeMethod ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreFinalizeMethod"/>
+ <keyword type="function" name="xmlSecKeyStoreFindKeyMethod ()" link="xmlsec-keysmngr.html#xmlSecKeyStoreFindKeyMethod"/>
+ <keyword type="macro" name="xmlSecKeyStoreKlassGetName()" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlassGetName"/>
+ <keyword type="function" name="xmlSecSimpleKeysStoreGetKlass ()" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKlass"/>
+ <keyword type="function" name="xmlSecSimpleKeysStoreAdoptKey ()" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreAdoptKey"/>
+ <keyword type="function" name="xmlSecSimpleKeysStoreLoad ()" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreLoad"/>
+ <keyword type="function" name="xmlSecSimpleKeysStoreSave ()" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreSave"/>
+ <keyword type="function" name="xmlSecSimpleKeysStoreGetKeys ()" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreGetKeys"/>
+ <keyword type="struct" name="struct xmlSecKeysMngr" link="xmlsec-keysmngr.html#xmlSecKeysMngr"/>
+ <keyword type="struct" name="struct xmlSecKeyStore" link="xmlsec-keysmngr.html#xmlSecKeyStore"/>
+ <keyword type="macro" name="xmlSecKeyStoreIdUnknown" link="xmlsec-keysmngr.html#xmlSecKeyStoreIdUnknown"/>
+ <keyword type="struct" name="struct xmlSecKeyStoreKlass" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass"/>
+ <keyword type="macro" name="xmlSecSimpleKeysStoreId" link="xmlsec-keysmngr.html#xmlSecSimpleKeysStoreId"/>
+ <keyword type="function" name="xmlSecPtrListSetDefaultAllocMode ()" link="xmlsec-list.html#xmlSecPtrListSetDefaultAllocMode"/>
+ <keyword type="function" name="xmlSecPtrListInitialize ()" link="xmlsec-list.html#xmlSecPtrListInitialize"/>
+ <keyword type="function" name="xmlSecPtrListFinalize ()" link="xmlsec-list.html#xmlSecPtrListFinalize"/>
+ <keyword type="function" name="xmlSecPtrListCreate ()" link="xmlsec-list.html#xmlSecPtrListCreate"/>
+ <keyword type="function" name="xmlSecPtrListDestroy ()" link="xmlsec-list.html#xmlSecPtrListDestroy"/>
+ <keyword type="function" name="xmlSecPtrListEmpty ()" link="xmlsec-list.html#xmlSecPtrListEmpty"/>
+ <keyword type="function" name="xmlSecPtrListCopy ()" link="xmlsec-list.html#xmlSecPtrListCopy"/>
+ <keyword type="function" name="xmlSecPtrListDuplicate ()" link="xmlsec-list.html#xmlSecPtrListDuplicate"/>
+ <keyword type="function" name="xmlSecPtrListGetSize ()" link="xmlsec-list.html#xmlSecPtrListGetSize"/>
+ <keyword type="function" name="xmlSecPtrListGetItem ()" link="xmlsec-list.html#xmlSecPtrListGetItem"/>
+ <keyword type="function" name="xmlSecPtrListAdd ()" link="xmlsec-list.html#xmlSecPtrListAdd"/>
+ <keyword type="function" name="xmlSecPtrListSet ()" link="xmlsec-list.html#xmlSecPtrListSet"/>
+ <keyword type="function" name="xmlSecPtrListRemove ()" link="xmlsec-list.html#xmlSecPtrListRemove"/>
+ <keyword type="function" name="xmlSecPtrListRemoveAndReturn ()" link="xmlsec-list.html#xmlSecPtrListRemoveAndReturn"/>
+ <keyword type="function" name="xmlSecPtrListDebugDump ()" link="xmlsec-list.html#xmlSecPtrListDebugDump"/>
+ <keyword type="function" name="xmlSecPtrListDebugXmlDump ()" link="xmlsec-list.html#xmlSecPtrListDebugXmlDump"/>
+ <keyword type="macro" name="xmlSecPtrListGetName()" link="xmlsec-list.html#xmlSecPtrListGetName"/>
+ <keyword type="macro" name="xmlSecPtrListIsValid()" link="xmlsec-list.html#xmlSecPtrListIsValid"/>
+ <keyword type="macro" name="xmlSecPtrListCheckId()" link="xmlsec-list.html#xmlSecPtrListCheckId"/>
+ <keyword type="function" name="xmlSecPtrDuplicateItemMethod ()" link="xmlsec-list.html#xmlSecPtrDuplicateItemMethod"/>
+ <keyword type="function" name="xmlSecPtrDestroyItemMethod ()" link="xmlsec-list.html#xmlSecPtrDestroyItemMethod"/>
+ <keyword type="function" name="xmlSecPtrDebugDumpItemMethod ()" link="xmlsec-list.html#xmlSecPtrDebugDumpItemMethod"/>
+ <keyword type="macro" name="xmlSecPtrListKlassGetName()" link="xmlsec-list.html#xmlSecPtrListKlassGetName"/>
+ <keyword type="function" name="xmlSecStringListGetKlass ()" link="xmlsec-list.html#xmlSecStringListGetKlass"/>
+ <keyword type="struct" name="struct xmlSecPtrList" link="xmlsec-list.html#xmlSecPtrList"/>
+ <keyword type="macro" name="xmlSecPtrListIdUnknown" link="xmlsec-list.html#xmlSecPtrListIdUnknown"/>
+ <keyword type="struct" name="struct xmlSecPtrListKlass" link="xmlsec-list.html#xmlSecPtrListKlass"/>
+ <keyword type="macro" name="xmlSecStringListId" link="xmlsec-list.html#xmlSecStringListId"/>
+ <keyword type="function" name="xmlSecTransformMemBufGetKlass ()" link="xmlsec-membuf.html#xmlSecTransformMemBufGetKlass"/>
+ <keyword type="function" name="xmlSecTransformMemBufGetBuffer ()" link="xmlsec-membuf.html#xmlSecTransformMemBufGetBuffer"/>
+ <keyword type="macro" name="xmlSecTransformMemBufId" link="xmlsec-membuf.html#xmlSecTransformMemBufId"/>
+ <keyword type="function" name="xmlSecNodeSetWalkCallback ()" link="xmlsec-nodeset.html#xmlSecNodeSetWalkCallback"/>
+ <keyword type="function" name="xmlSecNodeSetCreate ()" link="xmlsec-nodeset.html#xmlSecNodeSetCreate"/>
+ <keyword type="function" name="xmlSecNodeSetDestroy ()" link="xmlsec-nodeset.html#xmlSecNodeSetDestroy"/>
+ <keyword type="function" name="xmlSecNodeSetDocDestroy ()" link="xmlsec-nodeset.html#xmlSecNodeSetDocDestroy"/>
+ <keyword type="function" name="xmlSecNodeSetContains ()" link="xmlsec-nodeset.html#xmlSecNodeSetContains"/>
+ <keyword type="function" name="xmlSecNodeSetAdd ()" link="xmlsec-nodeset.html#xmlSecNodeSetAdd"/>
+ <keyword type="function" name="xmlSecNodeSetAddList ()" link="xmlsec-nodeset.html#xmlSecNodeSetAddList"/>
+ <keyword type="function" name="xmlSecNodeSetGetChildren ()" link="xmlsec-nodeset.html#xmlSecNodeSetGetChildren"/>
+ <keyword type="function" name="xmlSecNodeSetWalk ()" link="xmlsec-nodeset.html#xmlSecNodeSetWalk"/>
+ <keyword type="function" name="xmlSecNodeSetDumpTextNodes ()" link="xmlsec-nodeset.html#xmlSecNodeSetDumpTextNodes"/>
+ <keyword type="function" name="xmlSecNodeSetDebugDump ()" link="xmlsec-nodeset.html#xmlSecNodeSetDebugDump"/>
+ <keyword type="enum" name="enum xmlSecNodeSetType" link="xmlsec-nodeset.html#xmlSecNodeSetType"/>
+ <keyword type="enum" name="enum xmlSecNodeSetOp" link="xmlsec-nodeset.html#xmlSecNodeSetOp"/>
+ <keyword type="struct" name="struct xmlSecNodeSet" link="xmlsec-nodeset.html#xmlSecNodeSet"/>
+ <keyword type="function" name="xmlSecParseFile ()" link="xmlsec-parser.html#xmlSecParseFile"/>
+ <keyword type="function" name="xmlSecParseMemory ()" link="xmlsec-parser.html#xmlSecParseMemory"/>
+ <keyword type="function" name="xmlSecParseMemoryExt ()" link="xmlsec-parser.html#xmlSecParseMemoryExt"/>
+ <keyword type="function" name="xmlSecTransformXmlParserGetKlass ()" link="xmlsec-parser.html#xmlSecTransformXmlParserGetKlass"/>
+ <keyword type="macro" name="xmlSecTransformXmlParserId" link="xmlsec-parser.html#xmlSecTransformXmlParserId"/>
+ <keyword type="function" name="xmlSecTmplSignatureCreate ()" link="xmlsec-templates.html#xmlSecTmplSignatureCreate"/>
+ <keyword type="function" name="xmlSecTmplSignatureCreateNsPref ()" link="xmlsec-templates.html#xmlSecTmplSignatureCreateNsPref"/>
+ <keyword type="function" name="xmlSecTmplSignatureEnsureKeyInfo ()" link="xmlsec-templates.html#xmlSecTmplSignatureEnsureKeyInfo"/>
+ <keyword type="function" name="xmlSecTmplSignatureAddReference ()" link="xmlsec-templates.html#xmlSecTmplSignatureAddReference"/>
+ <keyword type="function" name="xmlSecTmplSignatureAddObject ()" link="xmlsec-templates.html#xmlSecTmplSignatureAddObject"/>
+ <keyword type="function" name="xmlSecTmplSignatureGetSignMethodNode ()" link="xmlsec-templates.html#xmlSecTmplSignatureGetSignMethodNode"/>
+ <keyword type="function" name="xmlSecTmplSignatureGetC14NMethodNode ()" link="xmlsec-templates.html#xmlSecTmplSignatureGetC14NMethodNode"/>
+ <keyword type="function" name="xmlSecTmplReferenceAddTransform ()" link="xmlsec-templates.html#xmlSecTmplReferenceAddTransform"/>
+ <keyword type="function" name="xmlSecTmplObjectAddSignProperties ()" link="xmlsec-templates.html#xmlSecTmplObjectAddSignProperties"/>
+ <keyword type="function" name="xmlSecTmplObjectAddManifest ()" link="xmlsec-templates.html#xmlSecTmplObjectAddManifest"/>
+ <keyword type="function" name="xmlSecTmplManifestAddReference ()" link="xmlsec-templates.html#xmlSecTmplManifestAddReference"/>
+ <keyword type="function" name="xmlSecTmplEncDataCreate ()" link="xmlsec-templates.html#xmlSecTmplEncDataCreate"/>
+ <keyword type="function" name="xmlSecTmplEncDataEnsureKeyInfo ()" link="xmlsec-templates.html#xmlSecTmplEncDataEnsureKeyInfo"/>
+ <keyword type="function" name="xmlSecTmplEncDataEnsureEncProperties ()" link="xmlsec-templates.html#xmlSecTmplEncDataEnsureEncProperties"/>
+ <keyword type="function" name="xmlSecTmplEncDataAddEncProperty ()" link="xmlsec-templates.html#xmlSecTmplEncDataAddEncProperty"/>
+ <keyword type="function" name="xmlSecTmplEncDataEnsureCipherValue ()" link="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherValue"/>
+ <keyword type="function" name="xmlSecTmplEncDataEnsureCipherReference ()" link="xmlsec-templates.html#xmlSecTmplEncDataEnsureCipherReference"/>
+ <keyword type="function" name="xmlSecTmplEncDataGetEncMethodNode ()" link="xmlsec-templates.html#xmlSecTmplEncDataGetEncMethodNode"/>
+ <keyword type="function" name="xmlSecTmplCipherReferenceAddTransform ()" link="xmlsec-templates.html#xmlSecTmplCipherReferenceAddTransform"/>
+ <keyword type="function" name="xmlSecTmplReferenceListAddDataReference ()" link="xmlsec-templates.html#xmlSecTmplReferenceListAddDataReference"/>
+ <keyword type="function" name="xmlSecTmplReferenceListAddKeyReference ()" link="xmlsec-templates.html#xmlSecTmplReferenceListAddKeyReference"/>
+ <keyword type="function" name="xmlSecTmplKeyInfoAddKeyName ()" link="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyName"/>
+ <keyword type="function" name="xmlSecTmplKeyInfoAddKeyValue ()" link="xmlsec-templates.html#xmlSecTmplKeyInfoAddKeyValue"/>
+ <keyword type="function" name="xmlSecTmplKeyInfoAddX509Data ()" link="xmlsec-templates.html#xmlSecTmplKeyInfoAddX509Data"/>
+ <keyword type="function" name="xmlSecTmplKeyInfoAddRetrievalMethod ()" link="xmlsec-templates.html#xmlSecTmplKeyInfoAddRetrievalMethod"/>
+ <keyword type="function" name="xmlSecTmplRetrievalMethodAddTransform ()" link="xmlsec-templates.html#xmlSecTmplRetrievalMethodAddTransform"/>
+ <keyword type="function" name="xmlSecTmplKeyInfoAddEncryptedKey ()" link="xmlsec-templates.html#xmlSecTmplKeyInfoAddEncryptedKey"/>
+ <keyword type="function" name="xmlSecTmplX509DataAddIssuerSerial ()" link="xmlsec-templates.html#xmlSecTmplX509DataAddIssuerSerial"/>
+ <keyword type="function" name="xmlSecTmplX509IssuerSerialAddIssuerName ()" link="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddIssuerName"/>
+ <keyword type="function" name="xmlSecTmplX509IssuerSerialAddSerialNumber ()" link="xmlsec-templates.html#xmlSecTmplX509IssuerSerialAddSerialNumber"/>
+ <keyword type="function" name="xmlSecTmplX509DataAddSubjectName ()" link="xmlsec-templates.html#xmlSecTmplX509DataAddSubjectName"/>
+ <keyword type="function" name="xmlSecTmplX509DataAddSKI ()" link="xmlsec-templates.html#xmlSecTmplX509DataAddSKI"/>
+ <keyword type="function" name="xmlSecTmplX509DataAddCertificate ()" link="xmlsec-templates.html#xmlSecTmplX509DataAddCertificate"/>
+ <keyword type="function" name="xmlSecTmplX509DataAddCRL ()" link="xmlsec-templates.html#xmlSecTmplX509DataAddCRL"/>
+ <keyword type="function" name="xmlSecTmplTransformAddHmacOutputLength ()" link="xmlsec-templates.html#xmlSecTmplTransformAddHmacOutputLength"/>
+ <keyword type="function" name="xmlSecTmplTransformAddRsaOaepParam ()" link="xmlsec-templates.html#xmlSecTmplTransformAddRsaOaepParam"/>
+ <keyword type="function" name="xmlSecTmplTransformAddXsltStylesheet ()" link="xmlsec-templates.html#xmlSecTmplTransformAddXsltStylesheet"/>
+ <keyword type="function" name="xmlSecTmplTransformAddC14NInclNamespaces ()" link="xmlsec-templates.html#xmlSecTmplTransformAddC14NInclNamespaces"/>
+ <keyword type="function" name="xmlSecTmplTransformAddXPath ()" link="xmlsec-templates.html#xmlSecTmplTransformAddXPath"/>
+ <keyword type="function" name="xmlSecTmplTransformAddXPath2 ()" link="xmlsec-templates.html#xmlSecTmplTransformAddXPath2"/>
+ <keyword type="function" name="xmlSecTmplTransformAddXPointer ()" link="xmlsec-templates.html#xmlSecTmplTransformAddXPointer"/>
+ <keyword type="function" name="xmlSecTransformIdsGet ()" link="xmlsec-transforms.html#xmlSecTransformIdsGet"/>
+ <keyword type="function" name="xmlSecTransformIdsInit ()" link="xmlsec-transforms.html#xmlSecTransformIdsInit"/>
+ <keyword type="function" name="xmlSecTransformIdsShutdown ()" link="xmlsec-transforms.html#xmlSecTransformIdsShutdown"/>
+ <keyword type="function" name="xmlSecTransformIdsRegisterDefault ()" link="xmlsec-transforms.html#xmlSecTransformIdsRegisterDefault"/>
+ <keyword type="function" name="xmlSecTransformIdsRegister ()" link="xmlsec-transforms.html#xmlSecTransformIdsRegister"/>
+ <keyword type="function" name="xmlSecTransformUriTypeCheck ()" link="xmlsec-transforms.html#xmlSecTransformUriTypeCheck"/>
+ <keyword type="function" name="xmlSecTransformCtxPreExecuteCallback ()" link="xmlsec-transforms.html#xmlSecTransformCtxPreExecuteCallback"/>
+ <keyword type="function" name="xmlSecTransformCtxCreate ()" link="xmlsec-transforms.html#xmlSecTransformCtxCreate"/>
+ <keyword type="function" name="xmlSecTransformCtxDestroy ()" link="xmlsec-transforms.html#xmlSecTransformCtxDestroy"/>
+ <keyword type="function" name="xmlSecTransformCtxInitialize ()" link="xmlsec-transforms.html#xmlSecTransformCtxInitialize"/>
+ <keyword type="function" name="xmlSecTransformCtxFinalize ()" link="xmlsec-transforms.html#xmlSecTransformCtxFinalize"/>
+ <keyword type="function" name="xmlSecTransformCtxReset ()" link="xmlsec-transforms.html#xmlSecTransformCtxReset"/>
+ <keyword type="function" name="xmlSecTransformCtxCopyUserPref ()" link="xmlsec-transforms.html#xmlSecTransformCtxCopyUserPref"/>
+ <keyword type="function" name="xmlSecTransformCtxSetUri ()" link="xmlsec-transforms.html#xmlSecTransformCtxSetUri"/>
+ <keyword type="function" name="xmlSecTransformCtxAppend ()" link="xmlsec-transforms.html#xmlSecTransformCtxAppend"/>
+ <keyword type="function" name="xmlSecTransformCtxPrepend ()" link="xmlsec-transforms.html#xmlSecTransformCtxPrepend"/>
+ <keyword type="function" name="xmlSecTransformCtxCreateAndAppend ()" link="xmlsec-transforms.html#xmlSecTransformCtxCreateAndAppend"/>
+ <keyword type="function" name="xmlSecTransformCtxCreateAndPrepend ()" link="xmlsec-transforms.html#xmlSecTransformCtxCreateAndPrepend"/>
+ <keyword type="function" name="xmlSecTransformCtxNodeRead ()" link="xmlsec-transforms.html#xmlSecTransformCtxNodeRead"/>
+ <keyword type="function" name="xmlSecTransformCtxNodesListRead ()" link="xmlsec-transforms.html#xmlSecTransformCtxNodesListRead"/>
+ <keyword type="function" name="xmlSecTransformCtxPrepare ()" link="xmlsec-transforms.html#xmlSecTransformCtxPrepare"/>
+ <keyword type="function" name="xmlSecTransformCtxBinaryExecute ()" link="xmlsec-transforms.html#xmlSecTransformCtxBinaryExecute"/>
+ <keyword type="function" name="xmlSecTransformCtxUriExecute ()" link="xmlsec-transforms.html#xmlSecTransformCtxUriExecute"/>
+ <keyword type="function" name="xmlSecTransformCtxXmlExecute ()" link="xmlsec-transforms.html#xmlSecTransformCtxXmlExecute"/>
+ <keyword type="function" name="xmlSecTransformCtxExecute ()" link="xmlsec-transforms.html#xmlSecTransformCtxExecute"/>
+ <keyword type="function" name="xmlSecTransformCtxDebugDump ()" link="xmlsec-transforms.html#xmlSecTransformCtxDebugDump"/>
+ <keyword type="function" name="xmlSecTransformCtxDebugXmlDump ()" link="xmlsec-transforms.html#xmlSecTransformCtxDebugXmlDump"/>
+ <keyword type="function" name="xmlSecTransformCreate ()" link="xmlsec-transforms.html#xmlSecTransformCreate"/>
+ <keyword type="function" name="xmlSecTransformDestroy ()" link="xmlsec-transforms.html#xmlSecTransformDestroy"/>
+ <keyword type="function" name="xmlSecTransformNodeRead ()" link="xmlsec-transforms.html#xmlSecTransformNodeRead"/>
+ <keyword type="function" name="xmlSecTransformPump ()" link="xmlsec-transforms.html#xmlSecTransformPump"/>
+ <keyword type="function" name="xmlSecTransformSetKey ()" link="xmlsec-transforms.html#xmlSecTransformSetKey"/>
+ <keyword type="function" name="xmlSecTransformSetKeyReq ()" link="xmlsec-transforms.html#xmlSecTransformSetKeyReq"/>
+ <keyword type="function" name="xmlSecTransformVerify ()" link="xmlsec-transforms.html#xmlSecTransformVerify"/>
+ <keyword type="function" name="xmlSecTransformVerifyNodeContent ()" link="xmlsec-transforms.html#xmlSecTransformVerifyNodeContent"/>
+ <keyword type="function" name="xmlSecTransformGetDataType ()" link="xmlsec-transforms.html#xmlSecTransformGetDataType"/>
+ <keyword type="function" name="xmlSecTransformPushBin ()" link="xmlsec-transforms.html#xmlSecTransformPushBin"/>
+ <keyword type="function" name="xmlSecTransformPopBin ()" link="xmlsec-transforms.html#xmlSecTransformPopBin"/>
+ <keyword type="function" name="xmlSecTransformPushXml ()" link="xmlsec-transforms.html#xmlSecTransformPushXml"/>
+ <keyword type="function" name="xmlSecTransformPopXml ()" link="xmlsec-transforms.html#xmlSecTransformPopXml"/>
+ <keyword type="function" name="xmlSecTransformExecute ()" link="xmlsec-transforms.html#xmlSecTransformExecute"/>
+ <keyword type="function" name="xmlSecTransformDebugDump ()" link="xmlsec-transforms.html#xmlSecTransformDebugDump"/>
+ <keyword type="function" name="xmlSecTransformDebugXmlDump ()" link="xmlsec-transforms.html#xmlSecTransformDebugXmlDump"/>
+ <keyword type="macro" name="xmlSecTransformGetName()" link="xmlsec-transforms.html#xmlSecTransformGetName"/>
+ <keyword type="macro" name="xmlSecTransformIsValid()" link="xmlsec-transforms.html#xmlSecTransformIsValid"/>
+ <keyword type="macro" name="xmlSecTransformCheckId()" link="xmlsec-transforms.html#xmlSecTransformCheckId"/>
+ <keyword type="macro" name="xmlSecTransformCheckSize()" link="xmlsec-transforms.html#xmlSecTransformCheckSize"/>
+ <keyword type="function" name="xmlSecTransformConnect ()" link="xmlsec-transforms.html#xmlSecTransformConnect"/>
+ <keyword type="function" name="xmlSecTransformRemove ()" link="xmlsec-transforms.html#xmlSecTransformRemove"/>
+ <keyword type="function" name="xmlSecTransformDefaultGetDataType ()" link="xmlsec-transforms.html#xmlSecTransformDefaultGetDataType"/>
+ <keyword type="function" name="xmlSecTransformDefaultPushBin ()" link="xmlsec-transforms.html#xmlSecTransformDefaultPushBin"/>
+ <keyword type="function" name="xmlSecTransformDefaultPopBin ()" link="xmlsec-transforms.html#xmlSecTransformDefaultPopBin"/>
+ <keyword type="function" name="xmlSecTransformDefaultPushXml ()" link="xmlsec-transforms.html#xmlSecTransformDefaultPushXml"/>
+ <keyword type="function" name="xmlSecTransformDefaultPopXml ()" link="xmlsec-transforms.html#xmlSecTransformDefaultPopXml"/>
+ <keyword type="function" name="xmlSecTransformCreateOutputBuffer ()" link="xmlsec-transforms.html#xmlSecTransformCreateOutputBuffer"/>
+ <keyword type="function" name="xmlSecTransformCreateInputBuffer ()" link="xmlsec-transforms.html#xmlSecTransformCreateInputBuffer"/>
+ <keyword type="function" name="xmlSecTransformInitializeMethod ()" link="xmlsec-transforms.html#xmlSecTransformInitializeMethod"/>
+ <keyword type="function" name="xmlSecTransformFinalizeMethod ()" link="xmlsec-transforms.html#xmlSecTransformFinalizeMethod"/>
+ <keyword type="function" name="xmlSecTransformGetDataTypeMethod ()" link="xmlsec-transforms.html#xmlSecTransformGetDataTypeMethod"/>
+ <keyword type="function" name="xmlSecTransformNodeReadMethod ()" link="xmlsec-transforms.html#xmlSecTransformNodeReadMethod"/>
+ <keyword type="function" name="xmlSecTransformNodeWriteMethod ()" link="xmlsec-transforms.html#xmlSecTransformNodeWriteMethod"/>
+ <keyword type="function" name="xmlSecTransformSetKeyRequirementsMethod ()" link="xmlsec-transforms.html#xmlSecTransformSetKeyRequirementsMethod"/>
+ <keyword type="function" name="xmlSecTransformSetKeyMethod ()" link="xmlsec-transforms.html#xmlSecTransformSetKeyMethod"/>
+ <keyword type="function" name="xmlSecTransformVerifyMethod ()" link="xmlsec-transforms.html#xmlSecTransformVerifyMethod"/>
+ <keyword type="function" name="xmlSecTransformPushBinMethod ()" link="xmlsec-transforms.html#xmlSecTransformPushBinMethod"/>
+ <keyword type="function" name="xmlSecTransformPopBinMethod ()" link="xmlsec-transforms.html#xmlSecTransformPopBinMethod"/>
+ <keyword type="function" name="xmlSecTransformPushXmlMethod ()" link="xmlsec-transforms.html#xmlSecTransformPushXmlMethod"/>
+ <keyword type="function" name="xmlSecTransformPopXmlMethod ()" link="xmlsec-transforms.html#xmlSecTransformPopXmlMethod"/>
+ <keyword type="function" name="xmlSecTransformExecuteMethod ()" link="xmlsec-transforms.html#xmlSecTransformExecuteMethod"/>
+ <keyword type="macro" name="xmlSecTransformKlassGetName()" link="xmlsec-transforms.html#xmlSecTransformKlassGetName"/>
+ <keyword type="function" name="xmlSecTransformIdListGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformIdListGetKlass"/>
+ <keyword type="function" name="xmlSecTransformIdListFind ()" link="xmlsec-transforms.html#xmlSecTransformIdListFind"/>
+ <keyword type="function" name="xmlSecTransformIdListFindByHref ()" link="xmlsec-transforms.html#xmlSecTransformIdListFindByHref"/>
+ <keyword type="function" name="xmlSecTransformIdListFindByName ()" link="xmlsec-transforms.html#xmlSecTransformIdListFindByName"/>
+ <keyword type="function" name="xmlSecTransformIdListDebugDump ()" link="xmlsec-transforms.html#xmlSecTransformIdListDebugDump"/>
+ <keyword type="function" name="xmlSecTransformIdListDebugXmlDump ()" link="xmlsec-transforms.html#xmlSecTransformIdListDebugXmlDump"/>
+ <keyword type="function" name="xmlSecTransformBase64GetKlass ()" link="xmlsec-transforms.html#xmlSecTransformBase64GetKlass"/>
+ <keyword type="function" name="xmlSecTransformBase64SetLineSize ()" link="xmlsec-transforms.html#xmlSecTransformBase64SetLineSize"/>
+ <keyword type="function" name="xmlSecTransformInclC14NGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformInclC14NGetKlass"/>
+ <keyword type="function" name="xmlSecTransformInclC14NWithCommentsGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsGetKlass"/>
+ <keyword type="function" name="xmlSecTransformInclC14N11GetKlass ()" link="xmlsec-transforms.html#xmlSecTransformInclC14N11GetKlass"/>
+ <keyword type="function" name="xmlSecTransformInclC14N11WithCommentsGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsGetKlass"/>
+ <keyword type="function" name="xmlSecTransformExclC14NGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformExclC14NGetKlass"/>
+ <keyword type="function" name="xmlSecTransformExclC14NWithCommentsGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsGetKlass"/>
+ <keyword type="function" name="xmlSecTransformEnvelopedGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformEnvelopedGetKlass"/>
+ <keyword type="function" name="xmlSecTransformXPathGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformXPathGetKlass"/>
+ <keyword type="function" name="xmlSecTransformXPath2GetKlass ()" link="xmlsec-transforms.html#xmlSecTransformXPath2GetKlass"/>
+ <keyword type="function" name="xmlSecTransformXPointerGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformXPointerGetKlass"/>
+ <keyword type="function" name="xmlSecTransformXPointerSetExpr ()" link="xmlsec-transforms.html#xmlSecTransformXPointerSetExpr"/>
+ <keyword type="function" name="xmlSecTransformRelationshipGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformRelationshipGetKlass"/>
+ <keyword type="function" name="xmlSecTransformXsltGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformXsltGetKlass"/>
+ <keyword type="function" name="xmlSecTransformXsltSetDefaultSecurityPrefs ()" link="xmlsec-transforms.html#xmlSecTransformXsltSetDefaultSecurityPrefs"/>
+ <keyword type="function" name="xmlSecTransformRemoveXmlTagsC14NGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NGetKlass"/>
+ <keyword type="function" name="xmlSecTransformVisa3DHackGetKlass ()" link="xmlsec-transforms.html#xmlSecTransformVisa3DHackGetKlass"/>
+ <keyword type="function" name="xmlSecTransformVisa3DHackSetID ()" link="xmlsec-transforms.html#xmlSecTransformVisa3DHackSetID"/>
+ <keyword type="macro" name="XMLSEC_TRANSFORM_BINARY_CHUNK" link="xmlsec-transforms.html#XMLSEC-TRANSFORM-BINARY-CHUNK:CAPS"/>
+ <keyword type="enum" name="enum xmlSecTransformStatus" link="xmlsec-transforms.html#xmlSecTransformStatus"/>
+ <keyword type="enum" name="enum xmlSecTransformMode" link="xmlsec-transforms.html#xmlSecTransformMode"/>
+ <keyword type="enum" name="enum xmlSecTransformOperation" link="xmlsec-transforms.html#xmlSecTransformOperation"/>
+ <keyword type="typedef" name="xmlSecTransformUriType" link="xmlsec-transforms.html#xmlSecTransformUriType"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeNone" link="xmlsec-transforms.html#xmlSecTransformUriTypeNone"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeEmpty" link="xmlsec-transforms.html#xmlSecTransformUriTypeEmpty"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeSameDocument" link="xmlsec-transforms.html#xmlSecTransformUriTypeSameDocument"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeLocal" link="xmlsec-transforms.html#xmlSecTransformUriTypeLocal"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeRemote" link="xmlsec-transforms.html#xmlSecTransformUriTypeRemote"/>
+ <keyword type="macro" name="xmlSecTransformUriTypeAny" link="xmlsec-transforms.html#xmlSecTransformUriTypeAny"/>
+ <keyword type="typedef" name="xmlSecTransformDataType" link="xmlsec-transforms.html#xmlSecTransformDataType"/>
+ <keyword type="macro" name="xmlSecTransformDataTypeUnknown" link="xmlsec-transforms.html#xmlSecTransformDataTypeUnknown"/>
+ <keyword type="macro" name="xmlSecTransformDataTypeBin" link="xmlsec-transforms.html#xmlSecTransformDataTypeBin"/>
+ <keyword type="macro" name="xmlSecTransformDataTypeXml" link="xmlsec-transforms.html#xmlSecTransformDataTypeXml"/>
+ <keyword type="typedef" name="xmlSecTransformUsage" link="xmlsec-transforms.html#xmlSecTransformUsage"/>
+ <keyword type="macro" name="xmlSecTransformUsageUnknown" link="xmlsec-transforms.html#xmlSecTransformUsageUnknown"/>
+ <keyword type="macro" name="xmlSecTransformUsageDSigTransform" link="xmlsec-transforms.html#xmlSecTransformUsageDSigTransform"/>
+ <keyword type="macro" name="xmlSecTransformUsageC14NMethod" link="xmlsec-transforms.html#xmlSecTransformUsageC14NMethod"/>
+ <keyword type="macro" name="xmlSecTransformUsageDigestMethod" link="xmlsec-transforms.html#xmlSecTransformUsageDigestMethod"/>
+ <keyword type="macro" name="xmlSecTransformUsageSignatureMethod" link="xmlsec-transforms.html#xmlSecTransformUsageSignatureMethod"/>
+ <keyword type="macro" name="xmlSecTransformUsageEncryptionMethod" link="xmlsec-transforms.html#xmlSecTransformUsageEncryptionMethod"/>
+ <keyword type="macro" name="xmlSecTransformUsageAny" link="xmlsec-transforms.html#xmlSecTransformUsageAny"/>
+ <keyword type="macro" name="XMLSEC_TRANSFORMCTX_FLAGS_USE_VISA3D_HACK" link="xmlsec-transforms.html#XMLSEC-TRANSFORMCTX-FLAGS-USE-VISA3D-HACK:CAPS"/>
+ <keyword type="struct" name="struct xmlSecTransformCtx" link="xmlsec-transforms.html#xmlSecTransformCtx"/>
+ <keyword type="struct" name="struct xmlSecTransform" link="xmlsec-transforms.html#xmlSecTransform"/>
+ <keyword type="struct" name="struct xmlSecTransformKlass" link="xmlsec-transforms.html#xmlSecTransformKlass"/>
+ <keyword type="macro" name="xmlSecTransformIdListId" link="xmlsec-transforms.html#xmlSecTransformIdListId"/>
+ <keyword type="macro" name="xmlSecTransformIdUnknown" link="xmlsec-transforms.html#xmlSecTransformIdUnknown"/>
+ <keyword type="macro" name="xmlSecTransformBase64Id" link="xmlsec-transforms.html#xmlSecTransformBase64Id"/>
+ <keyword type="macro" name="xmlSecTransformInclC14NId" link="xmlsec-transforms.html#xmlSecTransformInclC14NId"/>
+ <keyword type="macro" name="xmlSecTransformInclC14NWithCommentsId" link="xmlsec-transforms.html#xmlSecTransformInclC14NWithCommentsId"/>
+ <keyword type="macro" name="xmlSecTransformInclC14N11Id" link="xmlsec-transforms.html#xmlSecTransformInclC14N11Id"/>
+ <keyword type="macro" name="xmlSecTransformInclC14N11WithCommentsId" link="xmlsec-transforms.html#xmlSecTransformInclC14N11WithCommentsId"/>
+ <keyword type="macro" name="xmlSecTransformExclC14NId" link="xmlsec-transforms.html#xmlSecTransformExclC14NId"/>
+ <keyword type="macro" name="xmlSecTransformExclC14NWithCommentsId" link="xmlsec-transforms.html#xmlSecTransformExclC14NWithCommentsId"/>
+ <keyword type="macro" name="xmlSecTransformEnvelopedId" link="xmlsec-transforms.html#xmlSecTransformEnvelopedId"/>
+ <keyword type="macro" name="xmlSecTransformXPathId" link="xmlsec-transforms.html#xmlSecTransformXPathId"/>
+ <keyword type="macro" name="xmlSecTransformXPath2Id" link="xmlsec-transforms.html#xmlSecTransformXPath2Id"/>
+ <keyword type="macro" name="xmlSecTransformXPointerId" link="xmlsec-transforms.html#xmlSecTransformXPointerId"/>
+ <keyword type="macro" name="xmlSecTransformRelationshipId" link="xmlsec-transforms.html#xmlSecTransformRelationshipId"/>
+ <keyword type="macro" name="xmlSecTransformXsltId" link="xmlsec-transforms.html#xmlSecTransformXsltId"/>
+ <keyword type="macro" name="xmlSecTransformRemoveXmlTagsC14NId" link="xmlsec-transforms.html#xmlSecTransformRemoveXmlTagsC14NId"/>
+ <keyword type="macro" name="xmlSecTransformVisa3DHackId" link="xmlsec-transforms.html#xmlSecTransformVisa3DHackId"/>
+ <keyword type="macro" name="XMLSEC_VERSION" link="xmlsec-version.html#XMLSEC-VERSION:CAPS"/>
+ <keyword type="macro" name="XMLSEC_VERSION_MAJOR" link="xmlsec-version.html#XMLSEC-VERSION-MAJOR:CAPS"/>
+ <keyword type="macro" name="XMLSEC_VERSION_MINOR" link="xmlsec-version.html#XMLSEC-VERSION-MINOR:CAPS"/>
+ <keyword type="macro" name="XMLSEC_VERSION_SUBMINOR" link="xmlsec-version.html#XMLSEC-VERSION-SUBMINOR:CAPS"/>
+ <keyword type="macro" name="XMLSEC_VERSION_INFO" link="xmlsec-version.html#XMLSEC-VERSION-INFO:CAPS"/>
+ <keyword type="function" name="xmlSecDSigCtxCreate ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxCreate"/>
+ <keyword type="function" name="xmlSecDSigCtxDestroy ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxDestroy"/>
+ <keyword type="function" name="xmlSecDSigCtxInitialize ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxInitialize"/>
+ <keyword type="function" name="xmlSecDSigCtxFinalize ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxFinalize"/>
+ <keyword type="function" name="xmlSecDSigCtxSign ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxSign"/>
+ <keyword type="function" name="xmlSecDSigCtxVerify ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxVerify"/>
+ <keyword type="function" name="xmlSecDSigCtxEnableReferenceTransform ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxEnableReferenceTransform"/>
+ <keyword type="function" name="xmlSecDSigCtxEnableSignatureTransform ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxEnableSignatureTransform"/>
+ <keyword type="function" name="xmlSecDSigCtxGetPreSignBuffer ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxGetPreSignBuffer"/>
+ <keyword type="function" name="xmlSecDSigCtxDebugDump ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxDebugDump"/>
+ <keyword type="function" name="xmlSecDSigCtxDebugXmlDump ()" link="xmlsec-xmldsig.html#xmlSecDSigCtxDebugXmlDump"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxCreate ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxCreate"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxDestroy ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDestroy"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxInitialize ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxInitialize"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxFinalize ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxFinalize"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxProcessNode ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxProcessNode"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxGetPreDigestBuffer ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxGetPreDigestBuffer"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxDebugDump ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugDump"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxDebugXmlDump ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxDebugXmlDump"/>
+ <keyword type="function" name="xmlSecDSigReferenceCtxListGetKlass ()" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListGetKlass"/>
+ <keyword type="enum" name="enum xmlSecDSigStatus" link="xmlsec-xmldsig.html#xmlSecDSigStatus"/>
+ <keyword type="macro" name="XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS" link="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-IGNORE-MANIFESTS:CAPS"/>
+ <keyword type="macro" name="XMLSEC_DSIG_FLAGS_STORE_SIGNEDINFO_REFERENCES" link="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNEDINFO-REFERENCES:CAPS"/>
+ <keyword type="macro" name="XMLSEC_DSIG_FLAGS_STORE_MANIFEST_REFERENCES" link="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-MANIFEST-REFERENCES:CAPS"/>
+ <keyword type="macro" name="XMLSEC_DSIG_FLAGS_STORE_SIGNATURE" link="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-STORE-SIGNATURE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK" link="xmlsec-xmldsig.html#XMLSEC-DSIG-FLAGS-USE-VISA3D-HACK:CAPS"/>
+ <keyword type="struct" name="struct xmlSecDSigCtx" link="xmlsec-xmldsig.html#xmlSecDSigCtx"/>
+ <keyword type="enum" name="enum xmlSecDSigReferenceOrigin" link="xmlsec-xmldsig.html#xmlSecDSigReferenceOrigin"/>
+ <keyword type="struct" name="struct xmlSecDSigReferenceCtx" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx"/>
+ <keyword type="macro" name="xmlSecDSigReferenceCtxListId" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtxListId"/>
+ <keyword type="function" name="xmlSecEncCtxCreate ()" link="xmlsec-xmlenc.html#xmlSecEncCtxCreate"/>
+ <keyword type="function" name="xmlSecEncCtxDestroy ()" link="xmlsec-xmlenc.html#xmlSecEncCtxDestroy"/>
+ <keyword type="function" name="xmlSecEncCtxInitialize ()" link="xmlsec-xmlenc.html#xmlSecEncCtxInitialize"/>
+ <keyword type="function" name="xmlSecEncCtxFinalize ()" link="xmlsec-xmlenc.html#xmlSecEncCtxFinalize"/>
+ <keyword type="function" name="xmlSecEncCtxCopyUserPref ()" link="xmlsec-xmlenc.html#xmlSecEncCtxCopyUserPref"/>
+ <keyword type="function" name="xmlSecEncCtxReset ()" link="xmlsec-xmlenc.html#xmlSecEncCtxReset"/>
+ <keyword type="function" name="xmlSecEncCtxBinaryEncrypt ()" link="xmlsec-xmlenc.html#xmlSecEncCtxBinaryEncrypt"/>
+ <keyword type="function" name="xmlSecEncCtxXmlEncrypt ()" link="xmlsec-xmlenc.html#xmlSecEncCtxXmlEncrypt"/>
+ <keyword type="function" name="xmlSecEncCtxUriEncrypt ()" link="xmlsec-xmlenc.html#xmlSecEncCtxUriEncrypt"/>
+ <keyword type="function" name="xmlSecEncCtxDecrypt ()" link="xmlsec-xmlenc.html#xmlSecEncCtxDecrypt"/>
+ <keyword type="function" name="xmlSecEncCtxDecryptToBuffer ()" link="xmlsec-xmlenc.html#xmlSecEncCtxDecryptToBuffer"/>
+ <keyword type="function" name="xmlSecEncCtxDebugDump ()" link="xmlsec-xmlenc.html#xmlSecEncCtxDebugDump"/>
+ <keyword type="function" name="xmlSecEncCtxDebugXmlDump ()" link="xmlsec-xmlenc.html#xmlSecEncCtxDebugXmlDump"/>
+ <keyword type="enum" name="enum xmlEncCtxMode" link="xmlsec-xmlenc.html#xmlEncCtxMode"/>
+ <keyword type="macro" name="XMLSEC_ENC_RETURN_REPLACED_NODE" link="xmlsec-xmlenc.html#XMLSEC-ENC-RETURN-REPLACED-NODE:CAPS"/>
+ <keyword type="struct" name="struct xmlSecEncCtx" link="xmlsec-xmlenc.html#xmlSecEncCtx"/>
+ <keyword type="macro" name="XMLSEC_SIZE_BAD_CAST()" link="xmlsec-xmlsec.html#XMLSEC-SIZE-BAD-CAST:CAPS"/>
+ <keyword type="function" name="xmlSecInit ()" link="xmlsec-xmlsec.html#xmlSecInit"/>
+ <keyword type="function" name="xmlSecShutdown ()" link="xmlsec-xmlsec.html#xmlSecShutdown"/>
+ <keyword type="function" name="xmlSecGetDefaultCrypto ()" link="xmlsec-xmlsec.html#xmlSecGetDefaultCrypto"/>
+ <keyword type="function" name="xmlSecSetExternalEntityLoader ()" link="xmlsec-xmlsec.html#xmlSecSetExternalEntityLoader"/>
+ <keyword type="macro" name="xmlSecCheckVersionExact" link="xmlsec-xmlsec.html#xmlSecCheckVersionExact"/>
+ <keyword type="macro" name="xmlSecCheckVersion" link="xmlsec-xmlsec.html#xmlSecCheckVersion"/>
+ <keyword type="function" name="xmlSecCheckVersionExt ()" link="xmlsec-xmlsec.html#xmlSecCheckVersionExt"/>
+ <keyword type="typedef" name="xmlSecPtr" link="xmlsec-xmlsec.html#xmlSecPtr"/>
+ <keyword type="macro" name="xmlSecSize" link="xmlsec-xmlsec.html#xmlSecSize"/>
+ <keyword type="macro" name="xmlSecByte" link="xmlsec-xmlsec.html#xmlSecByte"/>
+ <keyword type="macro" name="XMLSEC_CRYPTO" link="xmlsec-xmlsec.html#XMLSEC-CRYPTO:CAPS"/>
+ <keyword type="macro" name="XMLSEC_DEPRECATED" link="xmlsec-xmlsec.html#XMLSEC-DEPRECATED:CAPS"/>
+ <keyword type="enum" name="enum xmlSecCheckVersionMode" link="xmlsec-xmlsec.html#xmlSecCheckVersionMode"/>
+ <keyword type="macro" name="xmlSecNodeGetName()" link="xmlsec-xmltree.html#xmlSecNodeGetName"/>
+ <keyword type="function" name="xmlSecGetDefaultLineFeed ()" link="xmlsec-xmltree.html#xmlSecGetDefaultLineFeed"/>
+ <keyword type="function" name="xmlSecSetDefaultLineFeed ()" link="xmlsec-xmltree.html#xmlSecSetDefaultLineFeed"/>
+ <keyword type="function" name="xmlSecGetNodeNsHref ()" link="xmlsec-xmltree.html#xmlSecGetNodeNsHref"/>
+ <keyword type="function" name="xmlSecCheckNodeName ()" link="xmlsec-xmltree.html#xmlSecCheckNodeName"/>
+ <keyword type="function" name="xmlSecGetNextElementNode ()" link="xmlsec-xmltree.html#xmlSecGetNextElementNode"/>
+ <keyword type="function" name="xmlSecFindSibling ()" link="xmlsec-xmltree.html#xmlSecFindSibling"/>
+ <keyword type="function" name="xmlSecFindChild ()" link="xmlsec-xmltree.html#xmlSecFindChild"/>
+ <keyword type="function" name="xmlSecFindParent ()" link="xmlsec-xmltree.html#xmlSecFindParent"/>
+ <keyword type="function" name="xmlSecFindNode ()" link="xmlsec-xmltree.html#xmlSecFindNode"/>
+ <keyword type="function" name="xmlSecAddChild ()" link="xmlsec-xmltree.html#xmlSecAddChild"/>
+ <keyword type="function" name="xmlSecEnsureEmptyChild ()" link="xmlsec-xmltree.html#xmlSecEnsureEmptyChild"/>
+ <keyword type="function" name="xmlSecAddChildNode ()" link="xmlsec-xmltree.html#xmlSecAddChildNode"/>
+ <keyword type="function" name="xmlSecAddNextSibling ()" link="xmlsec-xmltree.html#xmlSecAddNextSibling"/>
+ <keyword type="function" name="xmlSecAddPrevSibling ()" link="xmlsec-xmltree.html#xmlSecAddPrevSibling"/>
+ <keyword type="function" name="xmlSecReplaceNode ()" link="xmlsec-xmltree.html#xmlSecReplaceNode"/>
+ <keyword type="function" name="xmlSecReplaceNodeAndReturn ()" link="xmlsec-xmltree.html#xmlSecReplaceNodeAndReturn"/>
+ <keyword type="function" name="xmlSecReplaceContent ()" link="xmlsec-xmltree.html#xmlSecReplaceContent"/>
+ <keyword type="function" name="xmlSecReplaceContentAndReturn ()" link="xmlsec-xmltree.html#xmlSecReplaceContentAndReturn"/>
+ <keyword type="function" name="xmlSecReplaceNodeBuffer ()" link="xmlsec-xmltree.html#xmlSecReplaceNodeBuffer"/>
+ <keyword type="function" name="xmlSecReplaceNodeBufferAndReturn ()" link="xmlsec-xmltree.html#xmlSecReplaceNodeBufferAndReturn"/>
+ <keyword type="function" name="xmlSecNodeEncodeAndSetContent ()" link="xmlsec-xmltree.html#xmlSecNodeEncodeAndSetContent"/>
+ <keyword type="function" name="xmlSecAddIDs ()" link="xmlsec-xmltree.html#xmlSecAddIDs"/>
+ <keyword type="function" name="xmlSecCreateTree ()" link="xmlsec-xmltree.html#xmlSecCreateTree"/>
+ <keyword type="function" name="xmlSecIsEmptyNode ()" link="xmlsec-xmltree.html#xmlSecIsEmptyNode"/>
+ <keyword type="function" name="xmlSecIsEmptyString ()" link="xmlsec-xmltree.html#xmlSecIsEmptyString"/>
+ <keyword type="function" name="xmlSecGetQName ()" link="xmlsec-xmltree.html#xmlSecGetQName"/>
+ <keyword type="function" name="xmlSecPrintXmlString ()" link="xmlsec-xmltree.html#xmlSecPrintXmlString"/>
+ <keyword type="macro" name="xmlSecIsHex()" link="xmlsec-xmltree.html#xmlSecIsHex"/>
+ <keyword type="macro" name="xmlSecGetHex()" link="xmlsec-xmltree.html#xmlSecGetHex"/>
+ <keyword type="function" name="xmlSecQName2IntegerGetInfo ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerGetInfo"/>
+ <keyword type="function" name="xmlSecQName2IntegerGetInteger ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerGetInteger"/>
+ <keyword type="function" name="xmlSecQName2IntegerGetIntegerFromString ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerGetIntegerFromString"/>
+ <keyword type="function" name="xmlSecQName2IntegerGetStringFromInteger ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerGetStringFromInteger"/>
+ <keyword type="function" name="xmlSecQName2IntegerNodeRead ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerNodeRead"/>
+ <keyword type="function" name="xmlSecQName2IntegerNodeWrite ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerNodeWrite"/>
+ <keyword type="function" name="xmlSecQName2IntegerAttributeRead ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeRead"/>
+ <keyword type="function" name="xmlSecQName2IntegerAttributeWrite ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerAttributeWrite"/>
+ <keyword type="function" name="xmlSecQName2IntegerDebugDump ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerDebugDump"/>
+ <keyword type="function" name="xmlSecQName2IntegerDebugXmlDump ()" link="xmlsec-xmltree.html#xmlSecQName2IntegerDebugXmlDump"/>
+ <keyword type="function" name="xmlSecQName2BitMaskGetInfo ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskGetInfo"/>
+ <keyword type="function" name="xmlSecQName2BitMaskGetBitMask ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMask"/>
+ <keyword type="function" name="xmlSecQName2BitMaskNodesRead ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesRead"/>
+ <keyword type="function" name="xmlSecQName2BitMaskGetBitMaskFromString ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskGetBitMaskFromString"/>
+ <keyword type="function" name="xmlSecQName2BitMaskGetStringFromBitMask ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskGetStringFromBitMask"/>
+ <keyword type="function" name="xmlSecQName2BitMaskNodesWrite ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskNodesWrite"/>
+ <keyword type="function" name="xmlSecQName2BitMaskDebugDump ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugDump"/>
+ <keyword type="function" name="xmlSecQName2BitMaskDebugXmlDump ()" link="xmlsec-xmltree.html#xmlSecQName2BitMaskDebugXmlDump"/>
+ <keyword type="function" name="xmlSecWin32ConvertLocaleToUnicode ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUnicode"/>
+ <keyword type="function" name="xmlSecWin32ConvertUtf8ToUnicode ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToUnicode"/>
+ <keyword type="function" name="xmlSecWin32ConvertUnicodeToUtf8 ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertUnicodeToUtf8"/>
+ <keyword type="function" name="xmlSecWin32ConvertLocaleToUtf8 ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertLocaleToUtf8"/>
+ <keyword type="function" name="xmlSecWin32ConvertUtf8ToLocale ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToLocale"/>
+ <keyword type="function" name="xmlSecWin32ConvertTstrToUtf8 ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertTstrToUtf8"/>
+ <keyword type="function" name="xmlSecWin32ConvertUtf8ToTstr ()" link="xmlsec-xmltree.html#xmlSecWin32ConvertUtf8ToTstr"/>
+ <keyword type="struct" name="struct xmlSecQName2IntegerInfo" link="xmlsec-xmltree.html#xmlSecQName2IntegerInfo"/>
+ <keyword type="typedef" name="xmlSecQName2IntegerInfoConstPtr" link="xmlsec-xmltree.html#xmlSecQName2IntegerInfoConstPtr"/>
+ <keyword type="typedef" name="xmlSecBitMask" link="xmlsec-xmltree.html#xmlSecBitMask"/>
+ <keyword type="struct" name="struct xmlSecQName2BitMaskInfo" link="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo"/>
+ <keyword type="typedef" name="xmlSecQName2BitMaskInfoConstPtr" link="xmlsec-xmltree.html#xmlSecQName2BitMaskInfoConstPtr"/>
+ <keyword type="function" name="xmlSecX509DataGetNodeContent ()" link="xmlsec-x509.html#xmlSecX509DataGetNodeContent"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_CERTIFICATE_NODE" link="xmlsec-x509.html#XMLSEC-X509DATA-CERTIFICATE-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_SUBJECTNAME_NODE" link="xmlsec-x509.html#XMLSEC-X509DATA-SUBJECTNAME-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_ISSUERSERIAL_NODE" link="xmlsec-x509.html#XMLSEC-X509DATA-ISSUERSERIAL-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_SKI_NODE" link="xmlsec-x509.html#XMLSEC-X509DATA-SKI-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_CRL_NODE" link="xmlsec-x509.html#XMLSEC-X509DATA-CRL-NODE:CAPS"/>
+ <keyword type="macro" name="XMLSEC_X509DATA_DEFAULT" link="xmlsec-x509.html#XMLSEC-X509DATA-DEFAULT:CAPS"/>
+ <keyword type="function" name="xmlSecOpenSSLAppInit ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppInit"/>
+ <keyword type="function" name="xmlSecOpenSSLAppShutdown ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppShutdown"/>
+ <keyword type="function" name="xmlSecOpenSSLAppDefaultKeysMngrInit ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecOpenSSLAppDefaultKeysMngrAdoptKey ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecOpenSSLAppDefaultKeysMngrLoad ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecOpenSSLAppDefaultKeysMngrSave ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeysMngrCertLoad ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeysMngrCertLoadMemory ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeysMngrCertLoadBIO ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrCertLoadBIO"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeysMngrAddCertsPath ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsPath"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeysMngrAddCertsFile ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeysMngrAddCertsFile"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyLoad ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoad"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyLoadMemory ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyLoadBIO ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyLoadBIO"/>
+ <keyword type="function" name="xmlSecOpenSSLAppPkcs12Load ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecOpenSSLAppPkcs12LoadMemory ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecOpenSSLAppPkcs12LoadBIO ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppPkcs12LoadBIO"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyCertLoad ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyCertLoadMemory ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyCertLoadBIO ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyCertLoadBIO"/>
+ <keyword type="function" name="xmlSecOpenSSLAppKeyFromCertLoadBIO ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppKeyFromCertLoadBIO"/>
+ <keyword type="function" name="xmlSecOpenSSLAppGetDefaultPwdCallback ()" link="xmlsec-openssl-app.html#xmlSecOpenSSLAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecOpenSSLNodeGetBNValue ()" link="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeGetBNValue"/>
+ <keyword type="function" name="xmlSecOpenSSLNodeSetBNValue ()" link="xmlsec-openssl-bn.html#xmlSecOpenSSLNodeSetBNValue"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_openssl ()" link="xmlsec-openssl-crypto.html#xmlSecCryptoGetFunctions-openssl"/>
+ <keyword type="function" name="xmlSecOpenSSLInit ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLInit"/>
+ <keyword type="function" name="xmlSecOpenSSLShutdown ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLShutdown"/>
+ <keyword type="function" name="xmlSecOpenSSLKeysMngrInit ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeysMngrInit"/>
+ <keyword type="function" name="xmlSecOpenSSLGenerateRandom ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLGenerateRandom"/>
+ <keyword type="function" name="xmlSecOpenSSLSetDefaultTrustedCertsFolder ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLSetDefaultTrustedCertsFolder"/>
+ <keyword type="function" name="xmlSecOpenSSLGetDefaultTrustedCertsFolder ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLGetDefaultTrustedCertsFolder"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataAesGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataAesSet ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesSet"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes128CbcGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes192CbcGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes256CbcGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes128GcmGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes192GcmGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformAes256GcmGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformKWAes128GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformKWAes192GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformKWAes256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDesGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDesSet ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesSet"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformDes3CbcGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformKWDes3GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDsaGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDsaAdoptDsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptDsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDsaGetDsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetDsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDsaAdoptEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaAdoptEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataDsaGetEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaGetEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformDsaSha1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformDsaSha256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataEcdsaGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataEcdsaGetEcdsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEcdsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataEcdsaAdoptEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaAdoptEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataEcdsaGetEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaGetEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformEcdsaSha1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformEcdsaSha224GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformEcdsaSha256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformEcdsaSha384GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformEcdsaSha512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataGost2001GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGost2001GostR3411_94GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGost2001GostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGostR3411_94GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataGostR3410_2012_256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataGostR3410_2012_512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGostR3411_2012_256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformGostR3411_2012_512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLHmacGetMinOutputLength ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacGetMinOutputLength"/>
+ <keyword type="function" name="xmlSecOpenSSLHmacSetMinOutputLength ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLHmacSetMinOutputLength"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataHmacGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataHmacSet ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacSet"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacMd5GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacRipemd160GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacSha1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacSha224GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacSha256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacSha384GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformHmacSha512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformMd5GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRipemd160GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRsaGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRsaAdoptRsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptRsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRsaGetRsa ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetRsa"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRsaAdoptEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaAdoptEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRsaGetEvp ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaGetEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaMd5GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaRipemd160GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaSha1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaSha224GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaSha256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaSha384GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaSha512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaPkcs1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformRsaOaepGetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformSha1GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformSha224GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformSha256GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformSha384GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLTransformSha512GetKlass ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLErrorsDefaultCallback ()" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLErrorsDefaultCallback"/>
+ <keyword type="macro" name="XMLSEC_OPENSSL_API_100" link="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-API-100:CAPS"/>
+ <keyword type="macro" name="XMLSEC_OPENSSL_API_110" link="xmlsec-openssl-crypto.html#XMLSEC-OPENSSL-API-110:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_AES" link="xmlsec-openssl-crypto.html#XMLSEC-NO-AES:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_DES" link="xmlsec-openssl-crypto.html#XMLSEC-NO-DES:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_DSA" link="xmlsec-openssl-crypto.html#XMLSEC-NO-DSA:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_ECDSA" link="xmlsec-openssl-crypto.html#XMLSEC-NO-ECDSA:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_GOST" link="xmlsec-openssl-crypto.html#XMLSEC-NO-GOST:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_GOST2012" link="xmlsec-openssl-crypto.html#XMLSEC-NO-GOST2012:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_HMAC" link="xmlsec-openssl-crypto.html#XMLSEC-NO-HMAC:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_MD5" link="xmlsec-openssl-crypto.html#XMLSEC-NO-MD5:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_RIPEMD160" link="xmlsec-openssl-crypto.html#XMLSEC-NO-RIPEMD160:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_RSA" link="xmlsec-openssl-crypto.html#XMLSEC-NO-RSA:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_SHA1" link="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA1:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_SHA256" link="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA256:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_SHA224" link="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA224:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_SHA384" link="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA384:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_SHA512" link="xmlsec-openssl-crypto.html#XMLSEC-NO-SHA512:CAPS"/>
+ <keyword type="macro" name="XMLSEC_NO_X509" link="xmlsec-openssl-crypto.html#XMLSEC-NO-X509:CAPS"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataAesId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes128CbcId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes192CbcId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes256CbcId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes128GcmId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes128GcmId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes192GcmId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes192GcmId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformAes256GcmId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformAes256GcmId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformKWAes128Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformKWAes192Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformKWAes256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataDesId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformDes3CbcId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformKWDes3Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataDsaId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformDsaSha1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformDsaSha256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformDsaSha256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataEcdsaId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataEcdsaId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformEcdsaSha1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformEcdsaSha224Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha224Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformEcdsaSha256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformEcdsaSha384Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha384Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformEcdsaSha512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformEcdsaSha512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataGost2001Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGost2001Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGost2001GostR3411_94Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGost2001GostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGostR3411_94Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataGostR3410_2012_256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataGostR3410_2012_512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataGostR3410-2012-512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGostR3410_2012GostR3411_2012_512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3410-2012GostR3411-2012-512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGostR3411_2012_256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformGostR3411_2012_512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformGostR3411-2012-512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataHmacId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacMd5Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacRipemd160Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacRipemd160Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacSha1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacSha224Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha224Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacSha256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacSha384Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformHmacSha512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformMd5Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRipemd160Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRipemd160Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataRsaId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaMd5Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaRipemd160Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaRipemd160Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaSha1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaSha224Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha224Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaSha256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaSha384Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaSha512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaPkcs1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaPkcs1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformRsaOaepId" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformRsaOaepId"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformSha1Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformSha224Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha224Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformSha256Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformSha384Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLTransformSha512Id" link="xmlsec-openssl-crypto.html#xmlSecOpenSSLTransformSha512Id"/>
+ <keyword type="function" name="xmlSecOpenSSLEvpKeyDataAdoptEvp ()" link="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataAdoptEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLEvpKeyDataGetEvp ()" link="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDataGetEvp"/>
+ <keyword type="function" name="xmlSecOpenSSLEvpKeyDup ()" link="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyDup"/>
+ <keyword type="function" name="xmlSecOpenSSLEvpKeyAdopt ()" link="xmlsec-openssl-evp.html#xmlSecOpenSSLEvpKeyAdopt"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetKlass ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetKeyCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetKeyCert"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509AdoptKeyCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptKeyCert"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509AdoptCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCert"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCert"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetCertsSize ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCertsSize"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509AdoptCrl ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509AdoptCrl"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetCrl ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrl"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataX509GetCrlsSize ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509GetCrlsSize"/>
+ <keyword type="function" name="xmlSecOpenSSLX509CertGetKey ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509CertGetKey"/>
+ <keyword type="function" name="xmlSecOpenSSLKeyDataRawX509CertGetKlass ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreGetKlass ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreFindCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreFindCert"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreVerify ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreVerify"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreAdoptCert ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCert"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreAdoptCrl ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAdoptCrl"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreAddCertsPath ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsPath"/>
+ <keyword type="function" name="xmlSecOpenSSLX509StoreAddCertsFile ()" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreAddCertsFile"/>
+ <keyword type="macro" name="XMLSEC_STACK_OF_X509" link="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509:CAPS"/>
+ <keyword type="macro" name="XMLSEC_STACK_OF_X509_CRL" link="xmlsec-openssl-x509.html#XMLSEC-STACK-OF-X509-CRL:CAPS"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataX509Id" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecOpenSSLKeyDataRawX509CertId" link="xmlsec-openssl-x509.html#xmlSecOpenSSLKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecOpenSSLX509StoreId" link="xmlsec-openssl-x509.html#xmlSecOpenSSLX509StoreId"/>
+ <keyword type="function" name="xmlSecGnuTLSAppInit ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppInit"/>
+ <keyword type="function" name="xmlSecGnuTLSAppShutdown ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppShutdown"/>
+ <keyword type="function" name="xmlSecGnuTLSAppDefaultKeysMngrInit ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecGnuTLSAppDefaultKeysMngrAdoptKey ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecGnuTLSAppDefaultKeysMngrLoad ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecGnuTLSAppDefaultKeysMngrSave ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeysMngrCertLoad ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeysMngrCertLoadMemory ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeyLoad ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoad"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeyLoadMemory ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecGnuTLSAppPkcs12Load ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecGnuTLSAppPkcs12LoadMemory ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeyCertLoad ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecGnuTLSAppKeyCertLoadMemory ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecGnuTLSAppGetDefaultPwdCallback ()" link="xmlsec-gnutls-app.html#xmlSecGnuTLSAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_gnutls ()" link="xmlsec-gnutls-crypto.html#xmlSecCryptoGetFunctions-gnutls"/>
+ <keyword type="function" name="xmlSecGnuTLSInit ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSInit"/>
+ <keyword type="function" name="xmlSecGnuTLSShutdown ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSShutdown"/>
+ <keyword type="function" name="xmlSecGnuTLSKeysMngrInit ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeysMngrInit"/>
+ <keyword type="function" name="xmlSecGnuTLSGenerateRandom ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSGenerateRandom"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataAesGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataAesSet ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesSet"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformAes128CbcGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformAes192CbcGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformAes256CbcGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformKWAes128GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformKWAes192GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformKWAes256GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataDesGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataDesSet ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesSet"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformDes3CbcGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformKWDes3GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataDsaGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataDsaAdoptPrivateKey ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPrivateKey"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataDsaAdoptPublicKey ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaAdoptPublicKey"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformDsaSha1GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSHmacGetMinOutputLength ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacGetMinOutputLength"/>
+ <keyword type="function" name="xmlSecGnuTLSHmacSetMinOutputLength ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSHmacSetMinOutputLength"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataHmacGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataHmacSet ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacSet"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacMd5GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacRipemd160GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacSha1GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacSha256GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacSha384GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformHmacSha512GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataRsaGetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataRsaAdoptPrivateKey ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPrivateKey"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataRsaAdoptPublicKey ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaAdoptPublicKey"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaMd5GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaRipemd160GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaSha1GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaSha256GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaSha384GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRsaSha512GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformSha1GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformSha256GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformSha384GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformSha512GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformMd5GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSTransformRipemd160GetKlass ()" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160GetKlass"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataAesId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformAes128CbcId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformAes192CbcId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformAes256CbcId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformKWAes128Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformKWAes192Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformKWAes256Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataDesId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformDes3CbcId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformKWDes3Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataDsaId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformDsaSha1Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataHmacId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacMd5Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacRipemd160Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacRipemd160Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacSha1Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacSha256Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacSha384Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformHmacSha512Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataRsaId" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaMd5Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaRipemd160Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaRipemd160Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaSha1Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaSha256Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaSha384Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRsaSha512Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformSha1Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformSha256Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformSha384Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformSha512Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformSha512Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformMd5Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSTransformRipemd160Id" link="xmlsec-gnutls-crypto.html#xmlSecGnuTLSTransformRipemd160Id"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetKlass ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetKeyCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetKeyCert"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509AdoptKeyCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptKeyCert"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509AdoptCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCert"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCert"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetCertsSize ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCertsSize"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509AdoptCrl ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509AdoptCrl"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetCrl ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrl"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataX509GetCrlsSize ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509GetCrlsSize"/>
+ <keyword type="function" name="xmlSecGnuTLSX509CertGetKey ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509CertGetKey"/>
+ <keyword type="function" name="xmlSecGnuTLSKeyDataRawX509CertGetKlass ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSX509StoreGetKlass ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecGnuTLSX509StoreFindCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreFindCert"/>
+ <keyword type="function" name="xmlSecGnuTLSX509StoreVerify ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreVerify"/>
+ <keyword type="function" name="xmlSecGnuTLSX509StoreAdoptCert ()" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreAdoptCert"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataX509Id" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecGnuTLSKeyDataRawX509CertId" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecGnuTLSX509StoreId" link="xmlsec-gnutls-x509.html#xmlSecGnuTLSX509StoreId"/>
+ <keyword type="function" name="xmlSecGCryptAppInit ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppInit"/>
+ <keyword type="function" name="xmlSecGCryptAppShutdown ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppShutdown"/>
+ <keyword type="function" name="xmlSecGCryptAppDefaultKeysMngrInit ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecGCryptAppDefaultKeysMngrAdoptKey ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecGCryptAppDefaultKeysMngrLoad ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecGCryptAppDefaultKeysMngrSave ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecGCryptAppKeysMngrCertLoad ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecGCryptAppKeysMngrCertLoadMemory ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecGCryptAppKeyLoad ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoad"/>
+ <keyword type="function" name="xmlSecGCryptAppKeyLoadMemory ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecGCryptAppPkcs12Load ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecGCryptAppPkcs12LoadMemory ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecGCryptAppKeyCertLoad ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecGCryptAppKeyCertLoadMemory ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecGCryptAppGetDefaultPwdCallback ()" link="xmlsec-gcrypt-app.html#xmlSecGCryptAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_gcrypt ()" link="xmlsec-gcrypt-crypto.html#xmlSecCryptoGetFunctions-gcrypt"/>
+ <keyword type="function" name="xmlSecGCryptInit ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptInit"/>
+ <keyword type="function" name="xmlSecGCryptShutdown ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptShutdown"/>
+ <keyword type="function" name="xmlSecGCryptKeysMngrInit ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeysMngrInit"/>
+ <keyword type="function" name="xmlSecGCryptGenerateRandom ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptGenerateRandom"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataAesGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataAesSet ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesSet"/>
+ <keyword type="function" name="xmlSecGCryptTransformAes128CbcGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformAes192CbcGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformAes256CbcGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformKWAes128GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformKWAes192GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformKWAes256GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDesGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDesSet ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesSet"/>
+ <keyword type="function" name="xmlSecGCryptTransformDes3CbcGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformKWDes3GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDsaGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDsaAdoptKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKey"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDsaAdoptKeyPair ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaAdoptKeyPair"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDsaGetPublicKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPublicKey"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataDsaGetPrivateKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaGetPrivateKey"/>
+ <keyword type="function" name="xmlSecGCryptTransformDsaSha1GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptHmacGetMinOutputLength ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacGetMinOutputLength"/>
+ <keyword type="function" name="xmlSecGCryptHmacSetMinOutputLength ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptHmacSetMinOutputLength"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataHmacGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataHmacSet ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacSet"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacMd5GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacRipemd160GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacSha1GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacSha256GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacSha384GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformHmacSha512GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataRsaGetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataRsaAdoptKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKey"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataRsaAdoptKeyPair ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaAdoptKeyPair"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataRsaGetPublicKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPublicKey"/>
+ <keyword type="function" name="xmlSecGCryptKeyDataRsaGetPrivateKey ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaGetPrivateKey"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaMd5GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaRipemd160GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaSha1GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaSha256GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaSha384GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRsaSha512GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformSha1GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformSha256GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformSha384GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformSha512GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformMd5GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecGCryptTransformRipemd160GetKlass ()" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160GetKlass"/>
+ <keyword type="macro" name="xmlSecGCryptKeyDataAesId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformAes128CbcId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformAes192CbcId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformAes256CbcId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformKWAes128Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformKWAes192Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformKWAes256Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecGCryptKeyDataDesId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformDes3CbcId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformKWDes3Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecGCryptKeyDataDsaId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformDsaSha1Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecGCryptKeyDataHmacId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacMd5Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacRipemd160Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacRipemd160Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacSha1Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacSha256Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacSha384Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformHmacSha512Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecGCryptKeyDataRsaId" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaMd5Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaRipemd160Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaRipemd160Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaSha1Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaSha256Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaSha384Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRsaSha512Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformSha1Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformSha256Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformSha384Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformSha512Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformSha512Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformMd5Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecGCryptTransformRipemd160Id" link="xmlsec-gcrypt-crypto.html#xmlSecGCryptTransformRipemd160Id"/>
+ <keyword type="function" name="xmlSecNssAppInit ()" link="xmlsec-nss-app.html#xmlSecNssAppInit"/>
+ <keyword type="function" name="xmlSecNssAppShutdown ()" link="xmlsec-nss-app.html#xmlSecNssAppShutdown"/>
+ <keyword type="function" name="xmlSecNssAppDefaultKeysMngrInit ()" link="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecNssAppDefaultKeysMngrAdoptKey ()" link="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecNssAppDefaultKeysMngrLoad ()" link="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecNssAppDefaultKeysMngrSave ()" link="xmlsec-nss-app.html#xmlSecNssAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecNssAppKeysMngrCertLoad ()" link="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecNssAppKeysMngrCertLoadMemory ()" link="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecNssAppKeysMngrCertLoadSECItem ()" link="xmlsec-nss-app.html#xmlSecNssAppKeysMngrCertLoadSECItem"/>
+ <keyword type="function" name="xmlSecNssAppKeyLoad ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyLoad"/>
+ <keyword type="function" name="xmlSecNssAppKeyLoadMemory ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecNssAppKeyLoadSECItem ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyLoadSECItem"/>
+ <keyword type="function" name="xmlSecNssAppPkcs12Load ()" link="xmlsec-nss-app.html#xmlSecNssAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecNssAppPkcs12LoadMemory ()" link="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecNssAppPkcs12LoadSECItem ()" link="xmlsec-nss-app.html#xmlSecNssAppPkcs12LoadSECItem"/>
+ <keyword type="function" name="xmlSecNssAppKeyCertLoad ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecNssAppKeyCertLoadMemory ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecNssAppKeyCertLoadSECItem ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyCertLoadSECItem"/>
+ <keyword type="function" name="xmlSecNssAppKeyFromCertLoadSECItem ()" link="xmlsec-nss-app.html#xmlSecNssAppKeyFromCertLoadSECItem"/>
+ <keyword type="function" name="xmlSecNssAppGetDefaultPwdCallback ()" link="xmlsec-nss-app.html#xmlSecNssAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecNssNodeGetBigNumValue ()" link="xmlsec-nss-bignum.html#xmlSecNssNodeGetBigNumValue"/>
+ <keyword type="function" name="xmlSecNssNodeSetBigNumValue ()" link="xmlsec-nss-bignum.html#xmlSecNssNodeSetBigNumValue"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_nss ()" link="xmlsec-nss-crypto.html#xmlSecCryptoGetFunctions-nss"/>
+ <keyword type="function" name="xmlSecNssInit ()" link="xmlsec-nss-crypto.html#xmlSecNssInit"/>
+ <keyword type="function" name="xmlSecNssShutdown ()" link="xmlsec-nss-crypto.html#xmlSecNssShutdown"/>
+ <keyword type="function" name="xmlSecNssKeysMngrInit ()" link="xmlsec-nss-crypto.html#xmlSecNssKeysMngrInit"/>
+ <keyword type="function" name="xmlSecNssGenerateRandom ()" link="xmlsec-nss-crypto.html#xmlSecNssGenerateRandom"/>
+ <keyword type="function" name="xmlSecNssErrorsDefaultCallback ()" link="xmlsec-nss-crypto.html#xmlSecNssErrorsDefaultCallback"/>
+ <keyword type="function" name="xmlSecNssGetInternalKeySlot ()" link="xmlsec-nss-crypto.html#xmlSecNssGetInternalKeySlot"/>
+ <keyword type="function" name="xmlSecNssKeyDataAesGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataAesSet ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesSet"/>
+ <keyword type="function" name="xmlSecNssTransformAes128CbcGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformAes192CbcGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformAes256CbcGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformKWAes128GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformKWAes192GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformKWAes256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataDesGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataDesSet ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesSet"/>
+ <keyword type="function" name="xmlSecNssTransformDes3CbcGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformKWDes3GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataDsaGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformDsaSha1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformDsaSha256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataEcdsaGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformEcdsaSha1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformEcdsaSha224GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformEcdsaSha256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformEcdsaSha384GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformEcdsaSha512GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecNssHmacGetMinOutputLength ()" link="xmlsec-nss-crypto.html#xmlSecNssHmacGetMinOutputLength"/>
+ <keyword type="function" name="xmlSecNssHmacSetMinOutputLength ()" link="xmlsec-nss-crypto.html#xmlSecNssHmacSetMinOutputLength"/>
+ <keyword type="function" name="xmlSecNssKeyDataHmacGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataHmacSet ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacSet"/>
+ <keyword type="function" name="xmlSecNssTransformHmacMd5GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacRipemd160GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacSha1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacSha224GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacSha256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacSha384GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformHmacSha512GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataRsaGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaMd5GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaSha1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaSha224GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaSha256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaSha384GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaSha512GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaPkcs1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformRsaOaepGetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepGetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformSha1GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformSha224GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha224GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformSha256GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformSha384GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformSha512GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecNssTransformMd5GetKlass ()" link="xmlsec-nss-crypto.html#xmlSecNssTransformMd5GetKlass"/>
+ <keyword type="macro" name="xmlSecNssKeyDataAesId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecNssTransformAes128CbcId" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecNssTransformAes192CbcId" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecNssTransformAes256CbcId" link="xmlsec-nss-crypto.html#xmlSecNssTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecNssTransformKWAes128Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecNssTransformKWAes192Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecNssTransformKWAes256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataDesId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecNssTransformDes3CbcId" link="xmlsec-nss-crypto.html#xmlSecNssTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecNssTransformKWDes3Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataDsaId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecNssTransformDsaSha1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformDsaSha256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformDsaSha256Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataEcdsaId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataEcdsaId"/>
+ <keyword type="macro" name="xmlSecNssTransformEcdsaSha1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformEcdsaSha224Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha224Id"/>
+ <keyword type="macro" name="xmlSecNssTransformEcdsaSha256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha256Id"/>
+ <keyword type="macro" name="xmlSecNssTransformEcdsaSha384Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha384Id"/>
+ <keyword type="macro" name="xmlSecNssTransformEcdsaSha512Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformEcdsaSha512Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataHmacId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacMd5Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacRipemd160Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacRipemd160Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacSha1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacSha224Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha224Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacSha256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacSha384Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecNssTransformHmacSha512Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataRsaId" link="xmlsec-nss-crypto.html#xmlSecNssKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaMd5Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaSha1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaSha224Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha224Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaSha256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaSha384Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaSha512Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaPkcs1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaPkcs1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformRsaOaepId" link="xmlsec-nss-crypto.html#xmlSecNssTransformRsaOaepId"/>
+ <keyword type="macro" name="xmlSecNssTransformSha1Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecNssTransformSha224Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha224Id"/>
+ <keyword type="macro" name="xmlSecNssTransformSha256Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecNssTransformSha384Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecNssTransformSha512Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformSha512Id"/>
+ <keyword type="macro" name="xmlSecNssTransformMd5Id" link="xmlsec-nss-crypto.html#xmlSecNssTransformMd5Id"/>
+ <keyword type="function" name="xmlSecNssKeysStoreGetKlass ()" link="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreGetKlass"/>
+ <keyword type="function" name="xmlSecNssKeysStoreAdoptKey ()" link="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreAdoptKey"/>
+ <keyword type="function" name="xmlSecNssKeysStoreLoad ()" link="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreLoad"/>
+ <keyword type="function" name="xmlSecNssKeysStoreSave ()" link="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreSave"/>
+ <keyword type="macro" name="xmlSecNssKeysStoreId" link="xmlsec-nss-keysstore.html#xmlSecNssKeysStoreId"/>
+ <keyword type="function" name="xmlSecNssPKIAdoptKey ()" link="xmlsec-nss-pkikeys.html#xmlSecNssPKIAdoptKey"/>
+ <keyword type="function" name="xmlSecNssPKIKeyDataGetPubKey ()" link="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPubKey"/>
+ <keyword type="function" name="xmlSecNssPKIKeyDataGetPrivKey ()" link="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetPrivKey"/>
+ <keyword type="function" name="xmlSecNssPKIKeyDataGetKeyType ()" link="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataGetKeyType"/>
+ <keyword type="function" name="xmlSecNssPKIKeyDataDuplicate ()" link="xmlsec-nss-pkikeys.html#xmlSecNssPKIKeyDataDuplicate"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetKlass ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetKeyCert ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetKeyCert"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509AdoptKeyCert ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptKeyCert"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509AdoptCert ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCert"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetCert ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCert"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetCertsSize ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCertsSize"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509AdoptCrl ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509AdoptCrl"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetCrl ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrl"/>
+ <keyword type="function" name="xmlSecNssKeyDataX509GetCrlsSize ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509GetCrlsSize"/>
+ <keyword type="function" name="xmlSecNssX509CertGetKey ()" link="xmlsec-nss-x509.html#xmlSecNssX509CertGetKey"/>
+ <keyword type="function" name="xmlSecNssKeyDataRawX509CertGetKlass ()" link="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecNssX509StoreGetKlass ()" link="xmlsec-nss-x509.html#xmlSecNssX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecNssX509StoreFindCert ()" link="xmlsec-nss-x509.html#xmlSecNssX509StoreFindCert"/>
+ <keyword type="function" name="xmlSecNssX509StoreVerify ()" link="xmlsec-nss-x509.html#xmlSecNssX509StoreVerify"/>
+ <keyword type="function" name="xmlSecNssX509StoreAdoptCert ()" link="xmlsec-nss-x509.html#xmlSecNssX509StoreAdoptCert"/>
+ <keyword type="macro" name="xmlSecNssKeyDataX509Id" link="xmlsec-nss-x509.html#xmlSecNssKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecNssKeyDataRawX509CertId" link="xmlsec-nss-x509.html#xmlSecNssKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecNssX509StoreId" link="xmlsec-nss-x509.html#xmlSecNssX509StoreId"/>
+ <keyword type="function" name="xmlSecMSCryptoAppInit ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppInit"/>
+ <keyword type="function" name="xmlSecMSCryptoAppShutdown ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppShutdown"/>
+ <keyword type="function" name="xmlSecMSCryptoAppGetCertStoreName ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetCertStoreName"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrInit ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrSave ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore"/>
+ <keyword type="function" name="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeysMngrCertLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeysMngrCertLoadMemory ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeyLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeyLoadMemory ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCryptoAppPkcs12Load ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecMSCryptoAppPkcs12LoadMemory ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeyCertLoad ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoAppKeyCertLoadMemory ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCryptoAppGetDefaultPwdCallback ()" link="xmlsec-mscrypto-app.html#xmlSecMSCryptoAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetCert ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetCert"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetKey ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetKey"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetDecryptKey ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetDecryptKey"/>
+ <keyword type="function" name="xmlSecMSCryptoCertDup ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertDup"/>
+ <keyword type="function" name="xmlSecMSCryptoCertAdopt ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoCertAdopt"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetMSCryptoProvider ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProvider"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetMSCryptoKeySpec ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoKeySpec"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo ()" link="xmlsec-mscrypto-certkeys.html#xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_mscrypto ()" link="xmlsec-mscrypto-crypto.html#xmlSecCryptoGetFunctions-mscrypto"/>
+ <keyword type="function" name="xmlSecMSCryptoInit ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoInit"/>
+ <keyword type="function" name="xmlSecMSCryptoShutdown ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoShutdown"/>
+ <keyword type="function" name="xmlSecMSCryptoKeysMngrInit ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeysMngrInit"/>
+ <keyword type="function" name="xmlSecMSCryptoGenerateRandom ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoGenerateRandom"/>
+ <keyword type="function" name="xmlSecMSCryptoErrorsDefaultCallback ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoErrorsDefaultCallback"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataDsaGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformDsaSha1GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGost2001GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2001GostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGost2012_256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataGost2012_512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGost2012_256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGost2012_512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataRsaGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaMd5GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaSha1GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaSha256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaSha384GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaSha512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaPkcs1GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformRsaOaepGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformMd5GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformSha1GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformSha256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformSha384GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformSha512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGostR3411_94GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-94GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGostR3411_2012_256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformGostR3411_2012_512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataAesGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataAesSet ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesSet"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformAes128CbcGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformAes192CbcGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformAes256CbcGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformKWAes128GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformKWAes192GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformKWAes256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataDesGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformDes3CbcGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformKWDes3GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoHmacGetMinOutputLength ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacGetMinOutputLength"/>
+ <keyword type="function" name="xmlSecMSCryptoHmacSetMinOutputLength ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoHmacSetMinOutputLength"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataHmacGetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataHmacSet ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacSet"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformHmacMd5GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformHmacSha1GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformHmacSha256GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformHmacSha384GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoTransformHmacSha512GetKlass ()" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512GetKlass"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataDsaId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDsaId" deprecated=""/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformDsaSha1Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataGost2001Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2001Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGost2001GostR3411_94Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2001GostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataGost2012_256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataGost2012_512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataGost2012-512Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGost2012_256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGost2012_512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGost2012-512Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataRsaId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaMd5Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaSha1Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaSha256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaSha384Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaSha512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaPkcs1Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaPkcs1Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformRsaOaepId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformRsaOaepId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformMd5Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformSha1Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformSha256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformSha384Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformSha512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGostR3411_94Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-94Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGostR3411_2012_256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformGostR3411_2012_512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformGostR3411-2012-512Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataAesId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformAes128CbcId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformAes192CbcId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformAes256CbcId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformKWAes128Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformKWAes192Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformKWAes256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWAes256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataDesId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformDes3CbcId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformKWDes3Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataHmacId" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformHmacMd5Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformHmacSha1Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformHmacSha256Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformHmacSha384Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoTransformHmacSha512Id" link="xmlsec-mscrypto-crypto.html#xmlSecMSCryptoTransformHmacSha512Id"/>
+ <keyword type="function" name="xmlSecMSCryptoKeysStoreGetKlass ()" link="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeysStoreAdoptKey ()" link="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreAdoptKey"/>
+ <keyword type="function" name="xmlSecMSCryptoKeysStoreLoad ()" link="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreLoad"/>
+ <keyword type="function" name="xmlSecMSCryptoKeysStoreSave ()" link="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreSave"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeysStoreId" link="xmlsec-mscrypto-keysstore.html#xmlSecMSCryptoKeysStoreId"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetKlass ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetKeyCert ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetKeyCert"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509AdoptKeyCert ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptKeyCert"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509AdoptCert ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCert"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetCert ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCert"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetCertsSize ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCertsSize"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509AdoptCrl ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509AdoptCrl"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetCrl ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrl"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataX509GetCrlsSize ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509GetCrlsSize"/>
+ <keyword type="function" name="xmlSecMSCryptoKeyDataRawX509CertGetKlass ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreGetKlass ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreAdoptCert ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptCert"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreAdoptKeyStore ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptKeyStore"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreAdoptTrustedStore ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptTrustedStore"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreAdoptUntrustedStore ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreAdoptUntrustedStore"/>
+ <keyword type="function" name="xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreEnableSystemTrustedCerts"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataX509Id" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecMSCryptoKeyDataRawX509CertId" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecMSCryptoX509StoreId" link="xmlsec-mscrypto-x509.html#xmlSecMSCryptoX509StoreId"/>
+ <keyword type="function" name="xmlSecMSCngAppInit ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppInit"/>
+ <keyword type="function" name="xmlSecMSCngAppShutdown ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppShutdown"/>
+ <keyword type="function" name="xmlSecMSCngAppGetCertStoreName ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppGetCertStoreName"/>
+ <keyword type="function" name="xmlSecMSCngAppDefaultKeysMngrInit ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrInit"/>
+ <keyword type="function" name="xmlSecMSCngAppDefaultKeysMngrAdoptKey ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrAdoptKey"/>
+ <keyword type="function" name="xmlSecMSCngAppDefaultKeysMngrLoad ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrLoad"/>
+ <keyword type="function" name="xmlSecMSCngAppDefaultKeysMngrSave ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppDefaultKeysMngrSave"/>
+ <keyword type="function" name="xmlSecMSCngAppKeysMngrCertLoad ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoad"/>
+ <keyword type="function" name="xmlSecMSCngAppKeysMngrCertLoadMemory ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeysMngrCertLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCngAppKeyLoad ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoad"/>
+ <keyword type="function" name="xmlSecMSCngAppKeyLoadMemory ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeyLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCngAppPkcs12Load ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12Load"/>
+ <keyword type="function" name="xmlSecMSCngAppPkcs12LoadMemory ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppPkcs12LoadMemory"/>
+ <keyword type="function" name="xmlSecMSCngAppKeyCertLoad ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoad"/>
+ <keyword type="function" name="xmlSecMSCngAppKeyCertLoadMemory ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppKeyCertLoadMemory"/>
+ <keyword type="function" name="xmlSecMSCngAppGetDefaultPwdCallback ()" link="xmlsec-mscng-app.html#xmlSecMSCngAppGetDefaultPwdCallback"/>
+ <keyword type="function" name="xmlSecMSCngCertAdopt ()" link="xmlsec-mscng-certkeys.html#xmlSecMSCngCertAdopt"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataGetPubKey ()" link="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPubKey"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataGetPrivKey ()" link="xmlsec-mscng-certkeys.html#xmlSecMSCngKeyDataGetPrivKey"/>
+ <keyword type="function" name="xmlSecCryptoGetFunctions_mscng ()" link="xmlsec-mscng-crypto.html#xmlSecCryptoGetFunctions-mscng"/>
+ <keyword type="function" name="xmlSecMSCngGenerateRandom ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngGenerateRandom" deprecated=""/>
+ <keyword type="function" name="xmlSecMSCngInit ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngInit"/>
+ <keyword type="function" name="xmlSecMSCngShutdown ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngShutdown"/>
+ <keyword type="function" name="xmlSecMSCngKeysMngrInit ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeysMngrInit"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataDsaGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformDsaSha1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataRsaGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaMd5GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaSha1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaSha256GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaSha384GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaSha512GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaPkcs1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformRsaOaepGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataEcdsaGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformEcdsaSha1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformEcdsaSha256GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformEcdsaSha384GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformEcdsaSha512GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataDesGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformDes3CbcGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformKWDes3GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataHmacGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformHmacMd5GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformHmacSha1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformHmacSha256GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformHmacSha384GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformHmacSha512GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformMd5GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformSha1GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformSha256GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformSha384GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformSha512GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataAesGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes128CbcGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes192CbcGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes256CbcGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes128GcmGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes192GcmGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformAes256GcmGetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformKWAes128GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformKWAes192GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngTransformKWAes256GetKlass ()" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256GetKlass"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataDsaId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDsaId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformDsaSha1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDsaSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataRsaId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataRsaId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaMd5Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaSha1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaSha256Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaSha384Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaSha512Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaPkcs1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaPkcs1Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformRsaOaepId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformRsaOaepId"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataEcdsaId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataEcdsaId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformEcdsaSha1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformEcdsaSha256Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformEcdsaSha384Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformEcdsaSha512Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformEcdsaSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataDesId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataDesId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformDes3CbcId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformDes3CbcId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformKWDes3Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWDes3Id"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataHmacId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataHmacId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformHmacMd5Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformHmacSha1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformHmacSha256Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformHmacSha384Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformHmacSha512Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformHmacSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformMd5Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformMd5Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformSha1Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha1Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformSha256Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha256Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformSha384Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha384Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformSha512Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformSha512Id"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataAesId" link="xmlsec-mscng-crypto.html#xmlSecMSCngKeyDataAesId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes128CbcId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128CbcId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes192CbcId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192CbcId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes256CbcId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256CbcId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes128GcmId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes128GcmId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes192GcmId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes192GcmId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformAes256GcmId" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformAes256GcmId"/>
+ <keyword type="macro" name="xmlSecMSCngTransformKWAes128Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes128Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformKWAes192Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes192Id"/>
+ <keyword type="macro" name="xmlSecMSCngTransformKWAes256Id" link="xmlsec-mscng-crypto.html#xmlSecMSCngTransformKWAes256Id"/>
+ <keyword type="function" name="xmlSecMSCngKeysStoreGetKlass ()" link="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeysStoreAdoptKey ()" link="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreAdoptKey"/>
+ <keyword type="function" name="xmlSecMSCngKeysStoreLoad ()" link="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreLoad"/>
+ <keyword type="function" name="xmlSecMSCngKeysStoreSave ()" link="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreSave"/>
+ <keyword type="macro" name="xmlSecMSCngKeysStoreId" link="xmlsec-mscng-keysstore.html#xmlSecMSCngKeysStoreId"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataX509GetKlass ()" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509GetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataRawX509CertGetKlass ()" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreGetKlass ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreGetKlass"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataX509AdoptKeyCert ()" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptKeyCert"/>
+ <keyword type="function" name="xmlSecMSCngKeyDataX509AdoptCert ()" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509AdoptCert"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreAdoptCert ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptCert"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreAdoptKeyStore ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptKeyStore"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreAdoptTrustedStore ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptTrustedStore"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreAdoptUntrustedStore ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreAdoptUntrustedStore"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreVerify ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreVerify"/>
+ <keyword type="function" name="xmlSecMSCngX509StoreFindCert ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreFindCert"/>
+ <keyword type="function" name="xmlSecMSCngX509FindCertBySubject ()" link="xmlsec-mscng-x509.html#xmlSecMSCngX509FindCertBySubject"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataX509Id" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataX509Id"/>
+ <keyword type="macro" name="xmlSecMSCngKeyDataRawX509CertId" link="xmlsec-mscng-x509.html#xmlSecMSCngKeyDataRawX509CertId"/>
+ <keyword type="macro" name="xmlSecMSCngX509StoreId" link="xmlsec-mscng-x509.html#xmlSecMSCngX509StoreId"/>
+ <keyword type="constant" name="xmlSecBnBase64" link="xmlsec-bn.html#xmlSecBnBase64"/>
+ <keyword type="constant" name="xmlSecBnHex" link="xmlsec-bn.html#xmlSecBnHex"/>
+ <keyword type="constant" name="xmlSecBnDec" link="xmlsec-bn.html#xmlSecBnDec"/>
+ <keyword type="constant" name="xmlSecAllocModeExact" link="xmlsec-buffer.html#xmlSecAllocModeExact"/>
+ <keyword type="constant" name="xmlSecAllocModeDouble" link="xmlsec-buffer.html#xmlSecAllocModeDouble"/>
+ <keyword type="constant" name="xmlSecKeyInfoModeRead" link="xmlsec-keyinfo.html#xmlSecKeyInfoModeRead"/>
+ <keyword type="constant" name="xmlSecKeyInfoModeWrite" link="xmlsec-keyinfo.html#xmlSecKeyInfoModeWrite"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatUnknown" link="xmlsec-keysdata.html#xmlSecKeyDataFormatUnknown"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatBinary" link="xmlsec-keysdata.html#xmlSecKeyDataFormatBinary"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatPem" link="xmlsec-keysdata.html#xmlSecKeyDataFormatPem"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatDer" link="xmlsec-keysdata.html#xmlSecKeyDataFormatDer"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatPkcs8Pem" link="xmlsec-keysdata.html#xmlSecKeyDataFormatPkcs8Pem"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatPkcs8Der" link="xmlsec-keysdata.html#xmlSecKeyDataFormatPkcs8Der"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatPkcs12" link="xmlsec-keysdata.html#xmlSecKeyDataFormatPkcs12"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatCertPem" link="xmlsec-keysdata.html#xmlSecKeyDataFormatCertPem"/>
+ <keyword type="constant" name="xmlSecKeyDataFormatCertDer" link="xmlsec-keysdata.html#xmlSecKeyDataFormatCertDer"/>
+ <keyword type="constant" name="xmlSecNodeSetNormal" link="xmlsec-nodeset.html#xmlSecNodeSetNormal"/>
+ <keyword type="constant" name="xmlSecNodeSetInvert" link="xmlsec-nodeset.html#xmlSecNodeSetInvert"/>
+ <keyword type="constant" name="xmlSecNodeSetTree" link="xmlsec-nodeset.html#xmlSecNodeSetTree"/>
+ <keyword type="constant" name="xmlSecNodeSetTreeWithoutComments" link="xmlsec-nodeset.html#xmlSecNodeSetTreeWithoutComments"/>
+ <keyword type="constant" name="xmlSecNodeSetTreeInvert" link="xmlsec-nodeset.html#xmlSecNodeSetTreeInvert"/>
+ <keyword type="constant" name="xmlSecNodeSetTreeWithoutCommentsInvert" link="xmlsec-nodeset.html#xmlSecNodeSetTreeWithoutCommentsInvert"/>
+ <keyword type="constant" name="xmlSecNodeSetList" link="xmlsec-nodeset.html#xmlSecNodeSetList"/>
+ <keyword type="constant" name="xmlSecNodeSetIntersection" link="xmlsec-nodeset.html#xmlSecNodeSetIntersection"/>
+ <keyword type="constant" name="xmlSecNodeSetSubtraction" link="xmlsec-nodeset.html#xmlSecNodeSetSubtraction"/>
+ <keyword type="constant" name="xmlSecNodeSetUnion" link="xmlsec-nodeset.html#xmlSecNodeSetUnion"/>
+ <keyword type="constant" name="xmlSecTransformStatusNone" link="xmlsec-transforms.html#xmlSecTransformStatusNone"/>
+ <keyword type="constant" name="xmlSecTransformStatusWorking" link="xmlsec-transforms.html#xmlSecTransformStatusWorking"/>
+ <keyword type="constant" name="xmlSecTransformStatusFinished" link="xmlsec-transforms.html#xmlSecTransformStatusFinished"/>
+ <keyword type="constant" name="xmlSecTransformStatusOk" link="xmlsec-transforms.html#xmlSecTransformStatusOk"/>
+ <keyword type="constant" name="xmlSecTransformStatusFail" link="xmlsec-transforms.html#xmlSecTransformStatusFail"/>
+ <keyword type="constant" name="xmlSecTransformModeNone" link="xmlsec-transforms.html#xmlSecTransformModeNone"/>
+ <keyword type="constant" name="xmlSecTransformModePush" link="xmlsec-transforms.html#xmlSecTransformModePush"/>
+ <keyword type="constant" name="xmlSecTransformModePop" link="xmlsec-transforms.html#xmlSecTransformModePop"/>
+ <keyword type="constant" name="xmlSecTransformOperationNone" link="xmlsec-transforms.html#xmlSecTransformOperationNone"/>
+ <keyword type="constant" name="xmlSecTransformOperationEncode" link="xmlsec-transforms.html#xmlSecTransformOperationEncode"/>
+ <keyword type="constant" name="xmlSecTransformOperationDecode" link="xmlsec-transforms.html#xmlSecTransformOperationDecode"/>
+ <keyword type="constant" name="xmlSecTransformOperationSign" link="xmlsec-transforms.html#xmlSecTransformOperationSign"/>
+ <keyword type="constant" name="xmlSecTransformOperationVerify" link="xmlsec-transforms.html#xmlSecTransformOperationVerify"/>
+ <keyword type="constant" name="xmlSecTransformOperationEncrypt" link="xmlsec-transforms.html#xmlSecTransformOperationEncrypt"/>
+ <keyword type="constant" name="xmlSecTransformOperationDecrypt" link="xmlsec-transforms.html#xmlSecTransformOperationDecrypt"/>
+ <keyword type="constant" name="xmlSecDSigStatusUnknown" link="xmlsec-xmldsig.html#xmlSecDSigStatusUnknown"/>
+ <keyword type="constant" name="xmlSecDSigStatusSucceeded" link="xmlsec-xmldsig.html#xmlSecDSigStatusSucceeded"/>
+ <keyword type="constant" name="xmlSecDSigStatusInvalid" link="xmlsec-xmldsig.html#xmlSecDSigStatusInvalid"/>
+ <keyword type="constant" name="xmlSecDSigReferenceOriginSignedInfo" link="xmlsec-xmldsig.html#xmlSecDSigReferenceOriginSignedInfo"/>
+ <keyword type="constant" name="xmlSecDSigReferenceOriginManifest" link="xmlsec-xmldsig.html#xmlSecDSigReferenceOriginManifest"/>
+ <keyword type="constant" name="xmlEncCtxModeEncryptedData" link="xmlsec-xmlenc.html#xmlEncCtxModeEncryptedData"/>
+ <keyword type="constant" name="xmlEncCtxModeEncryptedKey" link="xmlsec-xmlenc.html#xmlEncCtxModeEncryptedKey"/>
+ <keyword type="constant" name="xmlSecCheckVersionExactMatch" link="xmlsec-xmlsec.html#xmlSecCheckVersionExactMatch"/>
+ <keyword type="constant" name="xmlSecCheckVersionABICompatible" link="xmlsec-xmlsec.html#xmlSecCheckVersionABICompatible"/>
+ <keyword type="member" name="xmlSecBuffer.data" link="xmlsec-buffer.html#xmlSecBuffer.data"/>
+ <keyword type="member" name="xmlSecBuffer.size" link="xmlsec-buffer.html#xmlSecBuffer.size"/>
+ <keyword type="member" name="xmlSecBuffer.maxSize" link="xmlsec-buffer.html#xmlSecBuffer.maxSize"/>
+ <keyword type="member" name="xmlSecBuffer.allocMode" link="xmlsec-buffer.html#xmlSecBuffer.allocMode"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.userData" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.userData"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.flags" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.flags"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.flags2" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.flags2"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.keysMngr" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.keysMngr"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.mode" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.mode"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.enabledKeyData" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.enabledKeyData"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.base64LineSize" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.base64LineSize"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.retrievalMethodCtx" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.retrievalMethodCtx"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.maxRetrievalMethodLevel" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.maxRetrievalMethodLevel"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.encCtx" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.encCtx"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.maxEncryptedKeyLevel" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.maxEncryptedKeyLevel"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.certsVerificationTime" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.certsVerificationTime"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.certsVerificationDepth" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.certsVerificationDepth"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.pgpReserved" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.pgpReserved"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.curRetrievalMethodLevel" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.curRetrievalMethodLevel"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.curEncryptedKeyLevel" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.curEncryptedKeyLevel"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.keyReq" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.keyReq"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.reserved0" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.reserved0"/>
+ <keyword type="member" name="xmlSecKeyInfoCtx.reserved1" link="xmlsec-keyinfo.html#xmlSecKeyInfoCtx.reserved1"/>
+ <keyword type="member" name="xmlSecKeyData.id" link="xmlsec-keysdata.html#xmlSecKeyData.id"/>
+ <keyword type="member" name="xmlSecKeyData.reserved0" link="xmlsec-keysdata.html#xmlSecKeyData.reserved0"/>
+ <keyword type="member" name="xmlSecKeyData.reserved1" link="xmlsec-keysdata.html#xmlSecKeyData.reserved1"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.klassSize" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.klassSize"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.objSize" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.objSize"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.name" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.name"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.usage" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.usage"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.href" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.href"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.dataNodeName" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.dataNodeName"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.dataNodeNs" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.dataNodeNs"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.initialize" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.initialize"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.duplicate" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.duplicate"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.finalize" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.finalize"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.generate" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.generate"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.getType" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.getType"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.getSize" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.getSize"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.getIdentifier" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.getIdentifier"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.xmlRead" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.xmlRead"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.xmlWrite" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.xmlWrite"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.binRead" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.binRead"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.binWrite" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.binWrite"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.debugDump" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.debugDump"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.debugXmlDump" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.debugXmlDump"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.reserved0" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.reserved0"/>
+ <keyword type="member" name="xmlSecKeyDataKlass.reserved1" link="xmlsec-keysdata.html#xmlSecKeyDataKlass.reserved1"/>
+ <keyword type="member" name="xmlSecKeyDataStore.id" link="xmlsec-keysdata.html#xmlSecKeyDataStore.id"/>
+ <keyword type="member" name="xmlSecKeyDataStore.reserved0" link="xmlsec-keysdata.html#xmlSecKeyDataStore.reserved0"/>
+ <keyword type="member" name="xmlSecKeyDataStore.reserved1" link="xmlsec-keysdata.html#xmlSecKeyDataStore.reserved1"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.klassSize" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.klassSize"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.objSize" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.objSize"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.name" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.name"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.initialize" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.initialize"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.finalize" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.finalize"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.reserved0" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.reserved0"/>
+ <keyword type="member" name="xmlSecKeyDataStoreKlass.reserved1" link="xmlsec-keysdata.html#xmlSecKeyDataStoreKlass.reserved1"/>
+ <keyword type="member" name="xmlSecKeyUseWith.application" link="xmlsec-keys.html#xmlSecKeyUseWith.application"/>
+ <keyword type="member" name="xmlSecKeyUseWith.identifier" link="xmlsec-keys.html#xmlSecKeyUseWith.identifier"/>
+ <keyword type="member" name="xmlSecKeyUseWith.reserved1" link="xmlsec-keys.html#xmlSecKeyUseWith.reserved1"/>
+ <keyword type="member" name="xmlSecKeyUseWith.reserved2" link="xmlsec-keys.html#xmlSecKeyUseWith.reserved2"/>
+ <keyword type="member" name="xmlSecKeyReq.keyId" link="xmlsec-keys.html#xmlSecKeyReq.keyId"/>
+ <keyword type="member" name="xmlSecKeyReq.keyType" link="xmlsec-keys.html#xmlSecKeyReq.keyType"/>
+ <keyword type="member" name="xmlSecKeyReq.keyUsage" link="xmlsec-keys.html#xmlSecKeyReq.keyUsage"/>
+ <keyword type="member" name="xmlSecKeyReq.keyBitsSize" link="xmlsec-keys.html#xmlSecKeyReq.keyBitsSize"/>
+ <keyword type="member" name="xmlSecKeyReq.keyUseWithList" link="xmlsec-keys.html#xmlSecKeyReq.keyUseWithList"/>
+ <keyword type="member" name="xmlSecKeyReq.reserved1" link="xmlsec-keys.html#xmlSecKeyReq.reserved1"/>
+ <keyword type="member" name="xmlSecKeyReq.reserved2" link="xmlsec-keys.html#xmlSecKeyReq.reserved2"/>
+ <keyword type="member" name="xmlSecKey.name" link="xmlsec-keys.html#xmlSecKey.name"/>
+ <keyword type="member" name="xmlSecKey.value" link="xmlsec-keys.html#xmlSecKey.value"/>
+ <keyword type="member" name="xmlSecKey.dataList" link="xmlsec-keys.html#xmlSecKey.dataList"/>
+ <keyword type="member" name="xmlSecKey.usage" link="xmlsec-keys.html#xmlSecKey.usage"/>
+ <keyword type="member" name="xmlSecKey.notValidBefore" link="xmlsec-keys.html#xmlSecKey.notValidBefore"/>
+ <keyword type="member" name="xmlSecKey.notValidAfter" link="xmlsec-keys.html#xmlSecKey.notValidAfter"/>
+ <keyword type="member" name="xmlSecKeysMngr.keysStore" link="xmlsec-keysmngr.html#xmlSecKeysMngr.keysStore"/>
+ <keyword type="member" name="xmlSecKeysMngr.storesList" link="xmlsec-keysmngr.html#xmlSecKeysMngr.storesList"/>
+ <keyword type="member" name="xmlSecKeysMngr.getKey" link="xmlsec-keysmngr.html#xmlSecKeysMngr.getKey"/>
+ <keyword type="member" name="xmlSecKeyStore.id" link="xmlsec-keysmngr.html#xmlSecKeyStore.id"/>
+ <keyword type="member" name="xmlSecKeyStore.reserved0" link="xmlsec-keysmngr.html#xmlSecKeyStore.reserved0"/>
+ <keyword type="member" name="xmlSecKeyStore.reserved1" link="xmlsec-keysmngr.html#xmlSecKeyStore.reserved1"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.klassSize" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.klassSize"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.objSize" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.objSize"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.name" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.name"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.initialize" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.initialize"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.finalize" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.finalize"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.findKey" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.findKey"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.reserved0" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.reserved0"/>
+ <keyword type="member" name="xmlSecKeyStoreKlass.reserved1" link="xmlsec-keysmngr.html#xmlSecKeyStoreKlass.reserved1"/>
+ <keyword type="member" name="xmlSecPtrList.id" link="xmlsec-list.html#xmlSecPtrList.id"/>
+ <keyword type="member" name="xmlSecPtrList.data" link="xmlsec-list.html#xmlSecPtrList.data"/>
+ <keyword type="member" name="xmlSecPtrList.use" link="xmlsec-list.html#xmlSecPtrList.use"/>
+ <keyword type="member" name="xmlSecPtrList.max" link="xmlsec-list.html#xmlSecPtrList.max"/>
+ <keyword type="member" name="xmlSecPtrList.allocMode" link="xmlsec-list.html#xmlSecPtrList.allocMode"/>
+ <keyword type="member" name="xmlSecPtrListKlass.name" link="xmlsec-list.html#xmlSecPtrListKlass.name"/>
+ <keyword type="member" name="xmlSecPtrListKlass.duplicateItem" link="xmlsec-list.html#xmlSecPtrListKlass.duplicateItem"/>
+ <keyword type="member" name="xmlSecPtrListKlass.destroyItem" link="xmlsec-list.html#xmlSecPtrListKlass.destroyItem"/>
+ <keyword type="member" name="xmlSecPtrListKlass.debugDumpItem" link="xmlsec-list.html#xmlSecPtrListKlass.debugDumpItem"/>
+ <keyword type="member" name="xmlSecPtrListKlass.debugXmlDumpItem" link="xmlsec-list.html#xmlSecPtrListKlass.debugXmlDumpItem"/>
+ <keyword type="member" name="xmlSecNodeSet.nodes" link="xmlsec-nodeset.html#xmlSecNodeSet.nodes"/>
+ <keyword type="member" name="xmlSecNodeSet.doc" link="xmlsec-nodeset.html#xmlSecNodeSet.doc"/>
+ <keyword type="member" name="xmlSecNodeSet.destroyDoc" link="xmlsec-nodeset.html#xmlSecNodeSet.destroyDoc"/>
+ <keyword type="member" name="xmlSecNodeSet.type" link="xmlsec-nodeset.html#xmlSecNodeSet.type"/>
+ <keyword type="member" name="xmlSecNodeSet.op" link="xmlsec-nodeset.html#xmlSecNodeSet.op"/>
+ <keyword type="member" name="xmlSecNodeSet.next" link="xmlsec-nodeset.html#xmlSecNodeSet.next"/>
+ <keyword type="member" name="xmlSecNodeSet.prev" link="xmlsec-nodeset.html#xmlSecNodeSet.prev"/>
+ <keyword type="member" name="xmlSecNodeSet.children" link="xmlsec-nodeset.html#xmlSecNodeSet.children"/>
+ <keyword type="member" name="xmlSecTransformCtx.userData" link="xmlsec-transforms.html#xmlSecTransformCtx.userData"/>
+ <keyword type="member" name="xmlSecTransformCtx.flags" link="xmlsec-transforms.html#xmlSecTransformCtx.flags"/>
+ <keyword type="member" name="xmlSecTransformCtx.flags2" link="xmlsec-transforms.html#xmlSecTransformCtx.flags2"/>
+ <keyword type="member" name="xmlSecTransformCtx.enabledUris" link="xmlsec-transforms.html#xmlSecTransformCtx.enabledUris"/>
+ <keyword type="member" name="xmlSecTransformCtx.enabledTransforms" link="xmlsec-transforms.html#xmlSecTransformCtx.enabledTransforms"/>
+ <keyword type="member" name="xmlSecTransformCtx.preExecCallback" link="xmlsec-transforms.html#xmlSecTransformCtx.preExecCallback"/>
+ <keyword type="member" name="xmlSecTransformCtx.result" link="xmlsec-transforms.html#xmlSecTransformCtx.result"/>
+ <keyword type="member" name="xmlSecTransformCtx.status" link="xmlsec-transforms.html#xmlSecTransformCtx.status"/>
+ <keyword type="member" name="xmlSecTransformCtx.uri" link="xmlsec-transforms.html#xmlSecTransformCtx.uri"/>
+ <keyword type="member" name="xmlSecTransformCtx.xptrExpr" link="xmlsec-transforms.html#xmlSecTransformCtx.xptrExpr"/>
+ <keyword type="member" name="xmlSecTransformCtx.first" link="xmlsec-transforms.html#xmlSecTransformCtx.first"/>
+ <keyword type="member" name="xmlSecTransformCtx.last" link="xmlsec-transforms.html#xmlSecTransformCtx.last"/>
+ <keyword type="member" name="xmlSecTransformCtx.reserved0" link="xmlsec-transforms.html#xmlSecTransformCtx.reserved0"/>
+ <keyword type="member" name="xmlSecTransformCtx.reserved1" link="xmlsec-transforms.html#xmlSecTransformCtx.reserved1"/>
+ <keyword type="member" name="xmlSecTransform.id" link="xmlsec-transforms.html#xmlSecTransform.id"/>
+ <keyword type="member" name="xmlSecTransform.operation" link="xmlsec-transforms.html#xmlSecTransform.operation"/>
+ <keyword type="member" name="xmlSecTransform.status" link="xmlsec-transforms.html#xmlSecTransform.status"/>
+ <keyword type="member" name="xmlSecTransform.hereNode" link="xmlsec-transforms.html#xmlSecTransform.hereNode"/>
+ <keyword type="member" name="xmlSecTransform.next" link="xmlsec-transforms.html#xmlSecTransform.next"/>
+ <keyword type="member" name="xmlSecTransform.prev" link="xmlsec-transforms.html#xmlSecTransform.prev"/>
+ <keyword type="member" name="xmlSecTransform.inBuf" link="xmlsec-transforms.html#xmlSecTransform.inBuf"/>
+ <keyword type="member" name="xmlSecTransform.outBuf" link="xmlsec-transforms.html#xmlSecTransform.outBuf"/>
+ <keyword type="member" name="xmlSecTransform.inNodes" link="xmlsec-transforms.html#xmlSecTransform.inNodes"/>
+ <keyword type="member" name="xmlSecTransform.outNodes" link="xmlsec-transforms.html#xmlSecTransform.outNodes"/>
+ <keyword type="member" name="xmlSecTransform.reserved0" link="xmlsec-transforms.html#xmlSecTransform.reserved0"/>
+ <keyword type="member" name="xmlSecTransform.reserved1" link="xmlsec-transforms.html#xmlSecTransform.reserved1"/>
+ <keyword type="member" name="xmlSecTransformKlass.klassSize" link="xmlsec-transforms.html#xmlSecTransformKlass.klassSize"/>
+ <keyword type="member" name="xmlSecTransformKlass.objSize" link="xmlsec-transforms.html#xmlSecTransformKlass.objSize"/>
+ <keyword type="member" name="xmlSecTransformKlass.name" link="xmlsec-transforms.html#xmlSecTransformKlass.name"/>
+ <keyword type="member" name="xmlSecTransformKlass.href" link="xmlsec-transforms.html#xmlSecTransformKlass.href"/>
+ <keyword type="member" name="xmlSecTransformKlass.usage" link="xmlsec-transforms.html#xmlSecTransformKlass.usage"/>
+ <keyword type="member" name="xmlSecTransformKlass.initialize" link="xmlsec-transforms.html#xmlSecTransformKlass.initialize"/>
+ <keyword type="member" name="xmlSecTransformKlass.finalize" link="xmlsec-transforms.html#xmlSecTransformKlass.finalize"/>
+ <keyword type="member" name="xmlSecTransformKlass.readNode" link="xmlsec-transforms.html#xmlSecTransformKlass.readNode"/>
+ <keyword type="member" name="xmlSecTransformKlass.writeNode" link="xmlsec-transforms.html#xmlSecTransformKlass.writeNode"/>
+ <keyword type="member" name="xmlSecTransformKlass.setKeyReq" link="xmlsec-transforms.html#xmlSecTransformKlass.setKeyReq"/>
+ <keyword type="member" name="xmlSecTransformKlass.setKey" link="xmlsec-transforms.html#xmlSecTransformKlass.setKey"/>
+ <keyword type="member" name="xmlSecTransformKlass.verify" link="xmlsec-transforms.html#xmlSecTransformKlass.verify"/>
+ <keyword type="member" name="xmlSecTransformKlass.getDataType" link="xmlsec-transforms.html#xmlSecTransformKlass.getDataType"/>
+ <keyword type="member" name="xmlSecTransformKlass.pushBin" link="xmlsec-transforms.html#xmlSecTransformKlass.pushBin"/>
+ <keyword type="member" name="xmlSecTransformKlass.popBin" link="xmlsec-transforms.html#xmlSecTransformKlass.popBin"/>
+ <keyword type="member" name="xmlSecTransformKlass.pushXml" link="xmlsec-transforms.html#xmlSecTransformKlass.pushXml"/>
+ <keyword type="member" name="xmlSecTransformKlass.popXml" link="xmlsec-transforms.html#xmlSecTransformKlass.popXml"/>
+ <keyword type="member" name="xmlSecTransformKlass.execute" link="xmlsec-transforms.html#xmlSecTransformKlass.execute"/>
+ <keyword type="member" name="xmlSecTransformKlass.reserved0" link="xmlsec-transforms.html#xmlSecTransformKlass.reserved0"/>
+ <keyword type="member" name="xmlSecTransformKlass.reserved1" link="xmlsec-transforms.html#xmlSecTransformKlass.reserved1"/>
+ <keyword type="member" name="xmlSecDSigCtx.userData" link="xmlsec-xmldsig.html#xmlSecDSigCtx.userData"/>
+ <keyword type="member" name="xmlSecDSigCtx.flags" link="xmlsec-xmldsig.html#xmlSecDSigCtx.flags"/>
+ <keyword type="member" name="xmlSecDSigCtx.flags2" link="xmlsec-xmldsig.html#xmlSecDSigCtx.flags2"/>
+ <keyword type="member" name="xmlSecDSigCtx.keyInfoReadCtx" link="xmlsec-xmldsig.html#xmlSecDSigCtx.keyInfoReadCtx"/>
+ <keyword type="member" name="xmlSecDSigCtx.keyInfoWriteCtx" link="xmlsec-xmldsig.html#xmlSecDSigCtx.keyInfoWriteCtx"/>
+ <keyword type="member" name="xmlSecDSigCtx.transformCtx" link="xmlsec-xmldsig.html#xmlSecDSigCtx.transformCtx"/>
+ <keyword type="member" name="xmlSecDSigCtx.enabledReferenceUris" link="xmlsec-xmldsig.html#xmlSecDSigCtx.enabledReferenceUris"/>
+ <keyword type="member" name="xmlSecDSigCtx.enabledReferenceTransforms" link="xmlsec-xmldsig.html#xmlSecDSigCtx.enabledReferenceTransforms"/>
+ <keyword type="member" name="xmlSecDSigCtx.referencePreExecuteCallback" link="xmlsec-xmldsig.html#xmlSecDSigCtx.referencePreExecuteCallback"/>
+ <keyword type="member" name="xmlSecDSigCtx.defSignMethodId" link="xmlsec-xmldsig.html#xmlSecDSigCtx.defSignMethodId"/>
+ <keyword type="member" name="xmlSecDSigCtx.defC14NMethodId" link="xmlsec-xmldsig.html#xmlSecDSigCtx.defC14NMethodId"/>
+ <keyword type="member" name="xmlSecDSigCtx.defDigestMethodId" link="xmlsec-xmldsig.html#xmlSecDSigCtx.defDigestMethodId"/>
+ <keyword type="member" name="xmlSecDSigCtx.signKey" link="xmlsec-xmldsig.html#xmlSecDSigCtx.signKey"/>
+ <keyword type="member" name="xmlSecDSigCtx.operation" link="xmlsec-xmldsig.html#xmlSecDSigCtx.operation"/>
+ <keyword type="member" name="xmlSecDSigCtx.result" link="xmlsec-xmldsig.html#xmlSecDSigCtx.result"/>
+ <keyword type="member" name="xmlSecDSigCtx.status" link="xmlsec-xmldsig.html#xmlSecDSigCtx.status"/>
+ <keyword type="member" name="xmlSecDSigCtx.signMethod" link="xmlsec-xmldsig.html#xmlSecDSigCtx.signMethod"/>
+ <keyword type="member" name="xmlSecDSigCtx.c14nMethod" link="xmlsec-xmldsig.html#xmlSecDSigCtx.c14nMethod"/>
+ <keyword type="member" name="xmlSecDSigCtx.preSignMemBufMethod" link="xmlsec-xmldsig.html#xmlSecDSigCtx.preSignMemBufMethod"/>
+ <keyword type="member" name="xmlSecDSigCtx.signValueNode" link="xmlsec-xmldsig.html#xmlSecDSigCtx.signValueNode"/>
+ <keyword type="member" name="xmlSecDSigCtx.id" link="xmlsec-xmldsig.html#xmlSecDSigCtx.id"/>
+ <keyword type="member" name="xmlSecDSigCtx.signedInfoReferences" link="xmlsec-xmldsig.html#xmlSecDSigCtx.signedInfoReferences"/>
+ <keyword type="member" name="xmlSecDSigCtx.manifestReferences" link="xmlsec-xmldsig.html#xmlSecDSigCtx.manifestReferences"/>
+ <keyword type="member" name="xmlSecDSigCtx.reserved0" link="xmlsec-xmldsig.html#xmlSecDSigCtx.reserved0"/>
+ <keyword type="member" name="xmlSecDSigCtx.reserved1" link="xmlsec-xmldsig.html#xmlSecDSigCtx.reserved1"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.userData" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.userData"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.dsigCtx" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.dsigCtx"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.origin" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.origin"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.transformCtx" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.transformCtx"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.digestMethod" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.digestMethod"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.result" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.result"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.status" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.status"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.preDigestMemBufMethod" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.preDigestMemBufMethod"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.id" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.id"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.uri" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.uri"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.type" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.type"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.reserved0" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.reserved0"/>
+ <keyword type="member" name="xmlSecDSigReferenceCtx.reserved1" link="xmlsec-xmldsig.html#xmlSecDSigReferenceCtx.reserved1"/>
+ <keyword type="member" name="xmlSecEncCtx.userData" link="xmlsec-xmlenc.html#xmlSecEncCtx.userData"/>
+ <keyword type="member" name="xmlSecEncCtx.flags" link="xmlsec-xmlenc.html#xmlSecEncCtx.flags"/>
+ <keyword type="member" name="xmlSecEncCtx.flags2" link="xmlsec-xmlenc.html#xmlSecEncCtx.flags2"/>
+ <keyword type="member" name="xmlSecEncCtx.mode" link="xmlsec-xmlenc.html#xmlSecEncCtx.mode"/>
+ <keyword type="member" name="xmlSecEncCtx.keyInfoReadCtx" link="xmlsec-xmlenc.html#xmlSecEncCtx.keyInfoReadCtx"/>
+ <keyword type="member" name="xmlSecEncCtx.keyInfoWriteCtx" link="xmlsec-xmlenc.html#xmlSecEncCtx.keyInfoWriteCtx"/>
+ <keyword type="member" name="xmlSecEncCtx.transformCtx" link="xmlsec-xmlenc.html#xmlSecEncCtx.transformCtx"/>
+ <keyword type="member" name="xmlSecEncCtx.defEncMethodId" link="xmlsec-xmlenc.html#xmlSecEncCtx.defEncMethodId"/>
+ <keyword type="member" name="xmlSecEncCtx.encKey" link="xmlsec-xmlenc.html#xmlSecEncCtx.encKey"/>
+ <keyword type="member" name="xmlSecEncCtx.operation" link="xmlsec-xmlenc.html#xmlSecEncCtx.operation"/>
+ <keyword type="member" name="xmlSecEncCtx.result" link="xmlsec-xmlenc.html#xmlSecEncCtx.result"/>
+ <keyword type="member" name="xmlSecEncCtx.resultBase64Encoded" link="xmlsec-xmlenc.html#xmlSecEncCtx.resultBase64Encoded"/>
+ <keyword type="member" name="xmlSecEncCtx.resultReplaced" link="xmlsec-xmlenc.html#xmlSecEncCtx.resultReplaced"/>
+ <keyword type="member" name="xmlSecEncCtx.encMethod" link="xmlsec-xmlenc.html#xmlSecEncCtx.encMethod"/>
+ <keyword type="member" name="xmlSecEncCtx.id" link="xmlsec-xmlenc.html#xmlSecEncCtx.id"/>
+ <keyword type="member" name="xmlSecEncCtx.type" link="xmlsec-xmlenc.html#xmlSecEncCtx.type"/>
+ <keyword type="member" name="xmlSecEncCtx.mimeType" link="xmlsec-xmlenc.html#xmlSecEncCtx.mimeType"/>
+ <keyword type="member" name="xmlSecEncCtx.encoding" link="xmlsec-xmlenc.html#xmlSecEncCtx.encoding"/>
+ <keyword type="member" name="xmlSecEncCtx.recipient" link="xmlsec-xmlenc.html#xmlSecEncCtx.recipient"/>
+ <keyword type="member" name="xmlSecEncCtx.carriedKeyName" link="xmlsec-xmlenc.html#xmlSecEncCtx.carriedKeyName"/>
+ <keyword type="member" name="xmlSecEncCtx.encDataNode" link="xmlsec-xmlenc.html#xmlSecEncCtx.encDataNode"/>
+ <keyword type="member" name="xmlSecEncCtx.encMethodNode" link="xmlsec-xmlenc.html#xmlSecEncCtx.encMethodNode"/>
+ <keyword type="member" name="xmlSecEncCtx.keyInfoNode" link="xmlsec-xmlenc.html#xmlSecEncCtx.keyInfoNode"/>
+ <keyword type="member" name="xmlSecEncCtx.cipherValueNode" link="xmlsec-xmlenc.html#xmlSecEncCtx.cipherValueNode"/>
+ <keyword type="member" name="xmlSecEncCtx.replacedNodeList" link="xmlsec-xmlenc.html#xmlSecEncCtx.replacedNodeList"/>
+ <keyword type="member" name="xmlSecEncCtx.reserved1" link="xmlsec-xmlenc.html#xmlSecEncCtx.reserved1"/>
+ <keyword type="member" name="xmlSecQName2IntegerInfo.qnameHref" link="xmlsec-xmltree.html#xmlSecQName2IntegerInfo.qnameHref"/>
+ <keyword type="member" name="xmlSecQName2IntegerInfo.qnameLocalPart" link="xmlsec-xmltree.html#xmlSecQName2IntegerInfo.qnameLocalPart"/>
+ <keyword type="member" name="xmlSecQName2IntegerInfo.intValue" link="xmlsec-xmltree.html#xmlSecQName2IntegerInfo.intValue"/>
+ <keyword type="member" name="xmlSecQName2BitMaskInfo.qnameHref" link="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo.qnameHref"/>
+ <keyword type="member" name="xmlSecQName2BitMaskInfo.qnameLocalPart" link="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo.qnameLocalPart"/>
+ <keyword type="member" name="xmlSecQName2BitMaskInfo.mask" link="xmlsec-xmltree.html#xmlSecQName2BitMaskInfo.mask"/>
+ </functions>
+</book>
diff --git a/docs/authors.html b/docs/authors.html
index cd4f8e09..d56e3d48 100644
--- a/docs/authors.html
+++ b/docs/authors.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/bugs.html b/docs/bugs.html
index bc973704..00177155 100644
--- a/docs/bugs.html
+++ b/docs/bugs.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/c14n.html b/docs/c14n.html
index 7df1a528..8f6bcde9 100644
--- a/docs/c14n.html
+++ b/docs/c14n.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/documentation.html b/docs/documentation.html
index 5c67337e..c8776067 100644
--- a/docs/documentation.html
+++ b/docs/documentation.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/download.html b/docs/download.html
index 495727e1..68eac177 100644
--- a/docs/download.html
+++ b/docs/download.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
@@ -75,53 +420,38 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
<h1>Download</h1>
</div>
<h2>Stable releases.</h2>
-<p>The latest stable XML Security Library version is <b>1.2.22</b>:</p>
+<p>The latest stable XML Security Library version is <b>1.2.28</b>:</p>
<ul>
<li>
- <a href="http://www.aleksey.com/xmlsec/download/xmlsec1-1.2.22.tar.gz">Sources
- for latest version</a>.
- </li>
- <li>
- <a href="http://www.zlatkovic.com/projects/libxml/index.html">Windows
- binaries</a> for XMLSec Library (as well as LibXML2, LibXSLT and OpenSSL)
- from <a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>.
- </li>
- <li>XMLSec Library is included as part of Debian GNU/Linux. For more
- information see the <a href="http://memebeam.org/toys/DebianXmlsec">coordination page</a>.
- </li>
- <li>XMLSec Library <a href="http://www.freebsd.org/cgi/cvsweb.cgi/ports/security/xmlsec/">FreeBSD</a>
- and <a href="http://www.openbsd.org/cgi-bin/cvsweb/ports/security/xmlsec/">OpenBSD</a>
- ports.
- </li>
+<a href="http://www.aleksey.com/xmlsec/download/xmlsec1-1.2.28.tar.gz">Sources for latest version</a>.</li>
+<li>
+<a href="http://www.zlatkovic.com/projects/libxml/index.html">Windows binaries</a> for XMLSec Library
+(as well as LibXML2, LibXSLT and OpenSSL) from <a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>.</li>
+<li>XMLSec Library is included as part of Debian GNU/Linux. For more information see the
+<a href="http://memebeam.org/toys/DebianXmlsec">coordination page</a>.</li>
+<li>XMLSec Library <a href="http://www.freebsd.org/cgi/cvsweb.cgi/ports/security/xmlsec/">FreeBSD
+and </a><a href="http://www.openbsd.org/cgi-bin/cvsweb/ports/security/xmlsec/">OpenBSD</a> ports.</li>
</ul>
<p>The <a href="http://www.aleksey.com/xmlsec/download/">previous releases</a> are also available.</p>
<h2>Requirements</h2>
-<p>
- The XML Security Library requires:
- </p>
+<p>The XML Security Library requires:</p>
<ul>
<li><a href="http://xmlsoft.org/downloads.html">LibXML</a></li>
- <li>
+<li>
<a href="http://xmlsoft.org/XSLT/downloads.html">LibXSLT</a> (optional)</li>
</ul>
<p>and one of the following cryptographic libraries:</p>
<ul>
<li>
-<a href="http://www.openssl.org/">OpenSSL</a> version 0.9.8 (or later).</li>
- <li>
-<a href="http://www.gnu.org/software/gnutls/">GnuTLS</a>
- </li>
- <li>
-<a href="http://www.gnu.org/directory/security/libgcrypt.html">Libgcrypt</a>
- </li>
- <li>
-<a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a> -
- Mozilla cryptographic library.
- </li>
- </ul>
+<a href="http://www.openssl.org/">OpenSSL</a> version 1.0.0 (or later).</li>
+<li><a href="http://www.gnu.org/software/gnutls/">GnuTLS</a></li>
+<li><a href="http://www.gnu.org/directory/security/libgcrypt.html">Libgcrypt</a></li>
+<li>
+<a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a> (Mozilla cryptographic library).</li>
+<li>Microsoft Crypto API (Windows only)</li>
+</ul>
<h2>Installation (source archive)</h2>
-<p>
- All steps are usual:<br></p>
+<p>All steps are usual:<br></p>
<blockquote>
<code>gunzip -c xmlsec1-xxx.tar.gz | tar xvf -</code><br><code>cd xmlsec1-xxxx</code><br><code>./configure --help</code><br><code>./configure [possible options] </code><br><code>make</code><br><code>make install</code><br><code>make check</code>
</blockquote>
diff --git a/docs/extra/xmlsec_oscon_2003.ppt b/docs/extra/xmlsec_oscon_2003.ppt
new file mode 100755
index 00000000..e0af7618
--- /dev/null
+++ b/docs/extra/xmlsec_oscon_2003.ppt
Binary files differ
diff --git a/docs/faq.html b/docs/faq.html
index 5ce601f7..ad10be29 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
@@ -151,10 +496,9 @@ xmlsec-core library) </td>
<a href="http://www.gnu.org/software/gnutls/">GnuTLS</a><br>
</td>
<td style="vertical-align: top;">
-<a href="http://www.opensource.org/licenses/gpl-license.php">GPL</a><br>
+<a href="https://www.gnupg.org/documentation/manuals/gcrypt/Library-Copying.html#Library-Copying">LGPL</a><br>
</td>
- <td style="vertical-align: top;">Yes, but only if
-the application is not distributed.<br>
+ <td style="vertical-align: top;">May be, talk to a lawyer.<br>
</td>
<td style="vertical-align: top;">Yes.</td>
<td style="vertical-align: top;">Yes.<br>
@@ -168,10 +512,9 @@ xmlsec-core library) </td>
<a href="http://www.gnupg.org/">LibGCrypt</a><br>
</td>
<td style="vertical-align: top;">
-<a href="http://www.opensource.org/licenses/gpl-license.php">GPL</a><br>
+<a href="https://www.gnupg.org/documentation/manuals/gcrypt/Library-Copying.html#Library-Copying">LGPL</a><br>
</td>
- <td style="vertical-align: top;">Yes, but only if
-the application is not distributed.<br>
+ <td style="vertical-align: top;">May be, talk to a lawyer.<br>
</td>
<td style="vertical-align: top;">Yes.</td>
<td style="vertical-align: top;">Yes.<br>
@@ -199,7 +542,7 @@ xmlsec-core library) </td>
</td>
<td style="vertical-align: top;">Microsoft licensing:
The libraries are part of MS Windows, and are also distributed with
-Internet Explorer. </td>
+Internet Explorer.</td>
<td style="vertical-align: top;">Unknown.<br>
</td>
<td style="vertical-align: top;">Unknown.</td>
@@ -232,7 +575,7 @@ xmlsec?</h4>
(optional)</li>
</ul>
<ul>
-<li> <a href="http://www.openssl.org/">OpenSSL</a> version 0.9.8 (or later).</li>
+<li> <a href="http://www.openssl.org/">OpenSSL</a> version 1.0.0 (or later).</li>
<li>
<a href="http://www.gnu.org/software/gnutls/">GnuTLS</a>
</li>
diff --git a/docs/index.html b/docs/index.html
index 404777d5..cc94efd6 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
@@ -94,40 +439,46 @@ XML Security Library is released under the
see the Copyright file in the distribution for details.<br><br></p>
<p><b>News</b></p>
<ul>
-<li>April 20 2016<br>
- The <a href="download.html">XML Security Library 1.2.22</a> release includes the following changes:
+<li>April 16 2019<br>
+ The <a href="download.html">XML Security Library 1.2.28</a> release includes the following changes:
<ul>
- <li>Restored SOAP parser to support backward compatibility for Lasso project.</li>
+ <li>Added BoringSSL support (chenbd).</li>
+ <li>Added gnutls-3.6.x support (alonbl).</li>
+ <li>Added DSA and ECDSA key size getter for MSCNG (vmiklos).</li>
+ <li>Added --enable-mans configuration option (alonbl).</li>
+ <li>Added coninuous build integration for MacOSX (vmiklos).</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
</ul>
</li>
-<br><li>April 12 2016<br>
- The <a href="download.html">XML Security Library 1.2.21</a> release includes the following changes:
+<br><li>October 23 2018<br>
+ The <a href="download.html">XML Security Library 1.2.27</a> release includes the following changes:
<ul>
- <li>Added OOXML Relationships Transform Algorithm (patch from <a href="https://github.com/vmiklos">Miklos Vajna</a>).</li>
- <li>Added experimental GOST2012 support for xmlsec-openssl (patch from Nikolay Shaplov).</li>
- <li>Migrated XMLSec to <a href="https://github.com/lsh123/xmlsec">GitHub</a>.</li>
- <li>Added OpenSSL 1.1.0 (pre 2) API support (major re-factoring for all OpenSSL based implementations of the
- block ciphers and the DSA/ECDSA signatures).</li>
- <li>Removed support for legacy OpenSSL 0.9.6 (last release: March, 2004) and 0.9.7 (last release: February, 2007).</li>
- <li>Completely revamped manpages/documentation build to completely pass 'make distcheck' tests.</li>
- <li>Deprecated XMLSEC_CRYPTO define in favor of xmlSecGetDefaultCrypto() function.</li>
- <li>Implemented several other smaller features; fixed several other minor bugs, code cleanups:
- (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ <li>Added AES-GCM support for OpenSSL and MSCNG (snargit).</li>
+ <li>Added DSA-SHA256 and ECDSA-SHA384 support for NSS (vmiklos).</li>
+ <li>Added RSA-OAEP support for MSCNG (vmiklos).</li>
+ <li>Continuous build integration in Travis and Appveyor.</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
</ul>
</li>
-<br><li>Jan 28 2016<br>
- The XML Security Library was migrated to <a href="https://github.com/lsh123/xmlsec">GitHub</a>. Please use GitHub for
- accessing source code and reporting issues.
-</li>
-<br><li>May 27 2014<br>
- The <a href="download.html">XML Security Library 1.2.20</a> release fixes a number of miscellaneous bugs and
- updates expired or soon-to-be-expired certificates in the test suite.
+<br><li>June 5 2018<br>
+ The <a href="download.html">XML Security Library 1.2.26</a> release includes the following changes:
+ <ul>
+ <li>Added xmlsec-mscng module based on <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376210(v=vs.85).aspx">Microsoft Cryptography API: Next Generation</a> (vmiklos).</li>
+ <li>Added support for GOST 2012 and fixed CryptoPro CSP provider for GOST R 34.10-2001 in xmlsec-mscrypto (ipechorin).</li>
+ <li>Added LibreSSL 2.7 support (vishwin).</li>
+ <li>Upgraded documentation build process to support the latest gtk-doc.</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
</li>
-<br><li>March 24 2013<br>
- The <a href="download.html">XML Security Library 1.2.19</a> release adds support for DSA-SHA256, ECDSA-SHA1,
- ECDSA-SHA224, ECDSA-SHA256, ECDSA-SHA384, ECDSA-SHA512 and fixes a number of miscellaneous bugs.
+<br><li>September 12 2017<br>
+ The <a href="download.html">XML Security Library 1.2.25</a> release includes the following changes:
+ <ul>
+ <li>Removed OpenSSL 0.9.8 support and several previously deprecated functions.</li>
+ <li>Added SHA224 support for xmlsec-nss (vmiklos).</li>
+ <li>Added configurable default linefeed for xmltree module (pablogallardo).</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
</li>
-<br>
</ul>
</td></tr></table></td>
</tr></table></body>
diff --git a/docs/news.html b/docs/news.html
index 0950ba0b..d8aab64e 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
@@ -75,7 +420,70 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
<h1>XML Security Library News</h1>
</div>
<ul>
-<li>April 20 2016<br>
+<li>April 16 2019<br>
+ The <a href="download.html">XML Security Library 1.2.28</a> release includes the following changes:
+ <ul>
+ <li>Added BoringSSL support (chenbd).</li>
+ <li>Added gnutls-3.6.x support (alonbl).</li>
+ <li>Added DSA and ECDSA key size getter for MSCNG (vmiklos).</li>
+ <li>Added --enable-mans configuration option (alonbl).</li>
+ <li>Added coninuous build integration for MacOSX (vmiklos).</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+</li>
+<br><li>October 23 2018<br>
+ The <a href="download.html">XML Security Library 1.2.27</a> release includes the following changes:
+ <ul>
+ <li>Added AES-GCM support for OpenSSL and MSCNG (snargit).</li>
+ <li>Added DSA-SHA256 and ECDSA-SHA384 support for NSS (vmiklos).</li>
+ <li>Added RSA-OAEP support for MSCNG (vmiklos).</li>
+ <li>Continuous build integration in Travis and Appveyor.</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+</li>
+<br><li>June 5 2018<br>
+ The <a href="download.html">XML Security Library 1.2.26</a> release includes the following changes:
+ <ul>
+ <li>Added xmlsec-mscng module based on <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376210(v=vs.85).aspx">Microsoft Cryptography API: Next Generation</a> (vmiklos).</li>
+ <li>Added support for GOST 2012 and fixed CryptoPro CSP provider for GOST R 34.10-2001 in xmlsec-mscrypto (ipechorin).</li>
+ <li>Added LibreSSL 2.7 support (vishwin).</li>
+ <li>Upgraded documentation build process to support the latest gtk-doc.</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+</li>
+<br><li>September 12 2017<br>
+ The <a href="download.html">XML Security Library 1.2.25</a> release includes the following changes:
+ <ul>
+ <li>Removed OpenSSL 0.9.8 support and several previously deprecated functions.</li>
+ <li>Added SHA224 support for xmlsec-nss (vmiklos).</li>
+ <li>Added configurable default linefeed for xmltree module (pablogallardo).</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+</li>
+<br><li>April 20 2017<br>
+ The <a href="download.html">XML Security Library 1.2.24</a> release includes the following changes:
+ <ul>
+ <li>Added ECDSA-SHA1, ECDSA-SHA256, ECDSA-SHA512 support for xmlsec-nss (vmiklos).</li>
+ <li>Fixed XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS handling (vmiklos).</li>
+ <li>Disabled external entities loading by xmlsec utility app by default to prevent XXE attacks (d-hat).</li>
+ <li>Improved OpenSSL version and features detection.</li>
+ <li>Cleaned up, simplified, and standardized internal error reporting.</li>
+ <li>Marked as deprecated all the functions in xmlsec/soap.h file and a couple other functions no longer
+ required by xmlsec. These functions will be removed in the future releases.</li>
+ <li>Fixed a few Coverity-discovered bugs (<a href="https://scan.coverity.com/projects/xmlsec">report</a>).</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+ Please note that OpenSSL 0.9.8 support will be removed in the next release of XMLSec library.
+</li>
+<br>
+<li>October 16 2016<br>
+ The <a href="download.html">XML Security Library 1.2.23</a> release includes the following changes:
+ <ul>
+ <li>Full support for OpenSSL 1.1.0.</li>
+ <li>Several other small fixes (<a href="https://github.com/lsh123/xmlsec/commits/master">more details</a>).</li>
+ </ul>
+</li>
+<br><li>April 20 2016<br>
The <a href="download.html">XML Security Library 1.2.22</a> release includes the following changes:
<ul>
<li>Restored SOAP parser to support backward compatibility for Lasso project.</li>
@@ -589,7 +997,7 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</li>
<br><li>March 18 2002<br><ul>
<li>Fixed wrong way shift of the DSA digest result bug found by Philipp
- Gühring. This bug is critical and I have to do a <a href="download/xmlsec-0.0.1a.tar.gz">new
+ Gühring. This bug is critical and I have to do a <a href="download/xmlsec-0.0.1a.tar.gz">new
build.</a>
</li>
<li>Added "--with-pedantic" configuration option and fixed all but "unused
diff --git a/docs/related.html b/docs/related.html
index b4daf813..94eb82db 100644
--- a/docs/related.html
+++ b/docs/related.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/tests/aleksey-xmldsig-01/README b/docs/tests/aleksey-xmldsig-01/README
new file mode 100644
index 00000000..7b12f7b3
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/README
@@ -0,0 +1,47 @@
+README
+http://groups.google.com/groups?hl=en&threadm=9jlbt7%243141%241%40FreeBSD.csie.NCTU.edu.tw&rnum=20&prev=/groups%3Fq%3Dopenssl%2Bx509%2Bcertificates%2Bchain%26start%3D10%26hl%3Den%26selm%3D9jlbt7%25243141%25241%2540FreeBSD.csie.NCTU.edu.tw%26rnum%3D20
+http://www.post1.com/home/ngps/m2/howto.ca.html
+
+
+Commands:
+
+(0) create new CA and modify the openssl.cnf file
+to point to it
+
+> CA.pl -newca
+
+(1) a self-signed des3 root ca cert, using
+
+> openssl genrsa -des3 -out ca.key
+> openssl req -new -key ca.key -out ca.csr
+> openssl x509 -req -signkey ca.key -out ca.crt -in ca.csr
+
+verify ca.crt
+
+> openssl x509 -text -in ca.crt
+
+(2) a second ca cert, signed by the first ca, using
+
+> openssl genrsa -des3 -out ca2.key
+> openssl req -new -key ca2.key -out ca2.csr
+> openssl ca -cert ca.crt -keyfile ca.key -out ca2.crt -infiles ca2.csr
+
+verify ca2.crt
+
+> openssl x509 -text -in ca2.crt
+> openssl verify -CAfile ca.crt ca2.crt
+
+
+(3) a user cert using
+
+> openssl genrsa -des3 -out user.key
+> openssl req -new -key user.key -out user.csr
+> openssl ca -cert ca2.crt -keyfile ca2.key -out user.crt -infiles user.csr
+
+
+verify user.crt
+
+> openssl x509 -text -in ca3.crt
+> openssl verify -CAfile ca.crt -untrusted ca2.crt user.crt
+
+
diff --git a/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd b/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd
new file mode 100644
index 00000000..630c0aea
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.dtd
@@ -0,0 +1 @@
+<!ATTLIST SOAP:Body id ID #IMPLIED>
diff --git a/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.xml b/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.xml
new file mode 100644
index 00000000..8293a647
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/dtd-hmac-91.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"><SOAP:Header><wsse:Security><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+<SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+ <HMACOutputLength>91</HMACOutputLength>
+ </SignatureMethod>
+ <Reference URI="#Body">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>KlK8TF9wnLYvXz008MJV4umoHhE=</DigestValue>
+ </Reference>
+</SignedInfo>
+ <SignatureValue>gmtoF50KWNUTGQCg</SignatureValue><KeyInfo><KeyName>name:KEY</KeyName></KeyInfo></Signature></wsse:Security></SOAP:Header><SOAP:Body id="Body">
+<echo xmlns="http://www.example.org">
+this
+is
+a
+test
+of
+echoing
+simple-91
+</echo>
+</SOAP:Body></SOAP:Envelope>
+
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml b/docs/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml
new file mode 100644
index 00000000..f6d02ea5
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>Niji66p2agomSLiShIYXIekL7bdFEnxzpa2ETcad9mHXHWd218vjUg==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIEdDCCBB6gAwIBAgIJANaOuOCRgiz5MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMTU5WhcNMTUwNzA4MDIzMTU5WjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgRFNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wgfAw
+gagGByqGSM44BAEwgZwCQQDIMfw6P79Fcw0hrxYKq3ePh7wmevc95UjfF2JHQJBX
+Jb9XFBa5LRy71lzh/OYMH4oh4giiFVRVBCW9HpZqOTNJAhUAlEOrmqjJG3tfjU49
+XjJuM3AXNskCQAUzwzmbp53bZ+bzDcOU6UGh3Ig/TFdLGXYevs3tiZaFLa//EYF+
+l5Tdsr3NQpGRRf4arXvXPZyIJhYYHJVk7OMDQwACQDonSDDJk3VaIfdVHPnOitRq
+V5XPFfMDksNb0WelnZdl/qokl9eaU+8uiH7LtsU0QYX9lE8kTplcUdD0bxjDYJ2j
+ggFTMIIBTzAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl
+bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUpVifKXAtGkJHRAParmenuvcp
+ZT4wgfEGA1UdIwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwg
+U2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMp
+MR4wHAYDVQQLExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaO
+uOCRgiz4MA0GCSqGSIb3DQEBBQUAA0EAJB9Kc4/Z0hTwiDYR5fXVPyzAjD+BeChR
+F14ztWl1Ol6REWFRbIGfEz3XDgCHCiocM8ExXi7zn26R072cdBz7+w==</X509Certificate>
+</X509Data>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml b/docs/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml
new file mode 100644
index 00000000..cc4d4cca
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>SPqE1/nehy9KOKeFSODZWZyvUZ/iS4jameUSXtvmfPgez5lN5QL4ox+QDlo37IeW
+NDjt380ZiA7kx9pnlx8jfQ==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID2zCCA4WgAwIBAgIJANaOuOCRgiz7MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDM1MTU2WhcNMDUwNzExMDM1MTU2WjCBwzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxJTAjBgNVBAsT
+HFRlc3QgRXhwaXJlZCBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
+U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqG
+SIb3DQEBAQUAA0sAMEgCQQDJUmVgQEBmML80PvR8zIwGkyDiE5boEWR4pGmaGUOH
+bRnFQkt2mt+4/QeYtm7GRVRUe6YJigUovU1u3DQDiOjzAgMBAAGjggFTMIIBTzAM
+BgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD
+ZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+fqJEjRKO1kG3y4X8sCPsiYHeMkwgfEGA1Ud
+IwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwxCzAJBgNVBAYT
+AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkg
+TGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMR4wHAYDVQQL
+ExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4x
+ITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaOuOCRgiz4MA0G
+CSqGSIb3DQEBBQUAA0EAmLTpL4oqi+VjrLISYYxY5FfAqACYAOpIbIdWM2QtjozB
+dQxFVSK2RHn2z1W2gWy7N8VQmfrggN73LIKOXuoV5A==</X509Certificate>
+</X509Data>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml b/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml
new file mode 100644
index 00000000..0df316d9
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+ <HMACOutputLength>64</HMACOutputLength>
+ </SignatureMethod>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
+ <DigestValue>/u+47lA0BK55De4qRAg16w==</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>j202k+irNYE=</SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml b/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml
new file mode 100644
index 00000000..d8159789
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
+ <DigestValue>/u+47lA0BK55De4qRAg16w==</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>7uFBgN6DOM9SJj+UBkM2fQ==</SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml b/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml
new file mode 100644
index 00000000..582dc96d
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160">
+ <HMACOutputLength>64</HMACOutputLength>
+ </SignatureMethod>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
+ <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>+TxC/QCigpQ=</SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml b/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml
new file mode 100644
index 00000000..057cf471
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
+ <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>tt3/nrk/uQ79pKHEZaCxXNncAtg=</SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml b/docs/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml
new file mode 100644
index 00000000..0cf0f425
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>RCkGabfqV1XpXvx0rGDEIAzs4/U9TDKvZIWN9MBRi5BPAr1pXnX0iAve+2OEeBTm
+nstv7BjG6CDnb69ouJSeWg==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/aleksey-xmldsig-01/x509data-test.xml b/docs/tests/aleksey-xmldsig-01/x509data-test.xml
new file mode 100644
index 00000000..287cc778
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/x509data-test.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+ <ToBeSigned>
+ Some very secret data
+ </ToBeSigned>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+ <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="intersect"> //ToBeSigned </XPath>
+ </Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>3om1gINPzaogcdLuDdjIQlls4NE=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>W/X7k6Q6T9RFW56VkRV9HGW5wkyUxvvlUcEyUkggVE04gsOK0Rx0rqq2woUxzkk1
+jvXfCtm2xknb2/cOmqfO/g==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+
+
+
+
+
+ <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Second Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904056</X509SerialNumber>
+</X509IssuerSerial>
+<X509SKI>/uTsUyTwlZXHELXhRLVdOWVa434=</X509SKI>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904055</X509SerialNumber>
+</X509IssuerSerial>
+<X509SKI>2kbpa+av0z2q5SFLUu3KZijg/oU=</X509SKI>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Third Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec@aleksey.com,CN=Aleksey Sanin,OU=Test Second Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904058</X509SerialNumber>
+</X509IssuerSerial>
+<X509SKI>1/TGRnfONwQjrSlU+7AOpMxDKBk=</X509SKI>
+</X509Data>
+ </KeyInfo>
+ </Signature>
+</Document>
diff --git a/docs/tests/aleksey-xmldsig-01/xpointer-hmac.xml b/docs/tests/aleksey-xmldsig-01/xpointer-hmac.xml
new file mode 100644
index 00000000..2a255f8a
--- /dev/null
+++ b/docs/tests/aleksey-xmldsig-01/xpointer-hmac.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!DOCTYPE test [
+<!ATTLIST ToBeSigned Id ID #IMPLIED>
+]>
+<Document xmlns:xenc="http://www.example.org/xenc" xmlns:dsig="http://www.example.org/dsig">
+ <ToBeSigned Id="foo">
+ <Secrets>Test</Secrets>
+ </ToBeSigned>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2001/04/xmldsig-more/xptr">
+ <XPointer xmlns="http://www.w3.org/2001/04/xmldsig-more/xptr">
+ xpointer(id(&quot;foo&quot;))
+ </XPointer>
+ </Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>faszbFrqwUNeZH5QrXPPobn+zso=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>BTB6iZWZjOIG0JjGjpYbihO3Igg=</SignatureValue>
+ <Object Id="object">some text</Object>
+ </Signature>
+</Document>
diff --git a/docs/tests/keys-certs/cacert.pem b/docs/tests/keys-certs/cacert.pem
new file mode 100644
index 00000000..a86c2e77
--- /dev/null
+++ b/docs/tests/keys-certs/cacert.pem
@@ -0,0 +1,72 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ d6:8e:b8:e0:91:82:2c:f7
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ Validity
+ Not Before: Jul 10 02:29:01 2005 GMT
+ Not After : Jul 8 02:29:01 2015 GMT
+ Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:da:c9:a1:5a:8c:9c:4e:75:55:3e:f0:48:f0:3b:
+ 7d:52:d9:7a:8d:99:8c:71:6c:77:e2:50:93:b7:c3:
+ 68:79:ec:e3:d4:90:a0:1c:29:ee:46:be:df:61:25:
+ b3:d3:6f:70:b8:6e:53:d2:70:e9:1e:d9:17:b1:2a:
+ 75:d2:ee:90:17:5d:bc:45:96:05:25:67:44:0a:d0:
+ ad:a9:76:5e:79:f4:e4:a6:ae:d1:f7:98:f3:fd:04:
+ 9b:ef:0c:c9:71:91:c3:63:f7:f1:1e:0f:ec:86:77:
+ c1:8d:ff:24:fa:3d:30:e1:f0:6f:f8:96:cc:ce:5c:
+ bf:ad:c8:a2:24:0b:86:2c:ff
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+ X509v3 Authority Key Identifier:
+ keyid:DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+ DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ serial:D6:8E:B8:E0:91:82:2C:F7
+
+ Signature Algorithm: sha1WithRSAEncryption
+ 54:5d:b7:4e:4d:0c:00:ad:c3:6b:6f:16:af:cc:04:69:d8:91:
+ 8e:9f:3a:3a:5b:34:e6:f8:e1:52:5c:2d:05:d3:c6:30:4f:c8:
+ d6:6e:1b:7d:ed:ef:25:34:d5:4e:05:4e:18:ff:7f:11:79:9a:
+ 98:0b:d3:aa:16:87:c6:d7:f3:bd:01:d4:39:f1:62:ff:15:68:
+ 3c:0e:03:f9:30:93:d3:4f:d9:11:53:71:54:d3:58:d4:89:7d:
+ be:91:b7:67:82:16:40:38:99:b4:ce:24:4d:c5:f3:4f:c0:82:
+ 16:3c:a6:17:c9:71:0a:41:0c:eb:9f:1c:85:7b:2d:61:3f:b7:
+ 20:e8
+-----BEGIN CERTIFICATE-----
+MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==
+-----END CERTIFICATE-----
diff --git a/docs/tests/keys-certs/cakey.pem b/docs/tests/keys-certs/cakey.pem
new file mode 100644
index 00000000..0270e59c
--- /dev/null
+++ b/docs/tests/keys-certs/cakey.pem
@@ -0,0 +1,18 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,77F426A47A174623
+
+FH1NdgJgrX1OGKM0WfzwRUWmLTmfawdaUPeFNJbz1+40J5DEt1DmC6o0QkXoxIPC
+Te/+FS80gNruYgYIWu4WXftCSdvSfGI8LP1JZ7hmMCl055J2mLVKT4o6HqAQnHrb
+hTATVG6CB/GdHTFPG3J65qIyTlG50jyzfwZtliMCCAwi+AaAlo5xzUe0DgedytB2
+sFkLq5EiD6066P/LXPH/Z5SJKiMCFOl0Gjwd3M9ohZufnEJPJT5ap2fm7OSJSfa6
+jPREY+UwhPyKkYOc2c8gojj6HrsSQlXPl176b1+31c19hhhRAtDfJBIU2OrOFVk/
+V88/Dm0I+ROyLme0rYfFg8uHz2aIymzEMds5ZKEFTFbBhaWbVYKIX7+82tftnd+P
+2kT15JAK9V27F0p4SRiQ5RsDkT3rBWsZjtk9Rptkrgec9aKoTaO2fT8bPaWFR/M1
+6X7kjMqhLw1sHmsSeDKx0YCWfS+gWh7RPjGQ2EfH2pxoZkUAR5R3cZCEn3Ia1BeV
+UTFWy+DwjEeSrNkO96E0pH1r8204cJAKK8cWS4HSAPMsQPf5cZjIrrAak/9Wupkq
+fnrB0Ae6GFO2gHYQfbSL+KdEq6w5+S6XZyTauVyaJAjjIFDmegfaKWHzNvqCWJ4T
+YPsiptUrKz6DYyhiUrNJQKcyGWHWrwMNIbldqSBNCa8OIVoaZiRibgO1SIafAGAS
+9MDXXVaY6rqx1yfZYDc9VgKGXTJhBXALCeGMYF43bvAmPq3M13QJA0rlO7lAUUF2
+5INqBUeJxZrYxn6tRr9EMty/UcYnPR3YHgt0RDZycvbcqPsU5tHk9Q==
+-----END RSA PRIVATE KEY-----
diff --git a/docs/tests/keys-certs/keys.xml b/docs/tests/keys-certs/keys.xml
new file mode 100644
index 00000000..cead991a
--- /dev/null
+++ b/docs/tests/keys-certs/keys.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<Keys xmlns="http://www.aleksey.com/xmlsec/2002">
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-hmac-sha1</KeyName>
+<KeyValue>
+<HMACKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">c2VjcmV0</HMACKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-dsa</KeyName>
+<KeyValue>
+<DSAKeyValue>
+<P>
+4jl6DkcmDDBt815kg/WbxW1gnLtqH+kdjqEeFDD9m6EqGqvVhFbbvNNQqAwuaiJU
+nWlR8gG47GtHKFN6w8CM1qteIo3foK504otZFNsl1p3cInQpdRCp2e/lQ+E24J/H
+/n4Ix9pBNV63JIiSIqa+GpDuBpW4o3rrBRxTjOwYpWk=
+</P>
+<Q>
+9WQwByMPy0u1C8e2SeNQTvkG6tM=
+</Q>
+<G>
+Rrg7e8pNLHMFK0pGW7xvzb7Kh6icJSsiBaX6aHqaQc9rSzzMJG3snBuQricNaUH5
+8ipucT+hdPRTo6g0ty5noyyBmqUvYHf9NuskQhPDmC3uTtqQTHeCEuX8XoH3YYlB
+uE4nXvQRGZoyy+43ISe9aDnEAgIUVQXEayTVppRF24I=
+</G>
+<X xmlns="http://www.aleksey.com/xmlsec/2002">
+S3Gt9BE+wZb996U6h4nSNtYxEmE=
+</X>
+<Y>
+WT0+1bR+bj65u5iDJ0MRc6/8iEAbvj7l5sAVn/H+SdZy94wW5mnSLCC5ufN33QPp
+WNvgVk2igM+W51WlhFDgA8Xz9lRPk19jW8BXQpqv11MKoIBpaSAWvnhs/0AKubiT
+XxJz7i78ZJy4hVTn99Rvt6Tc16/LICZfsqIJr+VK4Sg=
+</Y>
+</DSAKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-rsa</KeyName>
+<KeyValue>
+<RSAKeyValue>
+<Modulus>
+0rGgazIyv0XjPXGGBwt1wvfCPO++VAlxW15LFinbxCeBkq/5jb/71gC7R2CJtUK4
+y/tIi7g89YBwQosJpgMMZt69fz51omEv/WobD0vUFcbRxek+Yi23ZHxhZMtO42Re
+zfpwgC4ep0fXL+V105BUmjGFYACnUJdtMkG8ahH8/Zs=
+</Modulus>
+<Exponent>
+Aw==
+</Exponent>
+<PrivateExponent xmlns="http://www.aleksey.com/xmlsec/2002">
+jHZq8iF3Ki6Xfkuur1z5LKUsKJ/UOAZLkj7cuXE9LW+rtx/7s9VSjqsnhOsGeNcl
+3VIwXSV9+QBK1wdbxAIIQ16+yWXNY+21K94h4C6ssx44lqgODL25OXDsE92EZFu0
+1gApBhqOUxV1gUXDqMnHqSWbk7/1kwX6RzsioRu0UKs=
+</PrivateExponent>
+</RSAKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-des</KeyName>
+<KeyValue>
+<DESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">
+zBFljViy/Qhd8AG0vGxf+SekrJ1ttpIz
+</DESKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-aes128</KeyName>
+<KeyValue>
+<AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">0Xfy3ES+Fbv/OfWuQHKvPA==</AESKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-aes192</KeyName>
+<KeyValue>
+<AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">lk9DyA07xL/m45fUb7zbLoy3c0hLhw80</AESKeyValue>
+</KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+<KeyName>test-aes256</KeyName>
+<KeyValue>
+<AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">fpCPQLCMZCw9WipH8kk1J75CqYgWBhbJDMFPiUS0hzE=</AESKeyValue>
+</KeyValue>
+</KeyInfo>
+</Keys>
diff --git a/docs/tests/keys-certs/merlin.pem b/docs/tests/keys-certs/merlin.pem
new file mode 100644
index 00000000..7efe8e08
--- /dev/null
+++ b/docs/tests/keys-certs/merlin.pem
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+-----END CERTIFICATE-----
+
diff --git a/docs/tests/merlin-exc-c14n-one/Readme.txt b/docs/tests/merlin-exc-c14n-one/Readme.txt
new file mode 100644
index 00000000..1ba1cd92
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/Readme.txt
@@ -0,0 +1,3 @@
+untested exclusive c14n example signature + c14n output
+merlin@baltimore.ie
+mon jan 14 2002
diff --git a/docs/tests/merlin-exc-c14n-one/c14n-0.txt b/docs/tests/merlin-exc-c14n-one/c14n-0.txt
new file mode 100644
index 00000000..f88f1abe
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/c14n-0.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+ <bar:Baz xmlns:bar="urn:bar">
+
+ </bar:Baz>
+ </dsig:Object> \ No newline at end of file
diff --git a/docs/tests/merlin-exc-c14n-one/c14n-1.txt b/docs/tests/merlin-exc-c14n-one/c14n-1.txt
new file mode 100644
index 00000000..16815e3c
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/c14n-1.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+ <bar:Baz>
+
+ </bar:Baz>
+ </dsig:Object> \ No newline at end of file
diff --git a/docs/tests/merlin-exc-c14n-one/c14n-2.txt b/docs/tests/merlin-exc-c14n-one/c14n-2.txt
new file mode 100644
index 00000000..ccd95347
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/c14n-2.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+ <bar:Baz xmlns:bar="urn:bar">
+ <!-- comment -->
+ </bar:Baz>
+ </dsig:Object> \ No newline at end of file
diff --git a/docs/tests/merlin-exc-c14n-one/c14n-3.txt b/docs/tests/merlin-exc-c14n-one/c14n-3.txt
new file mode 100644
index 00000000..0adfc736
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/c14n-3.txt
@@ -0,0 +1,5 @@
+<dsig:Object xmlns="urn:foo" xmlns:bar="urn:bar" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="to-be-signed">
+ <bar:Baz>
+ <!-- comment -->
+ </bar:Baz>
+ </dsig:Object> \ No newline at end of file
diff --git a/docs/tests/merlin-exc-c14n-one/c14n-4.txt b/docs/tests/merlin-exc-c14n-one/c14n-4.txt
new file mode 100644
index 00000000..37f33034
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/c14n-4.txt
@@ -0,0 +1,36 @@
+<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:CanonicalizationMethod>
+ <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"></dsig:SignatureMethod>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+ <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+ <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"></dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+ <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default"></InclusiveNamespaces>
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod>
+ <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+ </dsig:Reference>
+ </dsig:SignedInfo> \ No newline at end of file
diff --git a/docs/tests/merlin-exc-c14n-one/exc-signature.tmpl b/docs/tests/merlin-exc-c14n-one/exc-signature.tmpl
new file mode 100644
index 00000000..7b635ae0
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/exc-signature.tmpl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Foo xmlns:bar="urn:bar" xmlns="urn:foo" xml:space="preserve">
+ <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:SignedInfo>
+ <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+ <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue></dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue></dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue></dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue></dsig:DigestValue>
+ </dsig:Reference>
+ </dsig:SignedInfo>
+ <dsig:SignatureValue>
+ </dsig:SignatureValue>
+ <dsig:KeyInfo>
+ <dsig:KeyValue>
+ </dsig:KeyValue>
+ </dsig:KeyInfo>
+ <dsig:Object Id="to-be-signed">
+ <bar:Baz>
+ <!-- comment -->
+ </bar:Baz>
+ </dsig:Object>
+ </dsig:Signature>
+</Foo>
diff --git a/docs/tests/merlin-exc-c14n-one/exc-signature.xml b/docs/tests/merlin-exc-c14n-one/exc-signature.xml
new file mode 100644
index 00000000..e805940b
--- /dev/null
+++ b/docs/tests/merlin-exc-c14n-one/exc-signature.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Foo xmlns:bar="urn:bar" xmlns="urn:foo" xml:space="preserve">
+ <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:SignedInfo>
+ <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+ <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue>7yOTjUu+9oEhShgyIIXDLjQ08aY=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue>09xMy0RTQM1Q91demYe/0F6AGXo=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue>ZQH+SkCN8c5y0feAr+aRTZDwyvY=</dsig:DigestValue>
+ </dsig:Reference>
+ <dsig:Reference URI="#xpointer(id('to-be-signed'))">
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">
+ <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="bar #default" />
+ </dsig:Transform>
+ </dsig:Transforms>
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <dsig:DigestValue>a1cTqBgbqpUt6bMJN4C6zFtnoyo=</dsig:DigestValue>
+ </dsig:Reference>
+ </dsig:SignedInfo>
+ <dsig:SignatureValue>
+ Kv1e7Kjhz4gFtOZKgvC5cLYtMQNIn99fyLBa6D//bBokTxTUEkMwaA==
+ </dsig:SignatureValue>
+ <dsig:KeyInfo>
+ <dsig:KeyValue>
+ <dsig:DSAKeyValue>
+ <dsig:P>
+ 8FkJgwdyizV5Vd0m6DA/DZsdweJdnkueYVUd7L8aA4JpZxrlCI/M7mDE/OGhEhgB
+ nFzSTrBjSFpT7DG66uy7oJeE+RgkXO7EWWOEglMPwaZgGgi1oZarv95VOx3uO8W8
+ L7+S/3AuHNUZQD4b5bpdYAmjXFwz6dl0mKiXAvVuP9E=
+ </dsig:P>
+ <dsig:Q>
+ mFf8DiMVNFXy0vag9oNGNW/g4u0=
+ </dsig:Q>
+ <dsig:G>
+ g8gRdNlq9EOTR2TjmVApqCAZAq3jEjOIxXbs8JBiZ+U7dV9geeXEy13GbYoP23Qr
+ apZQo+35diw+cMYPHjN+iUCwUkiGWv7/piAK+Ootfw03etL8XiVWjtL5NBof2CNp
+ wmAw7mrwmNG092y1e6HXSGMMZpaoth/P8xhsxCQsqI8=
+ </dsig:G>
+ <dsig:Y>
+ j0V14dc/I+okDAeG4ZbWUzb3HTFkEOC6feOMo5Dk218GcPqEKroVHaDBF9CmRV1v
+ B8MUOExB+6ZNHfcs5Vaw0HVn62YiEBzrmKikx6SxO4Dg9L8I5WbHn37vxUKvHs8r
+ 7+rma3kpZQftTMiBpJ8XK8Z6jg8VhuJqo9yZZO+p3I0=
+ </dsig:Y>
+ </dsig:DSAKeyValue>
+ </dsig:KeyValue>
+ </dsig:KeyInfo>
+ <dsig:Object Id="to-be-signed">
+ <bar:Baz>
+ <!-- comment -->
+ </bar:Baz>
+ </dsig:Object>
+ </dsig:Signature>
+</Foo>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/Readme.txt b/docs/tests/merlin-xmldsig-twenty-three/Readme.txt
new file mode 100644
index 00000000..37e9d88f
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/Readme.txt
@@ -0,0 +1,63 @@
+Sample XML Signatures[1][2]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/TR/2001/REC-xml-c14n-20010315
+
+1. A large and complex signature:
+
+This includes internal and external base 64, references of the forms
+"", "#xpointer(/)", "#foo" and "#xpointer(id('foo'))" (with and
+without comments), manifests, signature properties, simple xpath
+with here(), xslt, retrieval method and odd interreferential
+dependencies.
+
+ signature.xml - A signature
+ signature.tmpl - The template from which the signature was created
+ signature-c14n-*.txt - All intermediate c14n output
+
+2. Some basic signatures:
+
+The key for the HMAC-SHA1 signatures is "secret".getBytes("ASCII")
+which is, in hex, (73 65 63 72 65 74). No key info is provided for
+these signatures.
+
+ signature-enveloped-dsa.xml
+ signature-enveloping-b64-dsa.xml
+ signature-enveloping-dsa.xml
+ signature-enveloping-hmac-sha1-40.xml
+ signature-enveloping-hmac-sha1.xml
+ signature-enveloping-rsa.xml
+ signature-external-b64-dsa.xml
+ signature-external-dsa.xml - The signatures
+ signature-*-c14n-*.txt - The intermediate c14n output
+
+3. Varying key information:
+
+To resolve the key associated with the KeyName in `signature-keyname.xml'
+you must perform a cunning transformation from the name `Xxx' to the
+certificate that resides in the directory `certs/' that has a subject name
+containing the common name `Xxx', which happens to be in the file
+`certs/xxx.crt'.
+
+To resolve the key associated with the X509Data in `signature-x509-is.xml',
+`signature-x509-ski.xml' and `signature-x509-sn.xml' you need to resolve
+the identified certificate from those in the `certs' directory.
+
+In `signature-x509-crt-crl.xml' an X.509 CRL is present which has revoked
+the X.509 certificate used for signing. So verification should be
+qualified.
+
+ signature-keyname.xml
+ signature-retrievalmethod-rawx509crt.xml
+ signature-x509-crt-crl.xml
+ signature-x509-crt.xml
+ signature-x509-is.xml
+ signature-x509-ski.xml
+ signature-x509-sn.xml - The signatures
+ certs/*.crt - The certificates
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+http://www.baltimore.com/
+
+Thursday, April 4, 2002
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/badb.der b/docs/tests/merlin-xmldsig-twenty-three/certs/badb.der
new file mode 100644
index 00000000..2d0dec68
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/badb.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/badb.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/badb.pem
new file mode 100644
index 00000000..0221d206
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/badb.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDTjCCAw6gAwIBAgIGAOz5IWdKMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAyMjM1OTU3WhcNMTIwNDAyMjI1OTQ2WjBmMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRCYWRi
+MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYATQutuLkVzLAWmxY7yUNr12h3oXy54
+Bq1CfurLlhfiraKcFqe6QB6DvfEbh+4e/GeQIPI3y+dP/zkvrbdjN6l74mCueWTI
+dyn+wrhsvHbx6sb8YiElOKE7xnM1Nv8jOgcOR1NwJinjKqPv+stIdDENExfx6Ubz
+8hrtRueuFP3b36M6MDgwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAiAtARqytE1
+qDATBgNVHSMEDDAKgAiKHFYwWjISfTAJBgcqhkjOOAQDAy8AMCwCFFKTrj8PpVIm
+Yzp9a4bruXQS6ZvQAhQ1kT4Tac5xe7Gu8fu4RlzNTm911A==
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/balor.der b/docs/tests/merlin-xmldsig-twenty-three/certs/balor.der
new file mode 100644
index 00000000..806d59d7
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/balor.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/balor.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/balor.pem
new file mode 100644
index 00000000..edc1748a
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/balor.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDTzCCAw+gAwIBAgIGAOz5IaxHMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDE1WhcNMTIwNDAyMjI1OTQ2WjBnMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ4wDAYDVQQDEwVCYWxv
+cjCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCEirBKJ4zRoB7P7ofvWCoJ8GfAbd0+
+7skASVvXcaTBdHD1F8+HRW0hWOEMlvIoAi7MKTmvnhxxGLFrxNDa9ZXCh1D16u7u
+NSScBzatUQBXmYlOsGvtRS979f09awIM3qVe8UuImn8+L8XRzJX8ICn6Min6uiVN
+c6FTP2oSOcVgwwIVAJhL+niCaweCjdHz0QAT8dzR2HJZAoGAJYbmGfwMz7Wu/mxO
+QkGrJklc3PLjP3vizewAZRF8EEZOkH2QXF/E23jzRPGRZ4OFH7f0MwDlMQCxE+5C
+gHpOCXsrac3NF2AmMrhiQE5uBfWWNaQCeckJlJsLw2HZWmSeJXRszv0eexL54J/x
+uLao46ItLMd46u3M7w8HRh55MtADgYQAAoGAbueMW9xlSwsHNyM3j1KFYeM2yUon
+KtIVOMFc4VmNFE14ldDEldIK/8072nA2fCJvWfhTTC5DOAjzvSmH8sw2cgCLuo72
+K39mC5aDx3/US5x+WwiDqYiVQbrir09mHdnjGnRRPWTjmA4AM3PBOCNi8VykODIB
+r9sgc3UAV+b8jl+jOjA4MA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQIg+4EbbfC
+EBMwEwYDVR0jBAwwCoAIihxWMFoyEn0wCQYHKoZIzjgEAwMvADAsAhRDxoNOoKQC
+6qpfb4Eh4YrYxHnwnwIUZKOfYeB62qVk0Mpd4V/zHNWC360=
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/bres.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/bres.pem
new file mode 100644
index 00000000..18a0966c
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/bres.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDTjCCAw6gAwIBAgIGAOz5Id5/MAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDI4WhcNMTIwNDAyMjI1OTQ2WjBmMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRCcmVz
+MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYBgvDFxw1U6Ou2G6P/+347Jfk2wPB1/
+atr4p3JUVLuT0ExZG6np+rKiXmcBbYKbAhMY37zVkroR9bwo+NgaJGubQ4ex5Y1X
+N2Q5gIHNhNfKr8G4LPVqWGxf/lFPDYxX3ezqBJPpJCJTREX7s6Hp/VTV2SpQlySv
++GRcFKJFPlhD9aM6MDgwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAiC+5gx0MHL
+hTATBgNVHSMEDDAKgAiKHFYwWjISfTAJBgcqhkjOOAQDAy8AMCwCFDTcM5i61uqq
+/aveERhOJ6NG/LubAhREVDtAeNbTEywXr4O7KvEEvFLUjg==
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/ca.der b/docs/tests/merlin-xmldsig-twenty-three/certs/ca.der
new file mode 100644
index 00000000..00861d03
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/ca.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/ca.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/ca.pem
new file mode 100644
index 00000000..4e6d5766
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/ca.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAxqgAwIBAgIGAOz5ITo8MAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAyMjM1OTQ2WhcNMTIwNDAyMjI1OTQ2WjB2MQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMR0wGwYDVQQDExRBbm90
+aGVyIFRyYW5zaWVudCBDQTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCEirBKJ4zR
+oB7P7ofvWCoJ8GfAbd0+7skASVvXcaTBdHD1F8+HRW0hWOEMlvIoAi7MKTmvnhxx
+GLFrxNDa9ZXCh1D16u7uNSScBzatUQBXmYlOsGvtRS979f09awIM3qVe8UuImn8+
+L8XRzJX8ICn6Min6uiVNc6FTP2oSOcVgwwIVAJhL+niCaweCjdHz0QAT8dzR2HJZ
+AoGAJYbmGfwMz7Wu/mxOQkGrJklc3PLjP3vizewAZRF8EEZOkH2QXF/E23jzRPGR
+Z4OFH7f0MwDlMQCxE+5CgHpOCXsrac3NF2AmMrhiQE5uBfWWNaQCeckJlJsLw2HZ
+WmSeJXRszv0eexL54J/xuLao46ItLMd46u3M7w8HRh55MtADgYQAAoGADpGA7hzl
+zqaxtr6U+w86qQmoDJhIPMGAUG65aFhGDLm410IzA30J4DYEd9gpnG7lNF+AeHQq
+rpvUN+H0CB0eSxiElFRiV+x+oYUN/p1v/mbKXb4H1+mT7XTi5G/k9Kw5e8UbNgDC
+Ij/2uewSMd5y+jkWUUUXlwYbqt5pOZZhmtejNjA0MA4GA1UdDwEB/wQEAwICBDAP
+BgNVHRMECDAGAQH/AgEAMBEGA1UdDgQKBAiKHFYwWjISfTAJBgcqhkjOOAQDAy8A
+MCwCFDI9WLFVplIMf5ta+kB2s/BHBzm9AhQTczFDTX/7sawplNpLfzu5i/g+qA==
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.der b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.der
new file mode 100644
index 00000000..2109edfa
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem
new file mode 100644
index 00000000..049721f1
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh-cert.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDTzCCAw6gAwIBAgIGAOz5IcSmMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDIxWhcNMTIwNDAyMjI1OTQ2WjBmMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRMdWdo
+MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYBIdlgw5JS5w1C4a5zQVul03YLFTkaX
+6RxbTYsDcnb0SyegrcKQ5y7MgaeDTUVIzCe6Q1WNjvT1fLwWmygpNVUUOZKEJT3p
+kSB+8/7IrGM+IWUTxkyIwasgsmrQnV/a+CSRFVDzZQKJFzcdCfZmK0yxh2NrPMiQ
+ogOgroVjgLrlE6M6MDgwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAiMWQ6+Iv7t
+UDATBgNVHSMEDDAKgAiKHFYwWjISfTAJBgcqhkjOOAQDAzAAMC0CFQCE72yE3Jte
+0ltPp3yWpePyMp0RJgIUdB+bQ5BzY7G332mPCCH7dNa1Y0Q=
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.der b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.der
new file mode 100644
index 00000000..3b1193ab
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.pem
new file mode 100644
index 00000000..e0d1e959
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/lugh.pem
@@ -0,0 +1,12 @@
+-----BEGIN PUBLIC KEY-----
+MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYBIdlgw5JS5w1C4a5zQVul03YLFTkaX
+6RxbTYsDcnb0SyegrcKQ5y7MgaeDTUVIzCe6Q1WNjvT1fLwWmygpNVUUOZKEJT3p
+kSB+8/7IrGM+IWUTxkyIwasgsmrQnV/a+CSRFVDzZQKJFzcdCfZmK0yxh2NrPMiQ
+ogOgroVjgLrlEw==
+-----END PUBLIC KEY-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/macha.der b/docs/tests/merlin-xmldsig-twenty-three/certs/macha.der
new file mode 100644
index 00000000..484ddc26
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/macha.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/macha.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/macha.pem
new file mode 100644
index 00000000..2402a12f
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/macha.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDUDCCAw+gAwIBAgIGAOz5IXv6MAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDAzWhcNMTIwNDAyMjI1OTQ2WjBnMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ4wDAYDVQQDEwVNYWNo
+YTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCEirBKJ4zRoB7P7ofvWCoJ8GfAbd0+
+7skASVvXcaTBdHD1F8+HRW0hWOEMlvIoAi7MKTmvnhxxGLFrxNDa9ZXCh1D16u7u
+NSScBzatUQBXmYlOsGvtRS979f09awIM3qVe8UuImn8+L8XRzJX8ICn6Min6uiVN
+c6FTP2oSOcVgwwIVAJhL+niCaweCjdHz0QAT8dzR2HJZAoGAJYbmGfwMz7Wu/mxO
+QkGrJklc3PLjP3vizewAZRF8EEZOkH2QXF/E23jzRPGRZ4OFH7f0MwDlMQCxE+5C
+gHpOCXsrac3NF2AmMrhiQE5uBfWWNaQCeckJlJsLw2HZWmSeJXRszv0eexL54J/x
+uLao46ItLMd46u3M7w8HRh55MtADgYQAAoGAXenEaP4SIoG3ukTjtqT8TOKddzyb
+dd8epOpGDnPemC6hmsjkbfNDrKEdbsb9AKhb0pp2HKWxNPzPACJ65LMgrtTPY/6f
+NLxB1/o+J1dJR7nehKF9WjwDjAJJ6f9Wc4OwJP7B7DlwWzhaMMNOzmASAUU/AoeL
+WTuMfjA3O+6hm6ijOjA4MA4GA1UdDwEB/wQEAwIHgDARBgNVHQ4ECgQIizPsQXmT
+yPowEwYDVR0jBAwwCoAIihxWMFoyEn0wCQYHKoZIzjgEAwMwADAtAhUAiT4zE8AB
+6veOzVcWxkyYFwHcnFsCFDorkHKzPCnWkmpuDY39GvfKEYBA
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.der b/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.der
new file mode 100644
index 00000000..a72fc7f0
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.pem
new file mode 100644
index 00000000..7efe8e08
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/merlin.pem
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+-----END CERTIFICATE-----
+
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/morigu.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/morigu.pem
new file mode 100644
index 00000000..c1fd6eb5
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/morigu.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDUDCCAxCgAwIBAgIGAOz5IVHTMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAyMjM1OTUyWhcNMTIwNDAyMjI1OTQ2WjBoMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3Jp
+Z3UwggG2MIIBKwYHKoZIzjgEATCCAR4CgYEAhIqwSieM0aAez+6H71gqCfBnwG3d
+Pu7JAElb13GkwXRw9RfPh0VtIVjhDJbyKAIuzCk5r54ccRixa8TQ2vWVwodQ9eru
+7jUknAc2rVEAV5mJTrBr7UUve/X9PWsCDN6lXvFLiJp/Pi/F0cyV/CAp+jIp+rol
+TXOhUz9qEjnFYMMCFQCYS/p4gmsHgo3R89EAE/Hc0dhyWQKBgCWG5hn8DM+1rv5s
+TkJBqyZJXNzy4z974s3sAGURfBBGTpB9kFxfxNt480TxkWeDhR+39DMA5TEAsRPu
+QoB6Tgl7K2nNzRdgJjK4YkBObgX1ljWkAnnJCZSbC8Nh2VpkniV0bM79HnsS+eCf
+8bi2qOOiLSzHeOrtzO8PB0YeeTLQA4GEAAKBgH1NBJ9Az5TwY4tDE0dPYVHHABt+
+yLspnT3k9G6YWUMFhZ/+3RuqEPjnKrPfUoXTTJGIACgPU3/PkqwrPVD0JMdpOcnZ
+LHiJ/P7QRQeMwDRoBrs7genB1bDd4pSJrEUcjrkA5uRrIj2Z5fL+UuLiLGPO2rM7
+BNQRIq3QFPdX++NuozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIK7Ljjh
++EsfMBMGA1UdIwQMMAqACIocVjBaMhJ9MAkGByqGSM44BAMDLwAwLAIUEJJCOHw8
+ppxoRyz3s+Vmb4NKIfMCFDgJoZn9zh/3WoYNBURODwLvyBOy
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.der b/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.der
new file mode 100644
index 00000000..f4b62ae6
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.der
Binary files differ
diff --git a/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.pem b/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.pem
new file mode 100644
index 00000000..b681a5c2
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/certs/nemain.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDUDCCAxCgAwIBAgIGAOz5IZDHMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDA4WhcNMTIwNDAyMjI1OTQ2WjBoMQswCQYD
+VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZOZW1h
+aW4wggG2MIIBKwYHKoZIzjgEATCCAR4CgYEAhIqwSieM0aAez+6H71gqCfBnwG3d
+Pu7JAElb13GkwXRw9RfPh0VtIVjhDJbyKAIuzCk5r54ccRixa8TQ2vWVwodQ9eru
+7jUknAc2rVEAV5mJTrBr7UUve/X9PWsCDN6lXvFLiJp/Pi/F0cyV/CAp+jIp+rol
+TXOhUz9qEjnFYMMCFQCYS/p4gmsHgo3R89EAE/Hc0dhyWQKBgCWG5hn8DM+1rv5s
+TkJBqyZJXNzy4z974s3sAGURfBBGTpB9kFxfxNt480TxkWeDhR+39DMA5TEAsRPu
+QoB6Tgl7K2nNzRdgJjK4YkBObgX1ljWkAnnJCZSbC8Nh2VpkniV0bM79HnsS+eCf
+8bi2qOOiLSzHeOrtzO8PB0YeeTLQA4GEAAKBgHzbc/0aTzXwKKeT85kjCq2HD4WY
+nZC9DOck02gNhNbEgN+wGeUPDSQM/vhmxVeoK3ptVA/sU8arBW8V+AdrU/9hJr0v
+nEiqgt9WQLHUhnMJiXTMLcS7XHeIVcwh/iRjD61HUp1cby9UMHZRsW6Ys8rUi0Zn
+/1KrtpTwZJuNwsYIozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIX9dMSn
+0pyIMBMGA1UdIwQMMAqACIocVjBaMhJ9MAkGByqGSM44BAMDLwAwLAIUFRYkL6qD
+NZWtKU03+WYBiGEGSoECFEtRGI19WHg+sT9fBfGKfo8NnJX4
+-----END CERTIFICATE-----
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml
new file mode 100644
index 00000000..f5ff1f50
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloped-dsa.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Envelope xmlns="http://example.org/envelope">
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>fdy6S2NLpnT4fMdokUHSHsmpcvo=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ Z4pBb+o+XOKWME7CpLyXuNqyIYdXOcGvthfUf+ZDLL5immPx+3tK8Q==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ 3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+ Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+ 89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+ </P>
+ <Q>
+ hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+ </Q>
+ <G>
+ nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+ Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+ 8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+ </G>
+ <Y>
+ cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+ Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+ +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ </Signature>
+</Envelope>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml
new file mode 100644
index 00000000..4e924b0e
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-b64-dsa.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="#object">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>N6pjx3OY2VRHMmLhoAV8HmMu2nc=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ KgAeq8e0yUNfFz+mFlZ3QgyQNMciV+Z3BoDQDvQNker7pazEnJmOIA==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ 3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+ Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+ 89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+ </P>
+ <Q>
+ hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+ </Q>
+ <G>
+ nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+ Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+ 8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+ </G>
+ <Y>
+ cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+ Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+ +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ <Object Id="object">c29tZSB0ZXh0</Object>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml
new file mode 100644
index 00000000..488ac261
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-dsa.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ PfD92lkxKgc2OKvF4p0ba6cJj6d1eqIDx5Q1hvVYTviotje23Snunw==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ 3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+ Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+ 89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+ </P>
+ <Q>
+ hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+ </Q>
+ <G>
+ nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+ Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+ 8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+ </G>
+ <Y>
+ cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+ Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+ +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml
new file mode 100644
index 00000000..4904d79f
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1-40.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
+ <HMACOutputLength>40</HMACOutputLength>
+ </SignatureMethod>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ HHiqvCU=
+ </SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml
new file mode 100644
index 00000000..c0c8343a
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-hmac-sha1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ JElPttIT4Am7Q+MNoMyv+WDfAZw=
+ </SignatureValue>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml
new file mode 100644
index 00000000..1580d838
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-enveloping-rsa.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ ov3HOoPN0w71N3DdGNhN+dSzQm6NJFUB5qGKRp9Q986nVzMb8wCIVxCQu+x3vMtq
+ p4/R3KEcPtEJSaoR+thGq++GPIh2mZXyWJs3xHy9P4xmoTVwli7/l7s8ebDSmnbZ
+ 7xZU4Iy1BSMZSxGKnRG+Z/0GJIfTz8jhH6wCe3l03L4=
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <RSAKeyValue>
+ <Modulus>
+ q07hpxA5DGFfvJFZueFl/LI85XxQxrvqgVugL25V090A9MrlLBg5PmAsxFTe+G6a
+ xvWJQwYOVHj/nuiCnNLa9a7uAtPFiTtW+v5H3wlLaY3ws4atRBNOQlYkIBp38sTf
+ QBkk4i8PEU1GQ2M0CLIJq4/2Akfv1wxzSQ9+8oWkArc=
+ </Modulus>
+ <Exponent>
+ AQAB
+ </Exponent>
+ </RSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml
new file mode 100644
index 00000000..1fb56630
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-external-b64-dsa.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ IhOlAjMFaZtkEju5R5bi528h1HpDa4A21sudZynhJRRLjZuQIHZ3eQ==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ 3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+ Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+ 89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+ </P>
+ <Q>
+ hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+ </Q>
+ <G>
+ nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+ Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+ 8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+ </G>
+ <Y>
+ cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+ Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+ +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml
new file mode 100644
index 00000000..34d3e6a8
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-external-dsa.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ LaL1/t/XodYvDJDgSEbq47GX8ltnlx3FFURdi7o+UFVi+zLf0WyWaQ==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ 3eOeAvqnEyFpW+uTSgrdj7YLjaTkpyHecKFIoLu8QZNkGTQI1ciITBH0lqfIkdCH
+ Si8fiUC3DTq3J9FsJef4YVtDF7JpUvHTOQqtq7Zgx6KC8Wxkz6rQCxOr7F0ApOYi
+ 89zLRoe4MkDGe6ux0+WtyOTQoVIGNTDDUFXrUQNbLrE=
+ </P>
+ <Q>
+ hDLcFK0GO/Hz1arxOOvsgM/VLyU=
+ </Q>
+ <G>
+ nnx7hbdWozGbtnFgnbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43z
+ Kt7dlEaQL7b5+JTZt3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM
+ 8d2rhd2Ui0xHbk0D451nhLxVWulviOSPhzKKvXrbySA=
+ </G>
+ <Y>
+ cfYpihpAQeepbNFS4MAbQRhdXpDi5wLrwxE5hIvoYqo1L8BQVu8fY1TFAPtoae1i
+ Bg/GIJyP3iLfyuBJaDvJJLP30wBH9i/s5J3656PevpOVdTfi777Fi9Gj6y/ib2Vv
+ +OZfJkkp4L50+p5TUhPmQLJtREsgtl+tnIOyJT++G9U=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-keyname.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-keyname.xml
new file mode 100644
index 00000000..a7c60a3d
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-keyname.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ JkJ3GplEU0iDbqSv7ZOXhvv3zeM1KmP+CLphhoc+NPYqpGYQiW6O6w==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyName>Lugh</KeyName>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml
new file mode 100644
index 00000000..30620184
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ SNB5FI193RFXoG2j8Z9bXWgW7BMPICqNob4Hjh08oou4tkhGxz4+pg==
+ </SignatureValue>
+ <KeyInfo>
+ <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#rawX509Certificate" URI="tests/merlin-xmldsig-twenty-three/certs/balor.der" />
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml
new file mode 100644
index 00000000..fe01797e
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt-crl.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ WF6EaX66f8CdGE6NafmzdLpb/1OVYX4kBNsqgGIqHR5JZAu4HpbVQQ==
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>
+ MIIDTjCCAw6gAwIBAgIGAOz5Id5/MAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+ c2llbnQgQ0EwHhcNMDIwNDAzMDAwMDI4WhcNMTIwNDAyMjI1OTQ2WjBmMQswCQYD
+ VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+ aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ0wCwYDVQQDEwRCcmVz
+ MIIBtjCCASsGByqGSM44BAEwggEeAoGBAISKsEonjNGgHs/uh+9YKgnwZ8Bt3T7u
+ yQBJW9dxpMF0cPUXz4dFbSFY4QyW8igCLswpOa+eHHEYsWvE0Nr1lcKHUPXq7u41
+ JJwHNq1RAFeZiU6wa+1FL3v1/T1rAgzepV7xS4iafz4vxdHMlfwgKfoyKfq6JU1z
+ oVM/ahI5xWDDAhUAmEv6eIJrB4KN0fPRABPx3NHYclkCgYAlhuYZ/AzPta7+bE5C
+ QasmSVzc8uM/e+LN7ABlEXwQRk6QfZBcX8TbePNE8ZFng4Uft/QzAOUxALET7kKA
+ ek4Jeytpzc0XYCYyuGJATm4F9ZY1pAJ5yQmUmwvDYdlaZJ4ldGzO/R57Evngn/G4
+ tqjjoi0sx3jq7czvDwdGHnky0AOBhAACgYBgvDFxw1U6Ou2G6P/+347Jfk2wPB1/
+ atr4p3JUVLuT0ExZG6np+rKiXmcBbYKbAhMY37zVkroR9bwo+NgaJGubQ4ex5Y1X
+ N2Q5gIHNhNfKr8G4LPVqWGxf/lFPDYxX3ezqBJPpJCJTREX7s6Hp/VTV2SpQlySv
+ +GRcFKJFPlhD9aM6MDgwDgYDVR0PAQH/BAQDAgeAMBEGA1UdDgQKBAiC+5gx0MHL
+ hTATBgNVHSMEDDAKgAiKHFYwWjISfTAJBgcqhkjOOAQDAy8AMCwCFDTcM5i61uqq
+ /aveERhOJ6NG/LubAhREVDtAeNbTEywXr4O7KvEEvFLUjg==
+ </X509Certificate>
+ <X509CRL>
+ MIIBJDCB5AIBATAJBgcqhkjOOAQDMHYxCzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZE
+ dWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9sb2dpZXMgTHRkLjERMA8G
+ A1UECxMIWC9TZWN1cmUxHTAbBgNVBAMTFEFub3RoZXIgVHJhbnNpZW50IENBFw0w
+ MjA0MDQwMjE2NThaFw0xMTA0MDIwMjE2NThaMBkwFwIGAOz5Id5/Fw0wMjA0MDQw
+ MjE2NThaoCMwITATBgNVHSMEDDAKgAiKHFYwWjISfTAKBgNVHRQEAwIBADAJBgcq
+ hkjOOAQDAzAAMC0CFCEIm38fvGzSJHms284hUs9dNB8nAhUAjEtZr0TGgc6sVRVk
+ krEgltdo7Jw=
+ </X509CRL>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml
new file mode 100644
index 00000000..2048fd27
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-crt.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ GCQVmBq+1H7e9IjvKfe+egLM1Jlp3L1JCGkl9SlJ0eaDh2MKYUUnHA==
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509Certificate>
+ MIIDUDCCAxCgAwIBAgIGAOz5IVHTMAkGByqGSM44BAMwdjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEdMBsGA1UEAxMUQW5vdGhlciBUcmFu
+ c2llbnQgQ0EwHhcNMDIwNDAyMjM1OTUyWhcNMTIwNDAyMjI1OTQ2WjBoMQswCQYD
+ VQQGEwJJRTEPMA0GA1UECBMGRHVibGluMSQwIgYDVQQKExtCYWx0aW1vcmUgVGVj
+ aG5vbG9naWVzIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMQ8wDQYDVQQDEwZNb3Jp
+ Z3UwggG2MIIBKwYHKoZIzjgEATCCAR4CgYEAhIqwSieM0aAez+6H71gqCfBnwG3d
+ Pu7JAElb13GkwXRw9RfPh0VtIVjhDJbyKAIuzCk5r54ccRixa8TQ2vWVwodQ9eru
+ 7jUknAc2rVEAV5mJTrBr7UUve/X9PWsCDN6lXvFLiJp/Pi/F0cyV/CAp+jIp+rol
+ TXOhUz9qEjnFYMMCFQCYS/p4gmsHgo3R89EAE/Hc0dhyWQKBgCWG5hn8DM+1rv5s
+ TkJBqyZJXNzy4z974s3sAGURfBBGTpB9kFxfxNt480TxkWeDhR+39DMA5TEAsRPu
+ QoB6Tgl7K2nNzRdgJjK4YkBObgX1ljWkAnnJCZSbC8Nh2VpkniV0bM79HnsS+eCf
+ 8bi2qOOiLSzHeOrtzO8PB0YeeTLQA4GEAAKBgH1NBJ9Az5TwY4tDE0dPYVHHABt+
+ yLspnT3k9G6YWUMFhZ/+3RuqEPjnKrPfUoXTTJGIACgPU3/PkqwrPVD0JMdpOcnZ
+ LHiJ/P7QRQeMwDRoBrs7genB1bDd4pSJrEUcjrkA5uRrIj2Z5fL+UuLiLGPO2rM7
+ BNQRIq3QFPdX++NuozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIK7Ljjh
+ +EsfMBMGA1UdIwQMMAqACIocVjBaMhJ9MAkGByqGSM44BAMDLwAwLAIUEJJCOHw8
+ ppxoRyz3s+Vmb4NKIfMCFDgJoZn9zh/3WoYNBURODwLvyBOy
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml
new file mode 100644
index 00000000..b7a01f85
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-is.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ bmKMy/w1DO9dHA6E7Dt0B8IFkYAj1/UD3TqcdqIcfkMT7evE8+NBgg==
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509IssuerSerial>
+ <X509IssuerName>
+ CN=Another Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+ </X509IssuerName>
+ <X509SerialNumber>1017792003066</X509SerialNumber>
+ </X509IssuerSerial>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml
new file mode 100644
index 00000000..c71bfce5
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-ski.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ F9nEU1Us48iKTml8n7E4wt7HtFJ5gaLIgox0J9WbujGndW0oQJbeGg==
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509SKI>
+ hf10xKfSnIg=
+ </X509SKI>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml
new file mode 100644
index 00000000..d5b08088
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature-x509-sn.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ MUOjiqG0dbjvR6+qYYPL85nKSt2FeZGQBQkYudv48KyJhJLG1Bp+bA==
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data>
+ <X509SubjectName>
+ CN=Badb,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+ </X509SubjectName>
+ </X509Data>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmldsig-twenty-three/signature.xml b/docs/tests/merlin-xmldsig-twenty-three/signature.xml
new file mode 100644
index 00000000..504fbe11
--- /dev/null
+++ b/docs/tests/merlin-xmldsig-twenty-three/signature.xml
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Envelope [
+ <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
+ <!ENTITY c14n 'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'>
+ <!ENTITY xpath 'http://www.w3.org/TR/1999/REC-xpath-19991116'>
+ <!ENTITY xslt 'http://www.w3.org/TR/1999/REC-xslt-19991116'>
+ <!ATTLIST Notaries Id ID #IMPLIED>
+]>
+<!-- Preamble -->
+<Envelope xmlns:foo="http://example.org/foo" xmlns="http://example.org/usps">
+ <DearSir>foo</DearSir>
+ <Body>bar</Body>
+ <YoursSincerely>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="signature">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ <Reference URI="http://www.w3.org/Signature/2002/04/xml-stylesheet.b64">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-1">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <XPath>
+ self::text()
+ </XPath>
+ </Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ ancestor-or-self::dsig:SignedInfo
+ and
+ count(ancestor-or-self::dsig:Reference |
+ here()/ancestor::dsig:Reference[1]) &gt;
+ count(ancestor-or-self::dsig:Reference)
+ or
+ count(ancestor-or-self::node() |
+ id('notaries')) =
+ count(ancestor-or-self::node())
+ </XPath>
+ </Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>tQiE3GUKiBenPyp3J0Ei6rJMFv4=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-2">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>zyjp8GJOX69990Kkqw8ioPXGExk=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#manifest-1">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>qg4HFwsN+/WX32uH85WlJU9l45k=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties" URI="#signature-properties-1">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>ETlEI3y7hvvAtMe9wQSz7LhbHEE=</DigestValue>
+ </Reference>
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+ </Reference>
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+ </Reference>
+ <Reference URI="#xpointer(/)">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>J/O0HhdaPXxx49fgGWMESL09GpA=</DigestValue>
+ </Reference>
+ <Reference URI="#xpointer(/)">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>MkL9CX8yeABBth1RChyPx58Ls8w=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#object-3">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>yamSIokKmjA3hB/s3Fu07wDO3vM=</DigestValue>
+ </Reference>
+ <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#xpointer(id('object-3'))">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>419CYgyTWOTGYGBhzieWklNf7Bk=</DigestValue>
+ </Reference>
+ <Reference URI="#reference-2">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>VzK45P9Ksjqq5oXlKQpkGgB2CNY=</DigestValue>
+ </Reference>
+ <Reference Id="reference-1" URI="#manifest-reference-1">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>7/9fR+NIDz9owc1Lfsxu1JBr8uo=</DigestValue>
+ </Reference>
+ <Reference Id="reference-2" URI="#reference-1">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ WvZUJAJ/3QNqzQvwne2vvy7U5Pck8ZZ5UTa6pIwR7GE+PoGi6A1kyw==
+ </SignatureValue>
+ <KeyInfo>
+ <RetrievalMethod Type="http://www.w3.org/2000/09/xmldsig#X509Data" URI="#object-4">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ ancestor-or-self::dsig:X509Data
+ </XPath>
+ </Transform>
+ </Transforms>
+ </RetrievalMethod>
+ </KeyInfo>
+ <Object Id="object-1" MimeType="text/plain">I am the text.</Object>
+ <Object Encoding="http://www.w3.org/2000/09/xmldsig#base64" Id="object-2" MimeType="text/plain">SSBhbSB0aGUgdGV4dC4=</Object>
+ <Object Id="object-3">
+ <NonCommentandus xmlns=""><!-- Commentandum --></NonCommentandus>
+ </Object>
+ <Object>
+ <Manifest Id="manifest-1">
+ <Reference Id="manifest-reference-1" URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ <Reference URI="#reference-1">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>qURlo3LSq4TWQtygBZJ0iXQ9E14=</DigestValue>
+ </Reference>
+ <Reference URI="#notaries">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict" exclude-result-prefixes="foo" version="1.0">
+ <xsl:output encoding="UTF-8" indent="no" method="xml" />
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title>Notaries</title>
+ </head>
+ <body>
+ <table>
+ <xsl:for-each select="Notaries/Notary">
+ <tr>
+ <th>
+ <xsl:value-of select="@name" />
+ </th>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </Transform>
+ <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>c7wq5XKos6RqNVJyFy7/fl6+sAs=</DigestValue>
+ </Reference>
+ </Manifest>
+ </Object>
+ <Object>
+ <SignatureProperties Id="signature-properties-1">
+ <SignatureProperty Target="#signature">
+ <SignerAddress xmlns="urn:demo"><IP>192.168.21.138</IP></SignerAddress>
+ </SignatureProperty>
+ </SignatureProperties>
+ </Object>
+ <Object Id="object-4">
+ <X509Data>
+ <X509SubjectName>
+ CN=Merlin Hughes,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+ </X509SubjectName>
+ <X509IssuerSerial>
+ <X509IssuerName>
+ CN=Transient CA,OU=X/Secure,O=Baltimore Technologies Ltd.,ST=Dublin,C=IE
+ </X509IssuerName>
+ <X509SerialNumber>1017788370348</X509SerialNumber>
+ </X509IssuerSerial>
+ <X509Certificate>
+ MIIDUDCCAxCgAwIBAgIGAOz46g2sMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDQwMjIyNTkzMFoXDTEyMDQwMjIxNTkyNVowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+ czCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDd454C+qcTIWlb65NKCt2PtguNpOSn
+ Id5woUigu7xBk2QZNAjVyIhMEfSWp8iR0IdKLx+JQLcNOrcn0Wwl5/hhW0MXsmlS
+ 8dM5Cq2rtmDHooLxbGTPqtALE6vsXQCk5iLz3MtGh7gyQMZ7q7HT5a3I5NChUgY1
+ MMNQVetRA1susQIVAIQy3BStBjvx89Wq8Tjr7IDP1S8lAoGBAJ58e4W3VqMxm7Zx
+ YJ2xZ6KX0Ze10WnKZDyURn+T9iFIFbKRFElKDeotXwwXwYON8yre3ZRGkC+2+fiU
+ 2bdzIWTT6LMbIMVbk+07P4OZOxJ6XWL9GuYcOQcNvX42xh34DPHdq4XdlItMR25N
+ A+OdZ4S8VVrpb4jkj4cyir1628kgA4GEAAKBgHH2KYoaQEHnqWzRUuDAG0EYXV6Q
+ 4ucC68MROYSL6GKqNS/AUFbvH2NUxQD7aGntYgYPxiCcj94i38rgSWg7ySSz99MA
+ R/Yv7OSd+uej3r6TlXU34u++xYvRo+sv4m9lb/jmXyZJKeC+dPqeU1IT5kCybURL
+ ILZfrZyDsiU/vhvVozowODAOBgNVHQ8BAf8EBAMCB4AwEQYDVR0OBAoECIatY7SE
+ lXEOMBMGA1UdIwQMMAqACIOGPkB2MuKTMAkGByqGSM44BAMDLwAwLAIUSvT02iQj
+ Q5da4Wpe0Bvs7GuCcVsCFCEcQpbjUfnxXFXNWiFyQ49ZrWqn
+ </X509Certificate>
+ <X509Certificate>
+ MIIDSzCCAwugAwIBAgIGAOz46fwJMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDQwMjIyNTkyNVoXDTEyMDQwMjIxNTkyNVowbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MIIBtzCCASwGByqGSM44BAEwggEfAoGBAN3jngL6pxMhaVvrk0oK3Y+2C42k5Kch
+ 3nChSKC7vEGTZBk0CNXIiEwR9JanyJHQh0ovH4lAtw06tyfRbCXn+GFbQxeyaVLx
+ 0zkKrau2YMeigvFsZM+q0AsTq+xdAKTmIvPcy0aHuDJAxnursdPlrcjk0KFSBjUw
+ w1BV61EDWy6xAhUAhDLcFK0GO/Hz1arxOOvsgM/VLyUCgYEAnnx7hbdWozGbtnFg
+ nbFnopfRl7XRacpkPJRGf5P2IUgVspEUSUoN6i1fDBfBg43zKt7dlEaQL7b5+JTZ
+ t3MhZNPosxsgxVuT7Ts/g5k7EnpdYv0a5hw5Bw29fjbGHfgM8d2rhd2Ui0xHbk0D
+ 451nhLxVWulviOSPhzKKvXrbySADgYQAAoGAfag+HCABIJadDD9Aarhgc2QR3Lp7
+ PpMOh0lAwLiIsvkO4UlbeOS0IJC8bcqLjM1fVw6FGSaxmq+4y1ag2m9k6IdE0Qh5
+ NxB/xFkmdwqXFRIJVp44OeUygB47YK76NmUIYG3DdfiPPU3bqzjvtOtETiCHvo25
+ 4D6UjwPpYErXRUajNjA0MA4GA1UdDwEB/wQEAwICBDAPBgNVHRMECDAGAQH/AgEA
+ MBEGA1UdDgQKBAiDhj5AdjLikzAJBgcqhkjOOAQDAy8AMCwCFELu0nuweqW7Wf0s
+ gk/CAGGL0BGKAhRNdgQGr5iyZKoH4oqPm0VJ9TjXLg==
+ </X509Certificate>
+ </X509Data>
+ </Object>
+ </Signature>
+ </YoursSincerely>
+ <PostScript>bar</PostScript>
+ <Notaries xmlns="" Id="notaries">
+ <Notary name="Great, A. T." />
+ <Notary name="Hun, A. T." />
+ </Notaries>
+ <!-- Commentary -->
+</Envelope>
+<!-- Postamble -->
diff --git a/docs/tests/merlin-xmlenc-five/Readme.txt b/docs/tests/merlin-xmlenc-five/Readme.txt
new file mode 100644
index 00000000..3a663b7c
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/Readme.txt
@@ -0,0 +1,117 @@
+Example Signatures[1] using Encryption[2] key information and
+Additional Security URIs[3], Encrypted Data[2] and Decryption
+Transform[4]
+
+[1] http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/
+[2] http://www.w3.org/Encryption/2001/Drafts/xmlenc-core/
+[3] http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt
+[4] http://www.w3.org/TR/xmlenc-decrypt
+
+***
+Some of these signature are WITHOUT cryptographic merit;
+for example, key transport of an HMAC key is meaningless.
+These are provided solely for testing purposes.
+***
+
+Private keys necessary for performing the verification
+and decryption are provided in the PKCS#12 file ids.p12,
+encrypted under the pass phrase "Our Little Secret". I
+may have done some of the ASN.1 encoding in this P12
+incorrectly; I hope not. Private keys are also available
+in PKCS#8 encoding; rsa.p8, dh1.p8.
+
+RSA/OAEP is presently poorly defined; I assume MGF1/SHA-1.
+
+Secret keys are identified by key name as follows:
+
+ Key Name | Algorithm | Key Value
+----------+-----------+-----------
+ bob | 3des | "abcdefghijklmnopqrstuvwx".getBytes ("ASCII")
+ job | aes-128 | "abcdefghijklmnop".getBytes ("ASCII")
+ jeb | aes-192 | "abcdefghijklmnopqrstuvwx".getBytes ("ASCII")
+ jed | aes-256 | "abcdefghijklmnopqrstuvwxyz012345".getBytes ("ASCII")
+
+. encrypt-content-aes128-cbc-kw-aes192.xml
+. encrypt-content-aes192-cbc-dh-sha512.xml
+. encrypt-content-tripledes-cbc.xml
+. encrypt-data-aes128-cbc.xml
+. encrypt-data-aes192-cbc-kw-aes256.xml
+. encrypt-data-aes256-cbc-kw-tripledes.xml
+. encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
+. encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
+. encrypt-element-aes128-cbc-rsa-1_5.xml
+. encrypt-element-aes192-cbc-ref.xml
+. encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
+. encrypt-element-tripledes-cbc-kw-aes128.xml
+ Encrypted content, element and data. RSA private key has
+ friendly name "RSA" in the P12, and is rsa.p8.
+ DH private key has ID "DH1", and is dh1.p8.
+
+. encrypt-content-aes256-cbc-prop.xml
+ Contains a useless EncryptionProperty.
+
+. encrypt-element-aes256-cbc-carried-kw-aes256.xml
+ External EncryptedKey contains a CarriedKeyName which
+ is referenced by a KeyName in the EncryptedData; the
+ key for Recipient "someone else" is not for you; the
+ key for Recipient "you" is.
+
+. encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
+ External EncryptedKey is identified by a RetrievalMethod
+ in the EncryptedData.
+
+. decryption-transform.xml
+ Decryption transform.
+
+. decryption-transform-except.xml
+ Decryption transform with Except.
+
+All signatures are performed with nontruncated HMAC
+algorithms.
+
+For debugging purposes, where chosen, the MAC key is
+"abcdefghijklmnopqrstuvwxyz012345".getBytes ("ASCII"). Where
+agreed, it has length equal to the HMAC output length; e.g., 256
+bits for HMAC/SHA-256.
+
+. encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
+ RIPEMD-160 message digest; HMAC/RIPEMD-160 key is wrapped
+ using triple DES. The decryption key is from the above table,
+ identified by the key name "bob".
+
+. encsig-sha256-hmac-sha256-kw-aes128.xml
+ SHA-256 message digest; HMAC/SHA-256 key is wrapped using
+ AES-128. The decryption key is from the above table, identified
+ by the key name "job".
+
+. encsig-sha384-hmac-sha384-kw-aes192.xml
+ SHA-384 message digest; HMAC/SHA-384 key is wrapped using
+ AES-192. The decryption key is from the above table, identified
+ by the key name "jeb".
+
+. encsig-sha512-hmac-sha512-kw-aes256.xml
+ SHA-512 message digest; HMAC/SHA-512 key is wrapped using
+ AES-256. The decryption key is from the above table, identified
+ by the key name "jed".
+
+. encsig-hmac-sha256-rsa-1_5.xml
+ HMAC/SHA-256 keys is transported using RSA/OAEP. Your private
+ key has friendly name "RSA" in the P12.
+
+. encsig-hmac-sha256-rsa-oaep-mgf1p.xml
+ HMAC/SHA-256 keys is transported using RSA/PKCS#1. Your private
+ key has friendly name "RSA" in the P12.
+
+. encsig-hmac-sha256-dh.xml
+ HMAC/SHA-256 key is agreed using Diffie Hellman. Your private
+ key has friendly name "DH1" in the P12.
+
+. encsig-hmac-sha256-kw-tripledes-dh.xml
+ HMAC/SHA-256 key is wrapped using triple DES. The decryption
+ key is agreed using Diffie Hellman. Your private key has
+ friendly name "DH1" in the P12.
+
+Merlin Hughes <merlin@baltimore.ie>
+Baltimore Technologies, Ltd.
+
+Monday, March 4, 2002
diff --git a/docs/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml b/docs/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml
new file mode 100644
index 00000000..74eec57f
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/bad-encrypt-content-aes128-cbc-kw-aes192.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jeb</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ JbjZH7Mq564oMybpvCHWYM/5ER3eFsAV
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ YDYTxR+smxZDSVoXXEp3n6HzTgWqV7ZlG6I1lmEv7zLGZBF/o7eqe5QGT6L3DPNW
+ geflA8vVJHxwliixWcvHCnNKQkx+Sw8YbIknCQyr4mqtXEmHhsie5XYTEyqgKLVP
+ YdNXf56wLUTMEmBqq7cto9OrYcBWkrDcQQvHmDkHuG+Nom4m+623GsB0FNts6VyN
+ sdGMwo4K0bEFReLL04l6It+cgLJ2q+LKdBoMQL59IAQmrwi0bkiqee2cLlDuGyQ1
+ KD9IQ1qtlJpvQujN4xNVWT00UjtWxmpSMID/Kue/AnXn7Cf8zw1ZZQitgh8uWOX2
+ uMy99F2YlxqIK1r+MeXHuZDNf75S8dFaKIKtHMf7ioA=
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/decryption-transform-except.xml b/docs/tests/merlin-xmlenc-five/decryption-transform-except.xml
new file mode 100644
index 00000000..bdd22516
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/decryption-transform-except.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ cX6lnfgmvWuxyiQgNhzAq1lYggW2M5GziFgNBQju3xcnDqlzf5LSjeyBnbL0Q7ws
+ 8XhySFCrdwIi5mVxyfdFkVrTlzQQ0viaqTDgi9PQRgZMOImGGWij3wbmf9XseHHt
+ 6q8V7LPjMFQAnsLDQgKf4gzzOnhtKf15GfTEpGvUnNn2dLDxw+hDcD1N54/bjSQs
+ uTiL7PgGQ5g4u4eaXRRLWeAGsIf5QgdQG3GLiOZIX1LJ5bREKgXeKrtJJI97xUX3
+ 3vaF+tKRcSFBFIMjFrw271bFj4vvvQZfSS6xX+BKXHOUu8C4NH9Le8pA9o4NgCB8
+ tWA8W3iI5/BGEZve0Me9byvPHYjRXlbG+YqysVTmzfw=
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-1">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <CipherData>
+ <CipherValue>
+ x3aR5pJ5pepFFH5ENv61pZG4pVwNKaM+H9oyY4qG6d8l/C0J1iGv6c8dyLp0YQ2k
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ <Transform Algorithm="http://www.w3.org/2001/04/decrypt#">
+ <Except xmlns="http://www.w3.org/2001/04/decrypt#" URI="#encrypt-data-1" />
+ </Transform>
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <DigestValue>5Oe9qba6preOZG1NZAYK2/6pu9RCon9vRJ9hVLDpeng=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ LuHrz9+WG7/c4Q81tFboNZg2cktWbZcRfp08XrmgKy1GDm9xSfTYCA==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ imup6lmki4rAmUstKb/xdBRMWNtQ+pDN97ZnLA9X3lKbkEHtYFyjQ3uActgVSJ75
+ iVRuKxz4Cb5RzVm25EaKmKq8rif1MtBIi6jjDJxmIdNaEKG9zVTf9giJx1N9I0t3
+ oh1fAVZDSrzKzJGQ2WvDfIfFHdJMtB3C0VKGmLZR7Xk=
+ </P>
+ <Q>
+ xDve3j7sEnh4rIzM5gK+5/gxxFU=
+ </Q>
+ <G>
+ NLugAf6IZJxo3BCOi5yrGEVwtlEzXcnndXhd0Tz38CnQKc4SEupm4PyP5TmLvK64
+ TDfOD7sno/W5oI1KZdimfW2c4r/6waNzZSvicMOWhLYY621Nn6njBc8VNwoxWpzC
+ XhKm70b8+D4YZMn/eU5DN8dvhTv/bNK21FfJqjp033U=
+ </G>
+ <Y>
+ W7dOmH/vWqocVCiqaxj6soxVXfR8XpMdY2Zv4Amjr3n81geyOLb6IZ+l7MUbdp85
+ 29DQzuoVTthVpB9X4JKCprZIzifOTM1PFflTBzjx7egJwJWAIVdWyiIPjke6Va+w
+ uV2n4Rl/cgCvrXK5cTov5C/Bpaf6o+qrrDGFBLLZTF4=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ </Signature>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/decryption-transform.xml b/docs/tests/merlin-xmlenc-five/decryption-transform.xml
new file mode 100644
index 00000000..50d68b34
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/decryption-transform.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ SE3HkQevYxzuN9LoMH3QIYHK0X7DBlobhiTbRucgKcTKt9DsUJIcd6JZV6lrw/4x
+ YICyq6YM73IWpibspxgz/0chhvWem9sYZvWTuTtZgHzeY0Uri6bpXqBEn1YT0K6B
+ chwfv1myfp91EmdPHU+shH6ZEyYkHJUMss58iIawIuVsIfpCO7xDKgfs/glnN3os
+ epY0KvAMZSnwUAf42fQ3TlahLTR+B52AmdodwaCwQlwQwrC7RH0FtNiiLQA9SA2t
+ //StKWcyHjswUCejfKLdjv6bK+WmBxmnNWtmI9DYkjJ6V5pYU1MVw+JG410O+gaa
+ fnNWxlWa+BGwcTaz+KNrP8bIqli8IoJJgxXIUqfb734=
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1" />
+ <Reference URI="">
+ <Transforms>
+ <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
+ <Transform Algorithm="http://www.w3.org/2001/04/decrypt#" />
+ </Transforms>
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <DigestValue>wSvPYqTcpLfX2mKXibtsmm7FDu8N+/BObM0+bGaeXhk=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ O0VYUdslJ8t2EURD0T/v2nNrFQMo42vzvfAhooZrDbkuLbCj6/Hxmw==
+ </SignatureValue>
+ <KeyInfo>
+ <KeyValue>
+ <DSAKeyValue>
+ <P>
+ imup6lmki4rAmUstKb/xdBRMWNtQ+pDN97ZnLA9X3lKbkEHtYFyjQ3uActgVSJ75
+ iVRuKxz4Cb5RzVm25EaKmKq8rif1MtBIi6jjDJxmIdNaEKG9zVTf9giJx1N9I0t3
+ oh1fAVZDSrzKzJGQ2WvDfIfFHdJMtB3C0VKGmLZR7Xk=
+ </P>
+ <Q>
+ xDve3j7sEnh4rIzM5gK+5/gxxFU=
+ </Q>
+ <G>
+ NLugAf6IZJxo3BCOi5yrGEVwtlEzXcnndXhd0Tz38CnQKc4SEupm4PyP5TmLvK64
+ TDfOD7sno/W5oI1KZdimfW2c4r/6waNzZSvicMOWhLYY621Nn6njBc8VNwoxWpzC
+ XhKm70b8+D4YZMn/eU5DN8dvhTv/bNK21FfJqjp033U=
+ </G>
+ <Y>
+ W7dOmH/vWqocVCiqaxj6soxVXfR8XpMdY2Zv4Amjr3n81geyOLb6IZ+l7MUbdp85
+ 29DQzuoVTthVpB9X4JKCprZIzifOTM1PFflTBzjx7egJwJWAIVdWyiIPjke6Va+w
+ uV2n4Rl/cgCvrXK5cTov5C/Bpaf6o+qrrDGFBLLZTF4=
+ </Y>
+ </DSAKeyValue>
+ </KeyValue>
+ </KeyInfo>
+ </Signature>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/dh0.p8 b/docs/tests/merlin-xmlenc-five/dh0.p8
new file mode 100644
index 00000000..bd3683d7
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/dh0.p8
Binary files differ
diff --git a/docs/tests/merlin-xmlenc-five/dh1.p8 b/docs/tests/merlin-xmlenc-five/dh1.p8
new file mode 100644
index 00000000..56946899
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/dh1.p8
Binary files differ
diff --git a/docs/tests/merlin-xmlenc-five/dsa.p8 b/docs/tests/merlin-xmlenc-five/dsa.p8
new file mode 100644
index 00000000..8e4a85cd
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/dsa.p8
Binary files differ
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml b/docs/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml
new file mode 100644
index 00000000..21467fb7
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-content-aes128-cbc-kw-aes192.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jeb</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ IbjZH7Mq564oMybpvCHWYM/5ER3eFsAV
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ YDYTxR+smxZDSVoXXEp3n6HzTgWqV7ZlG6I1lmEv7zLGZBF/o7eqe5QGT6L3DPNW
+ geflA8vVJHxwliixWcvHCnNKQkx+Sw8YbIknCQyr4mqtXEmHhsie5XYTEyqgKLVP
+ YdNXf56wLUTMEmBqq7cto9OrYcBWkrDcQQvHmDkHuG+Nom4m+623GsB0FNts6VyN
+ sdGMwo4K0bEFReLL04l6It+cgLJ2q+LKdBoMQL59IAQmrwi0bkiqee2cLlDuGyQ1
+ KD9IQ1qtlJpvQujN4xNVWT00UjtWxmpSMID/Kue/AnXn7Cf8zw1ZZQitgh8uWOX2
+ uMy99F2YlxqIK1r+MeXHuZDNf75S8dFaKIKtHMf7ioA=
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml b/docs/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml
new file mode 100644
index 00000000..d1242784
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-content-aes192-cbc-dh-sha512.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+ <KA-Nonce>
+ bm9uY2U=
+ </KA-Nonce>
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" />
+ <OriginatorKeyInfo>
+ <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <P>
+ plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+ 6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+ whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+ </P>
+ <Q>
+ 9jJXQijNovoq6QUBFcEUYwUvyTM=
+ </Q>
+ <Generator>
+ PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+ lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+ 3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+ </Generator>
+ <Public>
+ Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+ NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+ m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+ </Public>
+ </DHKeyValue>
+ </KeyValue>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+ czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+ wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+ m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+ oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+ cU0=
+ </X509Certificate>
+ </X509Data>
+ </OriginatorKeyInfo>
+ <RecipientKeyInfo>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+ aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+ VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+ wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+ orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+ Yos=
+ </X509Certificate>
+ </X509Data>
+ </RecipientKeyInfo>
+ </AgreementMethod>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 5jIlxXZGhx8vUNbL0ZvdRry6mPapX8qLYlDgy3tE6nRbnBRWACviYQAXBqvDfn1R
+ TKmBWZ5NoJobM8lXWOk2nNQIuSQojcFYRuvcWU7DffDVX7dUCAVRJp6PS/5V1IHR
+ JJ2WBagWSW1lFW9mqjfe0ZflEZGYI3/5kUYQIpbMvEuXoF8129VGiKalZsCVTRxd
+ /IsdT8x/7L57GlGq0OzCMI5zG3QrBV7wUOoqBu5SxS8QUvUPucH8hsD4Bq4BwVEa
+ GlUVAj7H3HYYo7fviTO4i2lTMunGW9rcJVnKXjDM/Mds3oM4zbBo/Ao3m3rmpUUz
+ AwSe6ofh6ML418+cyCaRUoVQOlG+VwkHEKUiYYGhsKY=
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml b/docs/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml
new file mode 100644
index 00000000..03a73157
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-content-aes256-cbc-prop.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-data-0" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ H8n1OuEJFyUgUguDFF6ml8nRbA0IaDYgmtGelWT4V7CSz9q/AvtfxyMzUH+tQZ+F
+ jyXh3otR1+V1+8EsevzEq5nUmNKl+wyxQmWaUvbvXpSwAJnlJdyvnP56JiXUBS+p
+ C2KzlO9kk8l6awtuRd9Z6eVjngwTf7kNprmu5Bv0o+x7dcq96G8wGLvMThbs4uxk
+ iIDK5+qGBzzIlFw3GG82MKmnVBveQw3LD52y76yBtoayuAJFJMnrXa0OEAaBRSI2
+ fjPNGJV3sCyKZDHqGlsQ4X+VvXzevLbBLkFy1xH9/zoUXo8cEaTvsIOBYu/Xn/CJ
+ y/dpe/dvOqqji+9vFccAyrBHxHeYSonuFsxfpSDVC6Y=
+ </CipherValue>
+ </CipherData>
+ <EncryptionProperties>
+ <EncryptionProperty Target="#encrypt-data-0">
+ <Certification xmlns="urn:example:prop">
+ certifiable
+ </Certification>
+ </EncryptionProperty>
+ </EncryptionProperties>
+ </EncryptedData>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml b/docs/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml
new file mode 100644
index 00000000..f5dafe98
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-content-tripledes-cbc.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>bob</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ uchJT2QyzQe7BoBaDYKPR5BDgEW8jsJ3UOGEYz9EVrBKVztYfcu0xhif5Y9kqtyx
+ DDa7woNcTyhwQDZh9jGr5hzkcjrsKfMjJw+PnKNZzc+KMW0z861L8sdhdl8TA+bt
+ yudfaCEJaH4RdHABp+VMzL5CrXr5skvubolWs1KzUtqbRekkxucknzJmnqRY8yPp
+ 4iBvVuvus+Bk0pj271NWu13CmHvdJRMMDSX30JMfsecW6mfdF5xjoFciL8VnemzJ
+ qt0SUVjMzoeY0PnCdk09Ej2OZdj8AtkLPCEKeiBBD+coCf5F8WaLrPTRPgjoAtiN
+ Wda+McaZPJje1IfoAKGTcg==
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml b/docs/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml
new file mode 100644
index 00000000..8ae0a064
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-data-aes128-cbc.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>job</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ QMpxhXq1DtBeyC9KfSaMQWrEtefe+e935gF/x62spvmL6IW0XeS0W4Kk31OgWzN0
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml b/docs/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml
new file mode 100644
index 00000000..55ccb1e7
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-data-aes192-cbc-kw-aes256.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 4AAgyi3M7xNdBimbQZKdGJLn3/cS4Yv8QKuA01+gUnY=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 50lv94d/DFJirJXYOUXaBlrO+7gIXpx8cqH+G2xvE4mueoIxmGs8RH7FBXwjuMgf
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml b/docs/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml
new file mode 100644
index 00000000..14e2b922
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-data-aes256-cbc-kw-tripledes.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>bob</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ ZyJbVsjRM4MEsswwwHz57aUz1eMqZHuEIoEPGS47CcmLvhuCtlzWZ9S/WcVJZIpz
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ Lp2ZWyJERT05icmHvWWbEtCCfmB2jvSlSclhS0oj3A3PU90aE6v+bFFQxrHw7VUd
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml b/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
new file mode 100644
index 00000000..c9c30e09
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <OAEPparams>
+ MTIzNDU2Nzg=
+ </OAEPparams>
+ </EncryptionMethod>
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Data>
+ <X509Certificate>
+ MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+ dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+ dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+ 9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+ McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+ a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+ HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+ BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+ TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+ 2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 1SVctZA/RB6vVjsu5NYTxowdvsViJJ1skDXX09RmNU3YlCuPpSqWWhCU5u5ILfr9
+ 6AFcascXbdFyEZ9tjDhK8Nid2MEqkR/Mc9zFHf7mPMnO7C8bRggkjjdILSIF/Ft7
+ FXzm/DFP50IF3zPe/n5jy2Nk8uRvTmKUDcnoV6qnUgY=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ QOImekuU44UeCmVaMma9bCT5h5a6mWXDSndTB81jvHw=
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml b/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
new file mode 100644
index 00000000..29daa4ea
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/plain">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ </EncryptionMethod>
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Data>
+ <X509Certificate>
+ MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+ dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+ dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+ 9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+ McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+ a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+ HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+ BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+ TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+ 2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ S5SqVG+QxxpCNWobuqQFAI6db1pTEpWNMQXQVJAPjlfmvnVmTtq5v6fgMA2l/r7M
+ iX7gUPZthrKezkSavDfi057cK6YKpC5/KACXjNJvUoaVXj/aXpcoMOO+ZTPq36eo
+ pyeW99DWYgCbY88Kf9R3r3QMx/ogwjScfRVJTRZL3Lo=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ HG02AxNyn4iA9NH5x+PQ9lgPNzTkljThotXWKz0UYrE=
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml
new file mode 100644
index 00000000..ae349285
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-aes128-cbc-rsa-1_5.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Data>
+ <X509Certificate>
+ MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+ dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+ dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+ 9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+ McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+ a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+ HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+ BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+ TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+ 2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ heZshNX5m7arS3OmR72+8WNCMMpznxE41dLWkgd6XJpzl+IN2xuijAf4YPEjjJmZ
+ nt9PlO3/hiHl0Cvpg5vMR6AhvL49BvCz9JCeMG6x3MHBiKbRNhyEq2rX7o1GdJhC
+ 5cm35Q/ZDKV9DHG8jWmPcOb8yKU9NYo2LJKDb3YHOJY=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 0wkECpTy60/FDwbVM4zgd9qJVjR4h0q4PLm5pyyIxAuhbEh0art03yEikmbWBt2H
+ 7qOk2G9iufUdwwqNPuZV5Qw5Rg2FMvTx234lDERGn5p+hhjOTcss5JF9QDzgdiec
+ KABX3vbCESi/f3uwQ8BYDT+6SnxTR+xtcNv5xhbUCIFk/TaenSWx6p6fntTwTl1e
+ lpwnI0EtM1yf4a9tBiH9PNd36BUv2rvSi4cZvJqSB3ZKvGtuwwyRzOzlzl259d1u
+ QuoYysTBEAHw/WIop8eAexU9PUv7UbTkQAQag1yStda+GepVdpXEpu4hcxXQcvfs
+ 9AQgkAgh4JKrnY4Bhz2B/e4CHHfbEedDOi+FVYlZuLn0CzrKMnM+1nUmqxJVWHz7
+ hytidpuqNRw3gcMkYvgH6g==
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml
new file mode 100644
index 00000000..b092d7f1
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-aes192-cbc-ref.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes192-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jeb</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherReference URI="">
+ <Transforms>
+ <Transform xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <XPath xmlns:rep="http://www.example.org/repository">self::text()[parent::rep:CipherValue[@Id="example1"]]</XPath>
+ </Transform>
+ <Transform xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#base64" />
+ </Transforms>
+ </CipherReference>
+ </CipherData>
+ </EncryptedData>
+ <CipherValue xmlns="http://www.example.org/repository" Id="example1">
+ zih1MFU6Px1m2U1lSEIV9LUIsnb3SIWBfRHlRrOWKFFFcVvXiE6z3nCbkNYMuy1T
+ nPwXDd9/BkOGiPuFT2jixN7Zowe2ANK1dZXKVjZ1+ACx+Kg17U+EMPEuq481OW7e
+ wm0vnbur0L2lCXb4DP7c6sotV89W53v2MlaYqWHhlBO/zasqwhl6q/c/L/GdPUHH
+ ovKZ+24ZWYktxCLEXMslIAysQ0UFBLolrtC/7XDgYY9s4UvbedgeqbrdnxQ4LiRn
+ L+aKN1bnKF3KlWKCJFvVrRESriGPBfpasWA/A1LOK333a8LaOlS7RFamflfICk+t
+ VqCspVnIs6vBBtrGLI5SsJS+rh1r42jI/h/ivELUOmUq1sZCFQvEhx7AiHi4/9SY
+ LWcR4w3ZH3aqFL/XtAzKYQ==
+ </CipherValue>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml
new file mode 100644
index 00000000..3594a7f4
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-carried-kw-aes256.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>Foo Key</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ pdDtiyd7XQ/BFEEN0PMJuHnLUfCY+bJlsW+q04OiKSPnRd4/dS1tjaTfj5dPpGXe
+ cY3fJvRsq9QP1CJiwyEC/EQ1zSLbzwOtZ+NtxtsFgYvPBJ9t86ZcXIjlErQ85z3L
+ wnb8rSHpE9tu4tJ1rjgf2i6NCbdFnSMXLSDgLEs48+gkX0cJCmKxzRaSE4cV0OSl
+ hBWND4EYzX1M679VlSYrI0de+lSPO3Vx+y/TuZ5Vo+uu9+YP+ce0LRkx2BicjjsP
+ QO9sp+yjHPNDIV1Z7VHsDIWqqmBaNQo3GuzF5WzWgaXTKnPv/IgUQn+1t3EtgHyb
+ JhnfR/1em16z/Zaf9Uy1Lfd//yfEJ9BCjqwe1UjwN6ytu1v2BHd+8bVjD2o+Dg8V
+ 7ayOLlkWOTOLvtJMPOXPqw==
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Recipient="someone else">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>ned</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ EWlIkFPGrkeW4cyjWSznLVoClVh/OEC7Klya9d9o7R6wll6JswZb2w==
+ </CipherValue>
+ </CipherData>
+ <CarriedKeyName>Foo Key</CarriedKeyName>
+ </EncryptedKey>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Recipient="you">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ bsL63D0hPN6EOyzdgfEmKsAAvoJiGM+Wp9a9KZM92IKdl7s3YSntRg==
+ </CipherValue>
+ </CipherData>
+ <CarriedKeyName>Foo Key</CarriedKeyName>
+ </EncryptedKey>
+ </KeyInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
new file mode 100644
index 00000000..5fb336ac
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-kw-aes256-dh-ripemd160.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+ <KA-Nonce>
+ bm9uY2U=
+ </KA-Nonce>
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160" />
+ <OriginatorKeyInfo>
+ <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <P>
+ plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+ 6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+ whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+ </P>
+ <Q>
+ 9jJXQijNovoq6QUBFcEUYwUvyTM=
+ </Q>
+ <Generator>
+ PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+ lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+ 3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+ </Generator>
+ <Public>
+ Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+ NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+ m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+ </Public>
+ </DHKeyValue>
+ </KeyValue>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+ czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+ wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+ m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+ oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+ cU0=
+ </X509Certificate>
+ </X509Data>
+ </OriginatorKeyInfo>
+ <RecipientKeyInfo>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+ aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+ VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+ wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+ orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+ Yos=
+ </X509Certificate>
+ </X509Data>
+ </RecipientKeyInfo>
+ </AgreementMethod>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ qKWnCxVIlNvPEqBMxhCaY6z9NK0ZFCmRef1U5wbIMPaR/g2Zdw7VZg==
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ betMfG/VMLdwNGdkspCrJSo092PltInklQisKd8ImQgeFMzjn73OpXhK0KJtB9IB
+ 1xGjENZ8Yzu625ehhCZGGFK4mp8DkIE7Sfw7O+5UEqprE/cGrWL0bbcz0U7X2Evh
+ 4/9va6h+DHAzmVYW7bqsa0WkiHkELRq44ORdSzyPUIwpGUCsOWyThsYfIn4uhIHQ
+ NJVTKPRHTb5H5lsxNtobSeXACSYAHk/BmJM99h4IQ9Gh7bCkhkmZsIvo/lNOW+6r
+ xtvLqHfYw9XhJe7hL0Q5EluMCBZQJ/Vx2r5lTXzBeonlurpzNdRa+ClKSVRUwKYH
+ Vjemr/o+Y4e4r8gD3TVP3auVuUCmi3XLpj4WjOsPDcekzZUgXA/xuJ+7jHXjOEOK
+ RViMiwIk0cqOa6s0Qg63EQ==
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
new file mode 100644
index 00000000..7311b845
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <RetrievalMethod Type="http://www.w3.org/2001/04/xmlenc#EncryptedKey" URI="#encrypt-key-0" />
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ cudR6Hg0xqhrOjbvQz4C/WOdHbcB7Duc+xFxbObkfkW6jXweDOf8Tq87FPbj5bby
+ oCLbWqq3ap/zx/gN8Xv3Fj6fYUz3dIb1wzXy7B0/3me7i4fBHyGropflLi7iEag2
+ WU7aGJ0CA9/jQr6Td2qhH0CDU47QN9eK/PVMPPfLX1D1A90uK32wPn+SCysE58Q3
+ rCi7Jwo+OsrxT0qqjP82T3FjVi0i/dsnPb5GQWLE3/y7OsIuknuMRO4mWma+bO/m
+ aAN9JNeom5Kn3IKHCK2+kyx+LsGo2daKxF7RF9QqlaA/imsMS4trRjZjYhgfgm96
+ kb1l4AI7VZcfRXwYdzLqKNHty6ZxbSQBMeEca0mEuIbor7IH34641a/BuFME/BLm
+ MoVaLUCE0rg1e1U0S18UCg==
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Id="encrypt-key-0">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ bsL63D0hPN6EOyzdgfEmKsAAvoJiGM+Wp9a9KZM92IKdl7s3YSntRg==
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml b/docs/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml
new file mode 100644
index 00000000..1ede0646
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encrypt-element-tripledes-cbc-kw-aes128.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>job</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ dV45TUpJbidb9iKa34xj1WVtTZ036cnqvym2TBJWR5c=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ bmExbDyrUQtsGjNBU7TRpMhOC76O/wBDWVMQML43lWNP0xp7QwVPce1XdbB4AVUn
+ xxAuJh18jOd9UzPTzrJHrKWvsWP8Xp1m/HL3A1XhOUe+MEcFyJB9fXazhDmyaSYU
+ SvieaPXcpzKWiHhZE8RKUyAYw9nU9wf2SEUgCVRuRPfsrXg4Uyr83VTn84LPe9sL
+ dd2hMj4jhgHL86b7PTYBWdtrYXq0Jwzptuw+TZ1C706BAZDYNAiSTdx3J17Ey3ex
+ IeIFBBIq8D8Gp7XiH4UxiDB6rtA2czox6+FCvaIsrGFaaw9XdzvhiZ3HxYROjprz
+ qiXcJlZzG6j8yRdpHSjsDkN3w7XjEgRODieGx110rBytZcwtqb0zc6JTZH5DzoJy
+ </CipherValue>
+ </CipherData>
+ </EncryptedData>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml
new file mode 100644
index 00000000..a69d9361
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-dh.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ 255LFQdP+eAK2aeuuLnz10pmaw4WEYb6TZa3B6H4z8c=
+ </SignatureValue>
+ <KeyInfo>
+ <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+ <KA-Nonce>
+ bm9uY2U=
+ </KA-Nonce>
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <OriginatorKeyInfo>
+ <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <P>
+ plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+ 6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+ whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+ </P>
+ <Q>
+ 9jJXQijNovoq6QUBFcEUYwUvyTM=
+ </Q>
+ <Generator>
+ PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+ lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+ 3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+ </Generator>
+ <Public>
+ Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+ NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+ m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+ </Public>
+ </DHKeyValue>
+ </KeyValue>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+ czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+ wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+ m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+ oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+ cU0=
+ </X509Certificate>
+ </X509Data>
+ </OriginatorKeyInfo>
+ <RecipientKeyInfo>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+ aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+ VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+ wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+ orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+ Yos=
+ </X509Certificate>
+ </X509Data>
+ </RecipientKeyInfo>
+ </AgreementMethod>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml
new file mode 100644
index 00000000..79ef3f12
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ 9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <AgreementMethod xmlns="http://www.w3.org/2001/04/xmlenc#" Algorithm="http://www.w3.org/2001/04/xmlenc#dh">
+ <KA-Nonce>
+ bm9uY2U=
+ </KA-Nonce>
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <OriginatorKeyInfo>
+ <KeyValue xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <DHKeyValue xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <P>
+ plygl2uMNc+jYtAZeKCZxPsmqa2z8DrOUa7L455iszN4SdPnL+LsZD47VJayvQY8
+ 6D1J5arkwrbUzmhMAjBZsENPBgffRwwEBTjoq+gjSyZNIbxqsqnJdEyUElzn4kGE
+ whECkJGnOaScacpjZg11h+gd0iBfY091bGHrCZrvr/8=
+ </P>
+ <Q>
+ 9jJXQijNovoq6QUBFcEUYwUvyTM=
+ </Q>
+ <Generator>
+ PerUZgMEMDTegMdTBRG9DPY5EHmwDxwzladdRcfvfdfU/9wlPzz5BUotMm730J9d
+ lF6avWr929fzYsnIOUDeUOJpltXmrTYnvz5Bi6yuUu6bVwSfv7u4S+I/EM9ZB+eY
+ 3fdF5TAMHD4tK86lw5APDrN2QnO1UMCwIvjOFatSOI0=
+ </Generator>
+ <Public>
+ Ulu6B1lCwajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82r
+ NyOUqgfnm97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCt
+ m2vKo/BpoLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhM=
+ </Public>
+ </DHKeyValue>
+ </KeyValue>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN39MIMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxNloXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTWVybGluIEh1Z2hl
+ czCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAUlu6B1lC
+ wajtIBnolqqgU+R1oxfye63DnI/iLM/Oe+Y8I/LMMaEmo3LmCU30m82rNyOUqgfn
+ m97S0bT8ZhI8gvw0EyQJ87vhlUz4WcmddU/YlTi3gJHUClr2olmBmRCtm2vKo/Bp
+ oLGJ0Wg1eyWfo54+gCqbeNez/DmBGcBEEhOjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIgUAwB+9f1oIwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQ41mCUsFhmxI58tytV8XEVZOCuUwIUVMe/HbUAH5PJ7aRoCNqa3fCI
+ cU0=
+ </X509Certificate>
+ </X509Data>
+ </OriginatorKeyInfo>
+ <RecipientKeyInfo>
+ <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Certificate>
+ MIIDvjCCA36gAwIBAgIGAOxN3+EMMAkGByqGSM44BAMwbjELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEVMBMGA1UEAxMMVHJhbnNpZW50IENB
+ MB4XDTAyMDIyODE3NTMxOVoXDTAzMDIyODE3NTI1NFowbzELMAkGA1UEBhMCSUUx
+ DzANBgNVBAgTBkR1YmxpbjEkMCIGA1UEChMbQmFsdGltb3JlIFRlY2hub2xvZ2ll
+ cyBMdGQuMREwDwYDVQQLEwhYL1NlY3VyZTEWMBQGA1UEAxMNTmlscmVtIFNlaGd1
+ aDCCAiUwggGaBgcqhkjOPgIBMIIBjQKBgQCmXKCXa4w1z6Ni0Bl4oJnE+yaprbPw
+ Os5RrsvjnmKzM3hJ0+cv4uxkPjtUlrK9BjzoPUnlquTCttTOaEwCMFmwQ08GB99H
+ DAQFOOir6CNLJk0hvGqyqcl0TJQSXOfiQYTCEQKQkac5pJxpymNmDXWH6B3SIF9j
+ T3VsYesJmu+v/wKBgD3q1GYDBDA03oDHUwURvQz2ORB5sA8cM5WnXUXH733X1P/c
+ JT88+QVKLTJu99CfXZRemr1q/dvX82LJyDlA3lDiaZbV5q02J78+QYusrlLum1cE
+ n7+7uEviPxDPWQfnmN33ReUwDBw+LSvOpcOQDw6zdkJztVDAsCL4zhWrUjiNAhUA
+ 9jJXQijNovoq6QUBFcEUYwUvyTMCbQCs/HkLusCqHmY71JxUOFzy5fuWkPpWXJzx
+ qU3oz1BfMZtPUqjpBnqU97M7VUEg+5pRG2txaHP8XNmB1bY0DCE88riDmHP7HqZB
+ Z2gbaH2LxXDQDayb5GcPfn38eDcWvVAaKP9fJ8wG5RUu3AoDgYQAAoGAGSYT19Pb
+ VCxMt06cAP7zQZ6AC5eXp3zeAweIevV96ryA1mB03qhB9X2lVowAUOFc24aVRTz7
+ wRoRjNQ20atzSy21C7yXDkvZ4uxfdrpIqpIVrI28e7XL+6CrhnAk621OvdeyEz5H
+ orA21hPXoCNdnUPG5Ib20oopM87ptF5dwiWjOjA4MA4GA1UdDwEB/wQEAwIDCDAR
+ BgNVHQ4ECgQIiDCSQ3FB/oEwEwYDVR0jBAwwCoAIgjqisiZ1WVswCQYHKoZIzjgE
+ AwMvADAsAhQMtZ98TyqVkVqUJ3RJqaU7l2xqKgIUX997qRqeMjAkK88NHeNd95/2
+ Yos=
+ </X509Certificate>
+ </X509Data>
+ </RecipientKeyInfo>
+ </AgreementMethod>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 2s+2ji8opL0SLKziiyNZ+mZ8Ibfu7cTwe4C0MmyarYDwGmsiRSqff8trHUwa+njZ
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
new file mode 100644
index 00000000..ecc29878
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ 9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Data>
+ <X509Certificate>
+ MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+ dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+ dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+ 9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+ McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+ a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+ HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+ BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+ TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+ 2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ BRhPOKN/KLCih2Q2RoxQiaV0s1FfpOM+kisl9MwRSPow5CyX91rBVfoWpP/Qq1T3
+ Rj/f0gVoJyE008uLic4X/S4spnudlOzTkVB6bUzoBt4j+z4hEq/cIfHqVdEJ+lN0
+ iu1sJk3k6ESl22OWEqQB7Rl5sAdhFPOqXsnLUNWmqA8=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
new file mode 100644
index 00000000..1779093a
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue>60NvZvtdTB+7UnlLp/H24p7h4bs=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ 9XBpYbFplNqqF7U/QtCHYE20U7oIxcyCr0L19MlenNo=
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+ <DigestMethod xmlns="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <OAEPparams>
+ MTIzNDU2Nzg=
+ </OAEPparams>
+ </EncryptionMethod>
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <X509Data>
+ <X509Certificate>
+ MIICkjCCAfugAwIBAgIGAOxN32E+MA0GCSqGSIb3DQEBBQUAMG4xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFTATBgNVBAMTDFRyYW5zaWVu
+ dCBDQTAeFw0wMjAyMjgxNzUyNDZaFw0wMzAyMjgxNzUyNDBaMG8xCzAJBgNVBAYT
+ AklFMQ8wDQYDVQQIEwZEdWJsaW4xJDAiBgNVBAoTG0JhbHRpbW9yZSBUZWNobm9s
+ b2dpZXMgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxFjAUBgNVBAMTDU1lcmxpbiBI
+ dWdoZXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAORdNSxbNFWlQeNsOlYJ
+ 9gN9eZD+rguRqKhmhOm7i63VDd5ALm2APXhqAmGBPzLN5jlL9g2XALK5WSO4XKjJ
+ McVfYg4+nPuOeHgqdD4HUgf19j/6SaTMcmDFJQMmx1Qw+Aakq3mGcSfvOJcBZctz
+ a50VucfCGL1NdfBEcaL3BnhjAgMBAAGjOjA4MA4GA1UdDwEB/wQEAwIFoDARBgNV
+ HQ4ECgQIjFG0ZGNyvNswEwYDVR0jBAwwCoAIhJXVlhr6O4wwDQYJKoZIhvcNAQEF
+ BQADgYEAXzG7x5aCJYRusTbmuZqhidGM5iiA9+RmZ4JTPDEgbeiTiJROxpr+ZjnA
+ TmsDKrCpqNUiHWjmsKEArYQp8R/KjdKl/pVe3jUvTxb0YZ+li/7k0GQ5LyRT/K4c
+ 2SgyLlyBPhpMq+z3g4P2egVRaZbxsLuKQILf7MIV/X5iAEBzu1w=
+ </X509Certificate>
+ </X509Data>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ NGIOL9UzhGwPYvVzbBxOGzxXfTIkzIsmtNSkWA03p64aS41vVA0sKWvcr/79Nf7T
+ 6RdA61TmwOKa5GDUYRumEadC7Z0zKFDKcuN78iJzlj2WwVqr5vBx14X2BSVW+de1
+ UTmXRZFRosFOk9etvD7Lm1V+kqIxqSrod68G8gJvGrY=
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml b/docs/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
new file mode 100644
index 00000000..532800bb
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160" />
+ <DigestValue>ixv9ZpIiqEzBC3Uztm5Rl6tXd9Q=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ kwV4uELL96oFm8/+VGzq+xAOgUg=
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-tripledes" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>bob</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ gHMpx5iF7+KXtNHLasZrkcLHn8Ti4rxUjCIRK+IcgbQir6FUsQ/uxQ3o8enEMWq1
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml b/docs/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml
new file mode 100644
index 00000000..535510c7
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+ <DigestValue>eI1OLVStn6Z4q7Byq8XGUJ4bce1LMSlanI6o+SvYzt0=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ cOQGJE3d3fXi1BIfdvr1v6tz/4lt9xGznfyDPXEvc4Q=
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes128" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>job</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ rPnY/XoSGCbuwy7vpslf29rs9dbvSCmGFOjEs3LT6g/qyZjfDA+2fQ==
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml b/docs/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml
new file mode 100644
index 00000000..836aba22
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384" />
+ <DigestValue>bWetGDV3M5oEiecfEHILQxVQRa1XgdY37VH8eWi9yVVx7Rr7UNhk+v6Jk7sMNPoA</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ iEjhOJoKiwsOBduxHj7bxILSsl6TLhNO3w/vlRcw9RZAe24HIxLRfhj4Xqsz1Orr
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes192" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jeb</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ 19D633XVohP6UJvaVRAhJek+ahtM3gOiVs6nZyAasDEb+WCUQOcWZw==
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml b/docs/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml
new file mode 100644
index 00000000..9adfafd8
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" />
+ <DigestValue>c8+KT9+qCSbNpdZm7/dp9Mv/lgF51ATycY0Ttz/0bw2p5nvnmeEgQpIPw5HhVJ9Ku6dDf0RKVVR/CsYvPGfnEg==</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ zB8ZUo9bQxzxnxW2aZ217eu//1e5xHB6RlfEOFOlx1l5PIhadKAlQo0z1D9B2HVU
+ Kj4StSnlUsrvDo2BxgiAoA==
+ </SignatureValue>
+ <KeyInfo>
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#kw-aes256" />
+ <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>jed</KeyName>
+ </KeyInfo>
+ <CipherData>
+ <CipherValue>
+ tPCC89jQShB+WDINCdRfKgf8wTlAx8xRXD73RmEHPBfix8zS1N82KQ==
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </KeyInfo>
+</Signature>
diff --git a/docs/tests/merlin-xmlenc-five/ids.p12 b/docs/tests/merlin-xmlenc-five/ids.p12
new file mode 100644
index 00000000..503960f8
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/ids.p12
Binary files differ
diff --git a/docs/tests/merlin-xmlenc-five/plaintext.txt b/docs/tests/merlin-xmlenc-five/plaintext.txt
new file mode 100644
index 00000000..9d04ac31
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/plaintext.txt
@@ -0,0 +1 @@
+top secret message
diff --git a/docs/tests/merlin-xmlenc-five/plaintext.xml b/docs/tests/merlin-xmlenc-five/plaintext.xml
new file mode 100644
index 00000000..26907987
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/plaintext.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PurchaseOrder xmlns="urn:example:po">
+ <Items>
+ <Item Code="001-001-001" Quantity="1">
+ spade
+ </Item>
+ <Item Code="001-001-002" Quantity="1">
+ shovel
+ </Item>
+ </Items>
+ <ShippingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </ShippingAddress>
+ <PaymentInfo>
+ <BillingAddress>
+ Dig PLC, 1 First Ave, Dublin 1, Ireland
+ </BillingAddress>
+ <CreditCard Type="Amex">
+ <Name>Foo B Baz</Name>
+ <Number>1234 567890 12345</Number>
+ <Expires Month="1" Year="2005" />
+ </CreditCard>
+ </PaymentInfo>
+</PurchaseOrder>
diff --git a/docs/tests/merlin-xmlenc-five/rsa.p8 b/docs/tests/merlin-xmlenc-five/rsa.p8
new file mode 100644
index 00000000..6a7d8282
--- /dev/null
+++ b/docs/tests/merlin-xmlenc-five/rsa.p8
Binary files differ
diff --git a/docs/xmldsig-verifier.html b/docs/xmldsig-verifier.html
index c9f090d8..0ffa99b0 100644
--- a/docs/xmldsig-verifier.html
+++ b/docs/xmldsig-verifier.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/xmldsig.html b/docs/xmldsig.html
index 49148380..b45a9805 100644
--- a/docs/xmldsig.html
+++ b/docs/xmldsig.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/xmlenc.html b/docs/xmlenc.html
index 74fc4628..09ea07d2 100644
--- a/docs/xmlenc.html
+++ b/docs/xmlenc.html
@@ -30,6 +30,351 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
diff --git a/docs/xmlsec-ga.xsl b/docs/xmlsec-ga.xsl
new file mode 100644
index 00000000..464a7dbc
--- /dev/null
+++ b/docs/xmlsec-ga.xsl
@@ -0,0 +1,21 @@
+<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+ <xsl:output method="html" encoding="ISO-8859-1" />
+ <xsl:template match="/">
+<html>
+<head>
+<xsl:copy-of select="//head/*" />
+</head>
+<body>
+<xsl:copy-of select="//body/*" />
+<script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-51404834-1', 'auto');
+ ga('send', 'pageview');
+</script>
+</body>
+</html></xsl:template>
+</xsl:stylesheet>
diff --git a/docs/xmlsec-man.html b/docs/xmlsec-man.html
index 65701ede..f2de3c13 100644
--- a/docs/xmlsec-man.html
+++ b/docs/xmlsec-man.html
@@ -25,6 +25,29 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
color: initial;
}
</style>
+<style type="text/css">
+table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
+ width: 20em;
+}
+.synopsis, .classsynopsis {
+ background: #eeeeee;
+ border: solid 1px #aaaaaa;
+}
+.programlisting {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation {
+ background: #eeeeee;
+ border: solid 1px #000000;
+}
+.navigation a {
+ color: initial;
+}
+.navigation a:visited {
+ color: initial;
+}
+</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
@@ -222,6 +245,10 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</dt>
<dd> <dd>load load private key from pkcs12 file &lt;file&gt; </dd>
</dd>
+<dt> <b>--pkcs12-persist</b> <dt></dt>
+</dt>
+<dd> <dd>persist loaded private key </dd>
+</dd>
<dt> <b>--pubkey-cert-pem[</b>:&lt;name&gt;] &lt;file&gt; <dt></dt>
</dt>
<dd> <dd>load public key from PEM cert file </dd>
@@ -258,6 +285,10 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</dt>
<dd> <dd>skip strict checking of X509 data </dd>
</dd>
+<dt> <b>--insecure</b> <dt></dt>
+</dt>
+<dd> <dd>do not verify certificates </dd>
+</dd>
<dt> <b>--crypto</b> &lt;name&gt; <dt></dt>
</dt>
<dd> <dd>the name of the crypto engine to use from the following list: openssl, mscrypto, nss, gnutls, gcrypt (if no crypto engine is specified then the default one is used) </dd>
@@ -282,11 +313,19 @@ table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
</dt>
<dd> <dd>print help information about the command </dd>
</dd>
+<dt> <b>--xxe</b> <dt></dt>
+</dt>
+<dd> <dd>enable External Entity resolution. WARNING: this may allow the reading of arbitrary files and URLs, controlled by the input XML document. Use with caution! </dd>
+</dd>
+<dt> <b>--url-map</b>:&lt;url&gt; &lt;file&gt; <dt></dt>
+</dt>
+<dd> <dd>maps a given &lt;url&gt; to the given &lt;file&gt; for loading external resources </dd>
+</dd>
</dl>
<a name="lbAF"> </a><h2>AUTHOR</h2>
<a href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a><a name="lbAG"> </a><h2>REPORTING BUGS</h2>
<a href="http://www.aleksey.com/xmlsec/bugs.html">http://www.aleksey.com/xmlsec/bugs.html</a><a name="lbAH"> </a><h2>COPYRIGHT</h2>
-<br><p> </p>
+<a href="mailto:aleksey@aleksey.com">aleksey@aleksey.com</a><br><p> </p>
<hr>
<a name="index"> </a><h2>Index</h2>
<dl> <dt><a href="#lbAB">NAME</a></dt>
diff --git a/examples/decrypt1.c b/examples/decrypt1.c
index 881eb947..7819dfbe 100644
--- a/examples/decrypt1.c
+++ b/examples/decrypt1.c
@@ -92,7 +92,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/decrypt2.c b/examples/decrypt2.c
index c07e988b..5ac11cef 100644
--- a/examples/decrypt2.c
+++ b/examples/decrypt2.c
@@ -95,7 +95,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -151,7 +151,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load DES keys from #files in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
diff --git a/examples/decrypt3.c b/examples/decrypt3.c
index a1371332..113271c4 100644
--- a/examples/decrypt3.c
+++ b/examples/decrypt3.c
@@ -97,7 +97,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/encrypt1.c b/examples/encrypt1.c
index ef132482..956dfacf 100644
--- a/examples/encrypt1.c
+++ b/examples/encrypt1.c
@@ -94,7 +94,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/encrypt2.c b/examples/encrypt2.c
index cda3447c..c9ea6263 100644
--- a/examples/encrypt2.c
+++ b/examples/encrypt2.c
@@ -95,7 +95,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/encrypt3.c b/examples/encrypt3.c
index cf2882da..176d7a54 100644
--- a/examples/encrypt3.c
+++ b/examples/encrypt3.c
@@ -97,7 +97,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -153,7 +153,7 @@ main(int argc, char **argv) {
* @key_file: the key filename.
*
* Creates simple keys manager and load RSA key from #key_file in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
diff --git a/examples/sign1.c b/examples/sign1.c
index 050211cc..cc6b7a48 100644
--- a/examples/sign1.c
+++ b/examples/sign1.c
@@ -93,7 +93,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/sign2.c b/examples/sign2.c
index 2e05dfae..1802b397 100644
--- a/examples/sign2.c
+++ b/examples/sign2.c
@@ -96,7 +96,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/sign3.c b/examples/sign3.c
index 847daa09..adadac1f 100644
--- a/examples/sign3.c
+++ b/examples/sign3.c
@@ -100,7 +100,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -158,6 +158,7 @@ sign_file(const char* xml_file, const char* key_file, const char* cert_file) {
xmlNodePtr signNode = NULL;
xmlNodePtr refNode = NULL;
xmlNodePtr keyInfoNode = NULL;
+ xmlNodePtr x509DataNode = NULL;
xmlSecDSigCtxPtr dsigCtx = NULL;
int res = -1;
@@ -204,11 +205,22 @@ sign_file(const char* xml_file, const char* key_file, const char* cert_file) {
goto done;
}
- if(xmlSecTmplKeyInfoAddX509Data(keyInfoNode) == NULL) {
+ x509DataNode = xmlSecTmplKeyInfoAddX509Data(keyInfoNode);
+ if(x509DataNode == NULL) {
fprintf(stderr, "Error: failed to add X509Data node\n");
goto done;
}
+ if(xmlSecTmplX509DataAddSubjectName(x509DataNode) == NULL) {
+ fprintf(stderr, "Error: failed to add X509SubjectName node\n");
+ goto done;
+ }
+
+ if(xmlSecTmplX509DataAddCertificate(x509DataNode) == NULL) {
+ fprintf(stderr, "Error: failed to add X509Certificate node\n");
+ goto done;
+ }
+
/* create signature context, we don't need keys manager in this example */
dsigCtx = xmlSecDSigCtxCreate(NULL);
if(dsigCtx == NULL) {
diff --git a/examples/verify1.c b/examples/verify1.c
index 182da2d0..2e69df8b 100644
--- a/examples/verify1.c
+++ b/examples/verify1.c
@@ -91,7 +91,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
diff --git a/examples/verify2.c b/examples/verify2.c
index f7a84768..0d2b7c69 100644
--- a/examples/verify2.c
+++ b/examples/verify2.c
@@ -94,7 +94,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -151,7 +151,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load PEM keys from #files in it.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
diff --git a/examples/verify3.c b/examples/verify3.c
index 7f80bb56..af8cb9c9 100644
--- a/examples/verify3.c
+++ b/examples/verify3.c
@@ -1,4 +1,4 @@
-/**
+/**
* XML Security Library example: Verifying a file signed with X509 certificate
*
* Verifies a file signed with X509 certificate.
@@ -95,7 +95,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -152,7 +152,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load trusted certificates from PEM #files.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
diff --git a/examples/verify4.c b/examples/verify4.c
index e438d748..7e8c47fd 100644
--- a/examples/verify4.c
+++ b/examples/verify4.c
@@ -1,7 +1,7 @@
/**
* XML Security Library example: Verifying a simple SAML response with X509 certificate
*
- * Verifies a simple SAML response. In addition to refular verification
+ * Verifies a simple SAML response. In addition to regular verification
* we ensure that the signature has only one <dsig:Reference/> element
* with an empty or NULL URI attribute and one enveloped signature transform
* as it is required by SAML specification.
@@ -12,12 +12,12 @@
* Usage:
* verify4 <signed-file> <trusted-cert-pem-file1> [<trusted-cert-pem-file2> [...]]
*
- * Example (sucecess):
+ * Example (success):
* ./verify4 verify4-res.xml ca2cert.pem cacert.pem
*
* Example (failure):
* ./verify4 verify4-bad-res.xml ca2cert.pem cacert.pem
- * In the same time, verify3 example successfuly verifies this signature:
+ * In the same time, verify3 example successfully verifies this signature:
* ./verify3 verify4-bad-res.xml ca2cert.pem cacert.pem
*
* This is free software; see Copyright file in the source
@@ -103,7 +103,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stderr, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -160,7 +160,7 @@ main(int argc, char **argv) {
* @files_size: the number of filenames in #files.
*
* Creates simple keys manager and load trusted certificates from PEM #files.
- * The caller is responsible for destroing returned keys manager using
+ * The caller is responsible for destroying returned keys manager using
* @xmlSecKeysMngrDestroy.
*
* Returns the pointer to newly created keys manager or NULL if an error
diff --git a/examples/xmldsigverify.c b/examples/xmldsigverify.c
index f6a9c847..01d666d5 100644
--- a/examples/xmldsigverify.c
+++ b/examples/xmldsigverify.c
@@ -91,7 +91,7 @@ main(int argc, char **argv) {
if(xmlSecCryptoDLLoadLibrary(NULL) < 0) {
fprintf(stdout, "Error: unable to load default xmlsec-crypto library. Make sure\n"
"that you have it installed and check shared libraries path\n"
- "(LD_LIBRARY_PATH) envornment variable.\n");
+ "(LD_LIBRARY_PATH and/or LTDL_LIBRARY_PATH) environment variables.\n");
return(-1);
}
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -263,7 +263,7 @@ verify_request(xmlSecKeysMngrPtr mngr) {
xmlBufferAdd(buffer, buf, ret);
}
- /* is the document subbmitted from the form? */
+ /* is the document submitted from the form? */
if(strncmp((char*)xmlBufferContent(buffer), "_xmldoc=", 8) == 0) {
xmlBufferShrink(buffer, 8);
buffer->use = url_decode((char*)xmlBufferContent(buffer), xmlBufferLength(buffer));
diff --git a/include/xmlsec/Makefile.am b/include/xmlsec/Makefile.am
index b82495d7..50785170 100644
--- a/include/xmlsec/Makefile.am
+++ b/include/xmlsec/Makefile.am
@@ -24,7 +24,6 @@ xmlsecinc_HEADERS = \
nodeset.h \
parser.h \
private.h \
- soap.h \
strings.h \
templates.h \
transforms.h \
@@ -36,6 +35,10 @@ xmlsecinc_HEADERS = \
xmltree.h \
$(NULL)
+if XMLSEC_ENABLE_SOAP
+xmlsecinc_HEADERS += soap.h
+endif
+
remove-old-headers:
@if test "x$(DESTDIR)" = "x" && test -d "$(includedir)/xmlsec"; then \
echo "----------------------------------------------------------------------"; \
diff --git a/include/xmlsec/app.h b/include/xmlsec/app.h
index 7b8e510b..97f7d3db 100644
--- a/include/xmlsec/app.h
+++ b/include/xmlsec/app.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
*
@@ -16,10 +16,6 @@
#error To use dynamic crypto engines loading define XMLSEC_CRYPTO_DYNAMIC_LOADING
#endif /* !defined(IN_XMLSEC) && !defined(XMLSEC_CRYPTO_DYNAMIC_LOADING) */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/xmlIO.h>
@@ -30,6 +26,10 @@ extern "C" {
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**********************************************************************
*
* Crypto Init/shutdown
@@ -162,6 +162,27 @@ XMLSEC_EXPORT xmlSecTransformId xmlSecTransformAes192CbcGetKlass
#define xmlSecTransformAes256CbcId xmlSecTransformAes256CbcGetKlass()
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformAes256CbcGetKlass(void);
/**
+* xmlSecTransformAes128GcmId:
+*
+* The AES128 GCM cipher transform klass.
+*/
+#define xmlSecTransformAes128GcmId xmlSecTransformAes128GcmGetKlass()
+XMLSEC_EXPORT xmlSecTransformId xmlSecTransformAes128GcmGetKlass(void);
+/**
+* xmlSecTransformAes192GcmId:
+*
+* The AES192 GCM cipher transform klass.
+*/
+#define xmlSecTransformAes192GcmId xmlSecTransformAes192GcmGetKlass()
+XMLSEC_EXPORT xmlSecTransformId xmlSecTransformAes192GcmGetKlass(void);
+/**
+* xmlSecTransformAes256GcmId:
+*
+* The AES256 GCM cipher transform klass.
+*/
+#define xmlSecTransformAes256GcmId xmlSecTransformAes256GcmGetKlass()
+XMLSEC_EXPORT xmlSecTransformId xmlSecTransformAes256GcmGetKlass(void);
+/**
* xmlSecTransformKWAes128Id:
*
* The AES 128 key wrap transform klass.
diff --git a/include/xmlsec/base64.h b/include/xmlsec/base64.h
index a40c4528..7e13862f 100644
--- a/include/xmlsec/base64.h
+++ b/include/xmlsec/base64.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Base64 encode/decode transform and utility functions.
@@ -11,15 +11,15 @@
#ifndef __XMLSEC_BASE64_H__
#define __XMLSEC_BASE64_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* XMLSEC_BASE64_LINESIZE:
*
diff --git a/include/xmlsec/bn.h b/include/xmlsec/bn.h
index 616919b3..aba1cf6f 100644
--- a/include/xmlsec/bn.h
+++ b/include/xmlsec/bn.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Simple Big Numbers processing.
@@ -11,14 +11,14 @@
#ifndef __XMLSEC_BN_H__
#define __XMLSEC_BN_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/buffer.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef xmlSecBuffer xmlSecBn,
*xmlSecBnPtr;
diff --git a/include/xmlsec/buffer.h b/include/xmlsec/buffer.h
index 4d8c739c..d942c868 100644
--- a/include/xmlsec/buffer.h
+++ b/include/xmlsec/buffer.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Memory buffer.
@@ -11,13 +11,13 @@
#ifndef __XMLSEC_BUFFER_H__
#define __XMLSEC_BUFFER_H__
+#include <libxml/tree.h>
+#include <xmlsec/xmlsec.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#include <libxml/tree.h>
-#include <xmlsec/xmlsec.h>
-
typedef struct _xmlSecBuffer xmlSecBuffer,
*xmlSecBufferPtr;
diff --git a/include/xmlsec/crypto.h b/include/xmlsec/crypto.h
index 75d92d04..8f138396 100644
--- a/include/xmlsec/crypto.h
+++ b/include/xmlsec/crypto.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Crypto engine selection.
@@ -11,10 +11,6 @@
#ifndef __XMLSEC_CRYPTO_H__
#define __XMLSEC_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
/* include nothing if we compile xmlsec library itself */
@@ -40,6 +36,12 @@ extern "C" {
#include <xmlsec/mscrypto/x509.h>
#include <xmlsec/mscrypto/symbols.h>
#else /* XMLSEC_CRYPTO_MSCRYPTO */
+#ifdef XMLSEC_CRYPTO_MSCNG
+#include <xmlsec/mscng/app.h>
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/x509.h>
+#include <xmlsec/mscng/symbols.h>
+#else /* XMLSEC_CRYPTO_MSCNG */
#ifdef XMLSEC_CRYPTO_NSS
#include <xmlsec/nss/app.h>
#include <xmlsec/nss/crypto.h>
@@ -60,6 +62,7 @@ extern "C" {
#endif /* XMLSEC_CRYPTO_GCRYPT */
#endif /* XMLSEC_CRYPTO_GNUTLS */
#endif /* XMLSEC_CRYPTO_NSS */
+#endif /* XMLSEC_CRYPTO_MSCNG */
#endif /* XMLSEC_CRYPTO_MSCRYPTO */
#endif /* XMLSEC_CRYPTO_OPENSSL */
#endif /* XMLSEC_CRYPTO_DYNAMIC_LOADING */
@@ -67,9 +70,5 @@ extern "C" {
#endif /* IN_XMLSEC_CRYPTO */
#endif /* IN_XMLSEC */
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
#endif /* __XMLSEC_CRYPTO_H__ */
diff --git a/include/xmlsec/dl.h b/include/xmlsec/dl.h
index e04f4f95..4992c754 100644
--- a/include/xmlsec/dl.h
+++ b/include/xmlsec/dl.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
*
@@ -10,6 +10,19 @@
#ifndef __XMLSEC_DL_H__
#define __XMLSEC_DL_H__
+#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
+
+#include <libxml/tree.h>
+#include <libxml/xmlIO.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keysdata.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/transforms.h>
+
+#endif /* XMLSEC_NO_CRYPTO_DYNAMIC_LOADING */
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -22,15 +35,6 @@ XMLSEC_EXPORT int xmlSecCryptoDLFunctionsRegisterK
#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
-#include <libxml/tree.h>
-#include <libxml/xmlIO.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keysdata.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/keysmngr.h>
-#include <xmlsec/transforms.h>
-
/****************************************************************************
*
* Dynamic load functions
diff --git a/include/xmlsec/errors.h b/include/xmlsec/errors.h
index 32ac2fec..a7b35c8e 100644
--- a/include/xmlsec/errors.h
+++ b/include/xmlsec/errors.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Error codes and error reporting functions.
@@ -23,7 +23,7 @@ extern "C" {
/**
* XMLSEC_ERRORS_R_XMLSEC_FAILED:
*
- * An XMLSec function failed (error subject is the failed function).
+ * An XMLSec function failed.
*/
#define XMLSEC_ERRORS_R_XMLSEC_FAILED 1
@@ -44,21 +44,21 @@ extern "C" {
/**
* XMLSEC_ERRORS_R_CRYPTO_FAILED:
*
- * Crypto (OpenSSL) function failed (error subject is the failed function).
+ * Crypto (e.g. OpenSSL) function failed.
*/
#define XMLSEC_ERRORS_R_CRYPTO_FAILED 4
/**
* XMLSEC_ERRORS_R_XML_FAILED:
*
- * LibXML function failed (error subject is the failed function).
+ * LibXML function failed.
*/
#define XMLSEC_ERRORS_R_XML_FAILED 5
/**
* XMLSEC_ERRORS_R_XSLT_FAILED:
*
- * LibXSLT function failed (error subject is the failed function).
+ * LibXSLT function failed.
*/
#define XMLSEC_ERRORS_R_XSLT_FAILED 6
@@ -86,6 +86,13 @@ extern "C" {
#define XMLSEC_ERRORS_R_NOT_IMPLEMENTED 9
/**
+ * XMLSEC_ERRORS_R_INVALID_CONFIG:
+ *
+ * The configuration is invalid.
+ */
+#define XMLSEC_ERRORS_R_INVALID_CONFIG 10
+
+/**
* XMLSEC_ERRORS_R_INVALID_SIZE:
*
* Invalid size.
@@ -142,30 +149,37 @@ extern "C" {
#define XMLSEC_ERRORS_R_DATA_NOT_MATCH 18
/**
+ * XMLSEC_ERRORS_R_INVALID_VERSION:
+ *
+ * Version mismatch.
+ */
+#define XMLSEC_ERRORS_R_INVALID_VERSION 19
+
+/**
* XMLSEC_ERRORS_R_INVALID_NODE:
*
- * Invalid node (error subject is the node name).
+ * Invalid node.
*/
#define XMLSEC_ERRORS_R_INVALID_NODE 21
/**
* XMLSEC_ERRORS_R_INVALID_NODE_CONTENT:
*
- * Invalid node content (error subject is the node name).
+ * Invalid node content.
*/
#define XMLSEC_ERRORS_R_INVALID_NODE_CONTENT 22
/**
* XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE:
*
- * Invalid node attribute (error subject is the node name).
+ * Invalid node attribute.
*/
#define XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE 23
/**
* XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE:
*
- * Missing node attribute (error subject is the node name).
+ * Missing node attribute.
*/
#define XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE 25
@@ -179,21 +193,21 @@ extern "C" {
/**
* XMLSEC_ERRORS_R_UNEXPECTED_NODE:
*
- * Unexpected node (error subject is the node name).
+ * Unexpected node.
*/
#define XMLSEC_ERRORS_R_UNEXPECTED_NODE 27
/**
* XMLSEC_ERRORS_R_NODE_NOT_FOUND:
*
- * Node not found (error subject is the required node name).
+ * Node not found.
*/
#define XMLSEC_ERRORS_R_NODE_NOT_FOUND 28
/**
* XMLSEC_ERRORS_R_INVALID_TRANSFORM:
*
- * This transform is invlaid here.
+ * This transform is invalid.
*/
#define XMLSEC_ERRORS_R_INVALID_TRANSFORM 31
@@ -235,7 +249,7 @@ extern "C" {
/**
* XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND:
*
- * Data is not found (error subject is the data name).
+ * Data is not found.
*/
#define XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND 42
@@ -435,7 +449,7 @@ XMLSEC_EXPORT const char* xmlSecErrorsGetMsg (xmlSecSize pos)
* Macro. Returns @str if it is not NULL or pointer to "NULL" otherwise.
*/
#define xmlSecErrorsSafeString(str) \
- (((str) != NULL) ? ((char*)(str)) : (char*)"NULL")
+ (((str) != NULL) ? ((const char*)(str)) : (const char*)"NULL")
/**
* XMLSEC_ERRORS_NO_MESSAGE:
@@ -453,8 +467,6 @@ XMLSEC_EXPORT void xmlSecError (const char* file,
int reason,
const char* msg, ...) XMLSEC_ERRORS_PRINTF_ATTRIBUTE;
-
-
/**********************************************************************
*
* Assertions
@@ -494,7 +506,6 @@ XMLSEC_EXPORT void xmlSecError (const char* file,
}
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/xmlsec/exports.h b/include/xmlsec/exports.h
index a2abf3fc..c6ed95bb 100644
--- a/include/xmlsec/exports.h
+++ b/include/xmlsec/exports.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Export macro declarations for Win32 platform.
diff --git a/include/xmlsec/gcrypt/app.h b/include/xmlsec/gcrypt/app.h
index 20bd78e3..bb3baad1 100644
--- a/include/xmlsec/gcrypt/app.h
+++ b/include/xmlsec/gcrypt/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,15 +9,15 @@
#ifndef __XMLSEC_GCRYPT_APP_H__
#define __XMLSEC_GCRYPT_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
diff --git a/include/xmlsec/gcrypt/crypto.h b/include/xmlsec/gcrypt/crypto.h
index 1035ea3a..645a3548 100644
--- a/include/xmlsec/gcrypt/crypto.h
+++ b/include/xmlsec/gcrypt/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,15 +9,17 @@
#ifndef __XMLSEC_GCRYPT_CRYPTO_H__
#define __XMLSEC_GCRYPT_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#include <gcrypt.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_gcrypt(void);
/********************************************************************
@@ -151,7 +153,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGCryptTransformKWDes3GetKlass(void)
*
*******************************************************************/
#ifndef XMLSEC_NO_DSA
-#include <gcrypt.h>
/**
* xmlSecGCryptKeyDataDsaId:
@@ -281,7 +282,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGCryptTransformHmacSha512GetKlass(v
*
*******************************************************************/
#ifndef XMLSEC_NO_RSA
-#include <gcrypt.h>
/**
* xmlSecGCryptKeyDataRsaId:
diff --git a/include/xmlsec/gcrypt/symbols.h b/include/xmlsec/gcrypt/symbols.h
index 371efd32..d011e659 100644
--- a/include/xmlsec/gcrypt/symbols.h
+++ b/include/xmlsec/gcrypt/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
diff --git a/include/xmlsec/gnutls/app.h b/include/xmlsec/gnutls/app.h
index c579a348..05e9a5b5 100644
--- a/include/xmlsec/gnutls/app.h
+++ b/include/xmlsec/gnutls/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,15 +9,15 @@
#ifndef __XMLSEC_GNUTLS_APP_H__
#define __XMLSEC_GNUTLS_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
diff --git a/include/xmlsec/gnutls/crypto.h b/include/xmlsec/gnutls/crypto.h
index f0e07c6f..fa9dbbcf 100644
--- a/include/xmlsec/gnutls/crypto.h
+++ b/include/xmlsec/gnutls/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,14 +9,21 @@
#ifndef __XMLSEC_GNUTLS_CRYPTO_H__
#define __XMLSEC_GNUTLS_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#include <gnutls/gnutls.h>
+#ifndef XMLSEC_NO_DSA
+#include <gnutls/x509.h>
+#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_RSA
+#include <gnutls/x509.h>
+#endif /* XMLSEC_NO_RSA */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_gnutls(void);
@@ -152,9 +159,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformKWDes3GetKlass(void)
*******************************************************************/
#ifndef XMLSEC_NO_DSA
-#include <gnutls/gnutls.h>
-#include <gnutls/x509.h>
-
/**
* xmlSecGnuTLSKeyDataDsaId:
*
@@ -284,9 +288,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacSha512GetKlass(v
*******************************************************************/
#ifndef XMLSEC_NO_RSA
-#include <gnutls/gnutls.h>
-#include <gnutls/x509.h>
-
/**
* xmlSecGnuTLSKeyDataRsaId:
*
diff --git a/include/xmlsec/gnutls/symbols.h b/include/xmlsec/gnutls/symbols.h
index cd654372..5c4a7261 100644
--- a/include/xmlsec/gnutls/symbols.h
+++ b/include/xmlsec/gnutls/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
diff --git a/include/xmlsec/gnutls/x509.h b/include/xmlsec/gnutls/x509.h
index e00bf751..d90d28d4 100644
--- a/include/xmlsec/gnutls/x509.h
+++ b/include/xmlsec/gnutls/x509.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_GNUTLS_X509_H__
#define __XMLSEC_GNUTLS_X509_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#ifndef XMLSEC_NO_X509
#include <gnutls/gnutls.h>
@@ -22,6 +18,9 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
/**************************************************************************
*
@@ -101,10 +100,10 @@ XMLSEC_CRYPTO_EXPORT int xmlSecGnuTLSX509StoreAdoptCert (xmlSecK
-#endif /* XMLSEC_NO_X509 */
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
+#endif /* XMLSEC_NO_X509 */
+
#endif /* __XMLSEC_GNUTLS_X509_H__ */
diff --git a/include/xmlsec/io.h b/include/xmlsec/io.h
index 3e9757f8..246d0c72 100644
--- a/include/xmlsec/io.h
+++ b/include/xmlsec/io.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Input uri transform and utility functions.
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_IO_H__
#define __XMLSEC_IO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/xmlIO.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_EXPORT int xmlSecIOInit (void);
XMLSEC_EXPORT void xmlSecIOShutdown (void);
XMLSEC_EXPORT void xmlSecIOCleanupCallbacks (void);
diff --git a/include/xmlsec/keyinfo.h b/include/xmlsec/keyinfo.h
index b2f24d17..1f79284d 100644
--- a/include/xmlsec/keyinfo.h
+++ b/include/xmlsec/keyinfo.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* <dsig:KeyInfo> element processing
@@ -12,10 +12,6 @@
#ifndef __XMLSEC_KEYINFO_H__
#define __XMLSEC_KEYINFO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <time.h>
#include <libxml/tree.h>
@@ -26,6 +22,10 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/****************************************************************************
*
* High-level functions
@@ -155,17 +155,6 @@ typedef enum {
#define XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS 0x00004000
/**
- * XMLSEC_KEYINFO_FLAGS_SKIP_VERIFY_CHAIN:
- *
- * If the flag is set then we wont stop document validation
- * on certificate chain error. Instead of stopping validation
- * we'll just set flag XMLSEC_KEYINFO_ERROR_FLAGS_BROKEN_CHAIN
- * as flags2 value.
- */
-#define XMLSEC_KEYINFO_FLAGS_ALLOW_BROKEN_CHAIN 0x00008000
-#define XMLSEC_KEYINFO_ERROR_FLAGS_BROKEN_CHAIN 0x00000001
-
-/**
* xmlSecKeyInfoCtx:
* @userData: the pointer to user data (xmlsec and xmlsec-crypto
* never touch this).
diff --git a/include/xmlsec/keys.h b/include/xmlsec/keys.h
index 13b37df8..f673128a 100644
--- a/include/xmlsec/keys.h
+++ b/include/xmlsec/keys.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Keys.
@@ -11,16 +11,15 @@
#ifndef __XMLSEC_KEYS_H__
#define __XMLSEC_KEYS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <time.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/list.h>
#include <xmlsec/keysdata.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
/**
* xmlSecKeyUsage:
@@ -32,29 +31,28 @@ typedef unsigned int xmlSecKeyUsage;
/**
* xmlSecKeyUsageSign:
*
- * Key can be used in any way.
-
+ * Key for signing.
*/
#define xmlSecKeyUsageSign 0x00000001
/**
* xmlSecKeyUsageVerify:
*
- * Key for signing.
+ * Key for signature verification.
*/
#define xmlSecKeyUsageVerify 0x00000002
/**
* xmlSecKeyUsageEncrypt:
*
- * Key for signature verification.
+ * An encryption key.
*/
#define xmlSecKeyUsageEncrypt 0x00000004
/**
* xmlSecKeyUsageDecrypt:
*
- * An encryption key.
+ * A decryption key.
*/
#define xmlSecKeyUsageDecrypt 0x00000008
@@ -68,7 +66,7 @@ typedef unsigned int xmlSecKeyUsage;
/**
* xmlSecKeyUsageAny:
*
- * A decryption key.
+ * Key can be used in any way.
*/
#define xmlSecKeyUsageAny 0xFFFFFFFF
diff --git a/include/xmlsec/keysdata.h b/include/xmlsec/keysdata.h
index f833a27e..10639aa1 100644
--- a/include/xmlsec/keysdata.h
+++ b/include/xmlsec/keysdata.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Key data.
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_KEYSDATA_H__
#define __XMLSEC_KEYSDATA_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/buffer.h>
#include <xmlsec/list.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/****************************************************************************
*
* Forward declarations
@@ -137,7 +137,7 @@ typedef unsigned int xmlSecKeyDataUsage;
/**
* xmlSecKeyDataType:
*
- * The key data type (public/private, session/permanet, etc.).
+ * The key data type (public/private, session/permanent, etc.).
*/
typedef unsigned int xmlSecKeyDataType;
@@ -378,7 +378,7 @@ typedef int (*xmlSecKeyDataInitMethod) (xmlSecKeyDataPt
/**
* xmlSecKeyDataDuplicateMethod:
* @dst: the pointer to destination key data.
- * @src: the poiniter to source key data.
+ * @src: the pointer to source key data.
*
* Key data specific duplication (copy) method.
*
@@ -829,6 +829,10 @@ struct _xmlSecKeyDataStoreKlass {
#define xmlSecKeyDataStorePtrListId xmlSecKeyDataStorePtrListGetKlass()
XMLSEC_EXPORT xmlSecPtrListId xmlSecKeyDataStorePtrListGetKlass (void);
+#ifdef XMLSEC_PRIVATE
+XMLSEC_EXPORT void xmlSecImportSetPersistKey (void);
+XMLSEC_EXPORT int xmlSecImportGetPersistKey (void);
+#endif
#ifdef __cplusplus
}
diff --git a/include/xmlsec/keysmngr.h b/include/xmlsec/keysmngr.h
index ed0250df..de49d8ed 100644
--- a/include/xmlsec/keysmngr.h
+++ b/include/xmlsec/keysmngr.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Keys Manager
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_KEYSMGMR_H__
#define __XMLSEC_KEYSMGMR_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/list.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysdata.h>
#include <xmlsec/keyinfo.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef const struct _xmlSecKeyKlass xmlSecKeyKlass,
*xmlSecKeyId;
typedef const struct _xmlSecKeyStoreKlass xmlSecKeyStoreKlass,
diff --git a/include/xmlsec/list.h b/include/xmlsec/list.h
index e976402e..46adc8d2 100644
--- a/include/xmlsec/list.h
+++ b/include/xmlsec/list.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* List of pointers.
@@ -11,13 +11,13 @@
#ifndef __XMLSEC_LIST_H__
#define __XMLSEC_LIST_H__
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/buffer.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/buffer.h>
-
typedef const struct _xmlSecPtrListKlass xmlSecPtrListKlass,
*xmlSecPtrListId;
typedef struct _xmlSecPtrList xmlSecPtrList,
@@ -147,7 +147,7 @@ typedef void (*xmlSecPtrDebugDumpItemMethod) (xmlSecPtr ptr,
/**
* xmlSecPtrListKlass:
* @name: the list klass name.
- * @duplicateItem: the duplciate item method.
+ * @duplicateItem: the duplicate item method.
* @destroyItem: the destroy item method.
* @debugDumpItem: the debug dump item method.
* @debugXmlDumpItem: the debug dump item in xml format method.
diff --git a/include/xmlsec/membuf.h b/include/xmlsec/membuf.h
index 0eab2062..c5959c44 100644
--- a/include/xmlsec/membuf.h
+++ b/include/xmlsec/membuf.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Memory buffer transform
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_MEMBUF_H__
#define __XMLSEC_MEMBUF_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/buffer.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Memory Buffer transform
diff --git a/include/xmlsec/mscng/Makefile.am b/include/xmlsec/mscng/Makefile.am
new file mode 100644
index 00000000..3f366cd8
--- /dev/null
+++ b/include/xmlsec/mscng/Makefile.am
@@ -0,0 +1,16 @@
+NULL =
+
+xmlsecmscngincdir = $(includedir)/xmlsec1/xmlsec/mscng
+
+xmlsecmscnginc_HEADERS = \
+app.h \
+certkeys.h \
+crypto.h \
+keysstore.h \
+symbols.h \
+x509.h \
+$(NULL)
+
+install-exec-hook:
+ $(mkinstalldirs) $(DESTDIR)$(xmlsecmscngincdir)
+
diff --git a/include/xmlsec/mscng/app.h b/include/xmlsec/mscng/app.h
new file mode 100644
index 00000000..f1fbf6f8
--- /dev/null
+++ b/include/xmlsec/mscng/app.h
@@ -0,0 +1,100 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_APP_H__
+#define __XMLSEC_MSCNG_APP_H__
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/transforms.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/********************************************************************
+ *
+ * Init/shutdown
+ *
+ ********************************************************************/
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppInit (const char* config);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppShutdown (void);
+XMLSEC_CRYPTO_EXPORT LPCTSTR xmlSecMSCngAppGetCertStoreName (void);
+
+/********************************************************************
+ *
+ * Keys Manager
+ *
+ ********************************************************************/
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrInit (xmlSecKeysMngrPtr mngr);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr,
+ xmlSecKeyPtr key);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrLoad (xmlSecKeysMngrPtr mngr,
+ const char* uri);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrSave (xmlSecKeysMngrPtr mngr,
+ const char* filename,
+ xmlSecKeyDataType type);
+#ifndef XMLSEC_NO_X509
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeysMngrCertLoad (xmlSecKeysMngrPtr mngr,
+ const char *filename,
+ xmlSecKeyDataFormat format,
+ xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeysMngrCertLoadMemory (xmlSecKeysMngrPtr mngr,
+ const xmlSecByte *data,
+ xmlSecSize dataSize,
+ xmlSecKeyDataFormat format,
+ xmlSecKeyDataType type);
+#endif /* XMLSEC_NO_X509 */
+
+
+/********************************************************************
+ *
+ * Keys
+ *
+ ********************************************************************/
+XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppKeyLoad (const char *filename,
+ xmlSecKeyDataFormat format,
+ const char *pwd,
+ void *pwdCallback,
+ void* pwdCallbackCtx);
+XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppKeyLoadMemory (const xmlSecByte *data,
+ xmlSecSize dataSize,
+ xmlSecKeyDataFormat format,
+ const char *pwd,
+ void *pwdCallback,
+ void* pwdCallbackCtx);
+#ifndef XMLSEC_NO_X509
+XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppPkcs12Load (const char *filename,
+ const char *pwd,
+ void* pwdCallback,
+ void* pwdCallbackCtx);
+XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppPkcs12LoadMemory (const xmlSecByte *data,
+ xmlSecSize dataSize,
+ const char *pwd,
+ void* pwdCallback,
+ void* pwdCallbackCtx);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeyCertLoad (xmlSecKeyPtr key,
+ const char* filename,
+ xmlSecKeyDataFormat format);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeyCertLoadMemory (xmlSecKeyPtr key,
+ const xmlSecByte *data,
+ xmlSecSize dataSize,
+ xmlSecKeyDataFormat format);
+#endif /* XMLSEC_NO_X509 */
+
+XMLSEC_CRYPTO_EXPORT void* xmlSecMSCngAppGetDefaultPwdCallback (void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_MSCNG_APP_H__ */
+
diff --git a/include/xmlsec/mscng/certkeys.h b/include/xmlsec/mscng/certkeys.h
new file mode 100644
index 00000000..16461088
--- /dev/null
+++ b/include/xmlsec/mscng/certkeys.h
@@ -0,0 +1,33 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_CERTKEYS_H__
+#define __XMLSEC_MSCNG_CERTKEYS_H__
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecMSCngCertAdopt (PCCERT_CONTEXT pCert,
+ xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT BCRYPT_KEY_HANDLE xmlSecMSCngKeyDataGetPubKey (xmlSecKeyDataPtr data);
+XMLSEC_CRYPTO_EXPORT NCRYPT_KEY_HANDLE xmlSecMSCngKeyDataGetPrivKey(xmlSecKeyDataPtr data);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_MSCNG_PCCERT_CONTEXT_H__ */
+
+
diff --git a/include/xmlsec/mscng/crypto.h b/include/xmlsec/mscng/crypto.h
new file mode 100644
index 00000000..c8afa792
--- /dev/null
+++ b/include/xmlsec/mscng/crypto.h
@@ -0,0 +1,515 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_CRYPTO_H__
+#define __XMLSEC_MSCNG_CRYPTO_H__
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/dl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_mscng(void);
+
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPTSTR xmlSecMSCngConvertUtf8ToTstr(const xmlChar* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCngConvertUtf8ToUnicode(const xmlChar* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCngConvertTstrToUtf8(LPCTSTR str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCngConvertUnicodeToUtf8(LPCWSTR str);
+
+
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size);
+
+/********************************************************************
+ *
+ * Init shutdown
+ *
+ ********************************************************************/
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngInit (void);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngShutdown (void);
+
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysMngrInit (xmlSecKeysMngrPtr mngr);
+
+/********************************************************************
+ *
+ * DSA transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_DSA
+
+/**
+ * xmlSecMSCngKeyDataDsaId:
+ *
+ * The DSA key klass.
+ */
+#define xmlSecMSCngKeyDataDsaId \
+ xmlSecMSCngKeyDataDsaGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataDsaGetKlass(void);
+
+#ifndef XMLSEC_NO_SHA1
+/**
+ * xmlSecMSCngTransformDsaSha1Id:
+ *
+ * The DSA-SHA1 signature transform klass.
+ */
+#define xmlSecMSCngTransformDsaSha1Id \
+ xmlSecMSCngTransformDsaSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformDsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#endif /* XMLSEC_NO_DSA */
+
+/********************************************************************
+ *
+ * RSA transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_RSA
+
+/**
+ * xmlSecMSCngKeyDataRsaId:
+ *
+ * The RSA key klass.
+ */
+#define xmlSecMSCngKeyDataRsaId \
+ xmlSecMSCngKeyDataRsaGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataRsaGetKlass(void);
+
+#ifndef XMLSEC_NO_MD5
+/**
+ * xmlSecMSCngTransformRsaMd5Id:
+ *
+ * The RSA-MD5 signature transform klass.
+ */
+#define xmlSecMSCngTransformRsaMd5Id \
+ xmlSecMSCngTransformRsaMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+/**
+ * xmlSecMSCngTransformRsaSha1Id:
+ *
+ * The RSA-SHA1 signature transform klass.
+ */
+#define xmlSecMSCngTransformRsaSha1Id \
+ xmlSecMSCngTransformRsaSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecMSCngTransformRsaSha256Id:
+ *
+ * The RSA-SHA256 signature transform klass.
+ */
+#define xmlSecMSCngTransformRsaSha256Id \
+ xmlSecMSCngTransformRsaSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecMSCngTransformRsaSha384Id:
+ *
+ * The RSA-SHA384 signature transform klass.
+ */
+#define xmlSecMSCngTransformRsaSha384Id \
+ xmlSecMSCngTransformRsaSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecMSCngTransformRsaSha512Id:
+ *
+ * The RSA-SHA512 signature transform klass.
+ */
+#define xmlSecMSCngTransformRsaSha512Id \
+ xmlSecMSCngTransformRsaSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
+
+/**
+ * xmlSecMSCngTransformRsaPkcs1Id:
+ *
+ * The RSA PKCS1 key transport transform klass.
+ */
+#define xmlSecMSCngTransformRsaPkcs1Id \
+ xmlSecMSCngTransformRsaPkcs1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaPkcs1GetKlass(void);
+
+/**
+ * xmlSecMSCngTransformRsaOaepId:
+ *
+ * The RSA OAEP key transport transform klass.
+ */
+#define xmlSecMSCngTransformRsaOaepId \
+ xmlSecMSCngTransformRsaOaepGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaOaepGetKlass(void);
+
+#endif /* XMLSEC_NO_RSA */
+
+/********************************************************************
+ *
+ * ECDSA transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_ECDSA
+
+/**
+ * xmlSecMSCngKeyDataEcdsaId:
+ *
+ * The ECDSA key klass.
+ */
+#define xmlSecMSCngKeyDataEcdsaId \
+ xmlSecMSCngKeyDataEcdsaGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataEcdsaGetKlass(void);
+
+#ifndef XMLSEC_NO_SHA1
+/**
+ * xmlSecMSCngTransformEcdsaSha1Id:
+ *
+ * The ECDSA-SHA1 signature transform klass.
+ */
+#define xmlSecMSCngTransformEcdsaSha1Id \
+ xmlSecMSCngTransformEcdsaSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecMSCngTransformEcdsaSha256Id:
+ *
+ * The ECDSA-SHA256 signature transform klass.
+ */
+#define xmlSecMSCngTransformEcdsaSha256Id \
+ xmlSecMSCngTransformEcdsaSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecMSCngTransformEcdsaSha384Id:
+ *
+ * The ECDSA-SHA384 signature transform klass.
+ */
+#define xmlSecMSCngTransformEcdsaSha384Id \
+ xmlSecMSCngTransformEcdsaSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecMSCngTransformEcdsaSha512Id:
+ *
+ * The ECDSA-SHA512 signature transform klass.
+ */
+#define xmlSecMSCngTransformEcdsaSha512Id \
+ xmlSecMSCngTransformEcdsaSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
+
+/********************************************************************
+ *
+ * DES transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_DES
+
+/**
+ * xmlSecMSCngKeyDataDesId:
+ *
+ * The DES key data klass.
+ */
+#define xmlSecMSCngKeyDataDesId \
+ xmlSecMSCngKeyDataDesGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataDesGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformDes3CbcId:
+ *
+ * The DES3 CBC cipher transform klass.
+ */
+#define xmlSecMSCngTransformDes3CbcId \
+ xmlSecMSCngTransformDes3CbcGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformDes3CbcGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformKWDes3Id:
+ *
+ * The DES3 KW transform klass.
+ */
+#define xmlSecMSCngTransformKWDes3Id \
+ xmlSecMSCngTransformKWDes3GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWDes3GetKlass(void);
+
+#endif /* XMLSEC_NO_DES */
+
+/********************************************************************
+ *
+ * HMAC transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_HMAC
+
+/**
+ * xmlSecMSCngKeyDataHmacId:
+ *
+ * The HMAC key klass.
+ */
+#define xmlSecMSCngKeyDataHmacId \
+ xmlSecMSCngKeyDataHmacGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataHmacGetKlass(void);
+
+#ifndef XMLSEC_NO_MD5
+/**
+ * xmlSecMSCngTransformHmacMd5Id:
+ *
+ * The HMAC-MD5 signature transform klass.
+ */
+#define xmlSecMSCngTransformHmacMd5Id \
+ xmlSecMSCngTransformHmacMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+/**
+ * xmlSecMSCngTransformHmacSha1Id:
+ *
+ * The HMAC-SHA1 signature transform klass.
+ */
+#define xmlSecMSCngTransformHmacSha1Id \
+ xmlSecMSCngTransformHmacSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecMSCngTransformHmacSha256Id:
+ *
+ * The HMAC-SHA256 signature transform klass.
+ */
+#define xmlSecMSCngTransformHmacSha256Id \
+ xmlSecMSCngTransformHmacSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecMSCngTransformHmacSha384Id:
+ *
+ * The HMAC-SHA384 signature transform klass.
+ */
+#define xmlSecMSCngTransformHmacSha384Id \
+ xmlSecMSCngTransformHmacSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecMSCngTransformHmacSha512Id:
+ *
+ * The HMAC-SHA512 signature transform klass.
+ */
+#define xmlSecMSCngTransformHmacSha512Id \
+ xmlSecMSCngTransformHmacSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_HMAC */
+
+/********************************************************************
+ *
+ * MD5 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_MD5
+/**
+ * xmlSecMSCngTransformMd5Id:
+ *
+ * The MD5 digest transform klass.
+ */
+#define xmlSecMSCngTransformMd5Id \
+ xmlSecMSCngTransformMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
+
+/********************************************************************
+ *
+ * SHA1 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA1
+/**
+ * xmlSecMSCngTransformSha1Id:
+ *
+ * The SHA1 digest transform klass.
+ */
+#define xmlSecMSCngTransformSha1Id \
+ xmlSecMSCngTransformSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+/********************************************************************
+ *
+ * SHA256 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecMSCngTransformSha256Id:
+ *
+ * The SHA256 digest transform klass.
+ */
+#define xmlSecMSCngTransformSha256Id \
+ xmlSecMSCngTransformSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+/********************************************************************
+ *
+ * SHA384 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecMSCngTransformSha384Id:
+ *
+ * The SHA384 digest transform klass.
+ */
+#define xmlSecMSCngTransformSha384Id \
+ xmlSecMSCngTransformSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+/********************************************************************
+ *
+ * SHA512 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecMSCngTransformSha512Id:
+ *
+ * The SHA512 digest transform klass.
+ */
+#define xmlSecMSCngTransformSha512Id \
+ xmlSecMSCngTransformSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
+
+/********************************************************************
+ *
+ * AES transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_AES
+/**
+ * xmlSecMSCngKeyDataAesId:
+ *
+ * The AES key data klass.
+ */
+#define xmlSecMSCngKeyDataAesId \
+ xmlSecMSCngKeyDataAesGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataAesGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes128CbcId:
+ *
+ * The AES128 CBC cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes128CbcId \
+ xmlSecMSCngTransformAes128CbcGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes128CbcGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes192CbcId:
+ *
+ * The AES192 CBC cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes192CbcId \
+ xmlSecMSCngTransformAes192CbcGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes192CbcGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes256CbcId:
+ *
+ * The AES256 CBC cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes256CbcId \
+ xmlSecMSCngTransformAes256CbcGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes256CbcGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes128GcmId:
+ *
+ * The AES128 GCM cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes128GcmId \
+ xmlSecMSCngTransformAes128GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes128GcmGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes192GcmId:
+ *
+ * The AES192 GCM cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes192GcmId \
+ xmlSecMSCngTransformAes192GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes192GcmGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformAes256GcmId:
+ *
+ * The AES256 GCM cipher transform klass.
+ */
+#define xmlSecMSCngTransformAes256GcmId \
+ xmlSecMSCngTransformAes256GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes256GcmGetKlass(void);
+
+/**
+ * xmlSecMSCngTransformKWAes128Id:
+ *
+ * The AES 128 key wrap transform klass.
+ */
+#define xmlSecMSCngTransformKWAes128Id \
+ xmlSecMSCngTransformKWAes128GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes128GetKlass(void);
+
+/**
+ * xmlSecMSCngTransformKWAes192Id:
+ *
+ * The AES 192 key wrap transform klass.
+ */
+#define xmlSecMSCngTransformKWAes192Id \
+ xmlSecMSCngTransformKWAes192GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes192GetKlass(void);
+
+/**
+ * xmlSecMSCngTransformKWAes256Id:
+ *
+ * The AES 256 key wrap transform klass.
+ */
+#define xmlSecMSCngTransformKWAes256Id \
+ xmlSecMSCngTransformKWAes256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes256GetKlass(void);
+#endif /* XMLSEC_NO_AES */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_MSCNG_CRYPTO_H__ */
diff --git a/include/xmlsec/mscng/keysstore.h b/include/xmlsec/mscng/keysstore.h
new file mode 100644
index 00000000..20a4eb13
--- /dev/null
+++ b/include/xmlsec/mscng/keysstore.h
@@ -0,0 +1,41 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_KEYSSTORE_H__
+#define __XMLSEC_MSCNG_KEYSSTORE_H__
+
+#include <xmlsec/xmlsec.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * xmlSecMSCngKeysStoreId:
+ *
+ * A MSCng keys store klass id.
+ */
+#define xmlSecMSCngKeysStoreId xmlSecMSCngKeysStoreGetKlass()
+
+XMLSEC_CRYPTO_EXPORT xmlSecKeyStoreId xmlSecMSCngKeysStoreGetKlass(void);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreAdoptKey(xmlSecKeyStorePtr store,
+ xmlSecKeyPtr key);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreLoad (xmlSecKeyStorePtr store,
+ const char *uri,
+ xmlSecKeysMngrPtr keysMngr);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreSave (xmlSecKeyStorePtr store,
+ const char *filename,
+ xmlSecKeyDataType type);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_MSCNG_PCCERT_CONTEXT_H__ */
+
+
diff --git a/include/xmlsec/mscng/symbols.h b/include/xmlsec/mscng/symbols.h
new file mode 100644
index 00000000..07fc0ef1
--- /dev/null
+++ b/include/xmlsec/mscng/symbols.h
@@ -0,0 +1,125 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_SYMBOLS_H__
+#define __XMLSEC_MSCNG_SYMBOLS_H__
+
+#if !defined(IN_XMLSEC) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING)
+#error To disable dynamic loading of xmlsec-crypto libraries undefine XMLSEC_CRYPTO_DYNAMIC_LOADING
+#endif /* !defined(IN_XMLSEC) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING) */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifdef XMLSEC_CRYPTO_MSCNG
+
+/********************************************************************
+ *
+ * Crypto Init/shutdown
+ *
+ ********************************************************************/
+#define xmlSecCryptoInit xmlSecMSCngInit
+#define xmlSecCryptoShutdown xmlSecMSCngShutdown
+
+#define xmlSecCryptoKeysMngrInit xmlSecMSCngKeysMngrInit
+
+/********************************************************************
+ *
+ * Key data ids
+ *
+ ********************************************************************/
+#define xmlSecKeyDataAesId xmlSecMSCngKeyDataAesId
+#define xmlSecKeyDataDesId xmlSecMSCngKeyDataDesId
+#define xmlSecKeyDataDsaId xmlSecMSCngKeyDataDsaId
+#define xmlSecKeyDataEcdsaId xmlSecMSCngKeyDataEcdsaId
+#define xmlSecKeyDataHmacId xmlSecMSCngKeyDataHmacId
+#define xmlSecKeyDataRsaId xmlSecMSCngKeyDataRsaId
+#define xmlSecKeyDataX509Id xmlSecMSCngKeyDataX509Id
+#define xmlSecKeyDataRawX509CertId xmlSecMSCngKeyDataRawX509CertId
+
+/********************************************************************
+ *
+ * Key data store ids
+ *
+ ********************************************************************/
+#define xmlSecX509StoreId xmlSecMSCngX509StoreId
+
+/********************************************************************
+ *
+ * Crypto transforms ids
+ *
+ ********************************************************************/
+#define xmlSecTransformAes128CbcId xmlSecMSCngTransformAes128CbcId
+#define xmlSecTransformAes192CbcId xmlSecMSCngTransformAes192CbcId
+#define xmlSecTransformAes256CbcId xmlSecMSCngTransformAes256CbcId
+#define xmlSecTransformAes128GcmId xmlSecMSCngTransformAes128GcmId
+#define xmlSecTransformAes192GcmId xmlSecMSCngTransformAes192GcmId
+#define xmlSecTransformAes256GcmId xmlSecMSCngTransformAes256GcmId
+#define xmlSecTransformKWAes128Id xmlSecMSCngTransformKWAes128Id
+#define xmlSecTransformKWAes192Id xmlSecMSCngTransformKWAes192Id
+#define xmlSecTransformKWAes256Id xmlSecMSCngTransformKWAes256Id
+#define xmlSecTransformDes3CbcId xmlSecMSCngTransformDes3CbcId
+#define xmlSecTransformKWDes3Id xmlSecMSCngTransformKWDes3Id
+#define xmlSecTransformDsaSha1Id xmlSecMSCngTransformDsaSha1Id
+#define xmlSecTransformDsaSha256Id xmlSecMSCngTransformDsaSha256Id
+#define xmlSecTransformEcdsaSha1Id xmlSecMSCngTransformEcdsaSha1Id
+#define xmlSecTransformEcdsaSha224Id xmlSecMSCngTransformEcdsaSha224Id
+#define xmlSecTransformEcdsaSha256Id xmlSecMSCngTransformEcdsaSha256Id
+#define xmlSecTransformEcdsaSha384Id xmlSecMSCngTransformEcdsaSha384Id
+#define xmlSecTransformEcdsaSha512Id xmlSecMSCngTransformEcdsaSha512Id
+#define xmlSecTransformHmacMd5Id xmlSecMSCngTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id xmlSecMSCngTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id xmlSecMSCngTransformHmacSha1Id
+#define xmlSecTransformHmacSha224Id xmlSecMSCngTransformHmacSha224Id
+#define xmlSecTransformHmacSha256Id xmlSecMSCngTransformHmacSha256Id
+#define xmlSecTransformHmacSha384Id xmlSecMSCngTransformHmacSha384Id
+#define xmlSecTransformHmacSha512Id xmlSecMSCngTransformHmacSha512Id
+#define xmlSecTransformMd5Id xmlSecMSCngTransformMd5Id
+#define xmlSecTransformRipemd160Id xmlSecMSCngTransformRipemd160Id
+#define xmlSecTransformRsaSha1Id xmlSecMSCngTransformRsaSha1Id
+#define xmlSecTransformRsaSha224Id xmlSecMSCngTransformRsaSha224Id
+#define xmlSecTransformRsaSha256Id xmlSecMSCngTransformRsaSha256Id
+#define xmlSecTransformRsaSha384Id xmlSecMSCngTransformRsaSha384Id
+#define xmlSecTransformRsaSha512Id xmlSecMSCngTransformRsaSha512Id
+#define xmlSecTransformRsaPkcs1Id xmlSecMSCngTransformRsaPkcs1Id
+#define xmlSecTransformRsaOaepId xmlSecMSCngTransformRsaOaepId
+#define xmlSecTransformSha1Id xmlSecMSCngTransformSha1Id
+#define xmlSecTransformSha224Id xmlSecMSCngTransformSha224Id
+#define xmlSecTransformSha256Id xmlSecMSCngTransformSha256Id
+#define xmlSecTransformSha384Id xmlSecMSCngTransformSha384Id
+#define xmlSecTransformSha512Id xmlSecMSCngTransformSha512Id
+
+/********************************************************************
+ *
+ * High level routines form xmlsec command line utility
+ *
+ ********************************************************************/
+#define xmlSecCryptoAppInit xmlSecMSCngAppInit
+#define xmlSecCryptoAppShutdown xmlSecMSCngAppShutdown
+#define xmlSecCryptoAppDefaultKeysMngrInit xmlSecMSCngAppDefaultKeysMngrInit
+#define xmlSecCryptoAppDefaultKeysMngrAdoptKey xmlSecMSCngAppDefaultKeysMngrAdoptKey
+#define xmlSecCryptoAppDefaultKeysMngrLoad xmlSecMSCngAppDefaultKeysMngrLoad
+#define xmlSecCryptoAppDefaultKeysMngrSave xmlSecMSCngAppDefaultKeysMngrSave
+#define xmlSecCryptoAppKeysMngrCertLoad xmlSecMSCngAppKeysMngrCertLoad
+#define xmlSecCryptoAppKeysMngrCertLoadMemory xmlSecMSCngAppKeysMngrCertLoadMemory
+#define xmlSecCryptoAppKeyLoad xmlSecMSCngAppKeyLoad
+#define xmlSecCryptoAppPkcs12Load xmlSecMSCngAppPkcs12Load
+#define xmlSecCryptoAppKeyCertLoad xmlSecMSCngAppKeyCertLoad
+#define xmlSecCryptoAppKeyLoadMemory xmlSecMSCngAppKeyLoadMemory
+#define xmlSecCryptoAppPkcs12LoadMemory xmlSecMSCngAppPkcs12LoadMemory
+#define xmlSecCryptoAppKeyCertLoadMemory xmlSecMSCngAppKeyCertLoadMemory
+#define xmlSecCryptoAppGetDefaultPwdCallback xmlSecMSCngAppGetDefaultPwdCallback
+
+#endif /* XMLSEC_CRYPTO_MSCNG */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_MSCNG_CRYPTO_H__ */
diff --git a/include/xmlsec/mscng/x509.h b/include/xmlsec/mscng/x509.h
new file mode 100644
index 00000000..6c2f7415
--- /dev/null
+++ b/include/xmlsec/mscng/x509.h
@@ -0,0 +1,83 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_MSCNG_X509_H__
+#define __XMLSEC_MSCNG_X509_H__
+
+#ifndef XMLSEC_NO_X509
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * xmlSecMSCngKeyDataX509Id:
+ *
+ * The MSCng X509 data klass.
+ */
+#define xmlSecMSCngKeyDataX509Id \
+ xmlSecMSCngKeyDataX509GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataX509GetKlass(void);
+
+/**
+ * xmlSecMSCngKeyDataRawX509CertId:
+ *
+ * The MSCng raw X509 certificate klass.
+ */
+#define xmlSecMSCngKeyDataRawX509CertId \
+ xmlSecMSCngKeyDataRawX509CertGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataRawX509CertGetKlass(void);
+
+/**
+ * xmlSecMSCngX509StoreId:
+ *
+ * The MSCng X509 store klass.
+ */
+#define xmlSecMSCngX509StoreId \
+ xmlSecMSCngX509StoreGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataStoreId xmlSecMSCngX509StoreGetKlass(void);
+
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeyDataX509AdoptKeyCert (xmlSecKeyDataPtr data,
+ PCCERT_CONTEXT cert);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeyDataX509AdoptCert (xmlSecKeyDataPtr data,
+ PCCERT_CONTEXT cert);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptCert (xmlSecKeyDataStorePtr store,
+ PCCERT_CONTEXT cert,
+ xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptKeyStore (xmlSecKeyDataStorePtr store,
+ HCERTSTORE keyStore);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptTrustedStore(xmlSecKeyDataStorePtr store,
+ HCERTSTORE trustedStore);
+XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptUntrustedStore(xmlSecKeyDataStorePtr store,
+ HCERTSTORE untrustedStore);
+XMLSEC_CRYPTO_EXPORT PCCERT_CONTEXT xmlSecMSCngX509StoreVerify (xmlSecKeyDataStorePtr store,
+ HCERTSTORE certs,
+ xmlSecKeyInfoCtx* keyInfoCtx);
+PCCERT_CONTEXT xmlSecMSCngX509StoreFindCert (xmlSecKeyDataStorePtr store,
+ xmlChar *subjectName,
+ xmlChar *issuerName,
+ xmlChar *issuerSerial,
+ xmlChar *ski,
+ xmlSecKeyInfoCtx* keyInfoCtx);
+PCCERT_CONTEXT xmlSecMSCngX509FindCertBySubject (HCERTSTORE store,
+ LPTSTR wcSubject,
+ DWORD dwCertEncodingType);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* XMLSEC_NO_X509 */
+
+#endif /* __XMLSEC_MSCNG_X509_H__ */
diff --git a/include/xmlsec/mscrypto/app.h b/include/xmlsec/mscrypto/app.h
index 3d23d0e5..86f7e513 100644
--- a/include/xmlsec/mscrypto/app.h
+++ b/include/xmlsec/mscrypto/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_MSCRYPTO_APP_H__
#define __XMLSEC_MSCRYPTO_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysmngr.h>
@@ -21,6 +17,10 @@ extern "C" {
#include <windows.h>
#include <wincrypt.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
diff --git a/include/xmlsec/mscrypto/certkeys.h b/include/xmlsec/mscrypto/certkeys.h
index 1f285656..817e3f44 100644
--- a/include/xmlsec/mscrypto/certkeys.h
+++ b/include/xmlsec/mscrypto/certkeys.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_MSCRYPTO_CERTKEYS_H__
#define __XMLSEC_MSCRYPTO_CERTKEYS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <windows.h>
#include <wincrypt.h>
@@ -20,6 +16,9 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_CRYPTO_EXPORT PCCERT_CONTEXT xmlSecMSCryptoKeyDataGetCert (xmlSecKeyDataPtr data);
XMLSEC_CRYPTO_EXPORT HCRYPTKEY xmlSecMSCryptoKeyDataGetKey (xmlSecKeyDataPtr data,
@@ -31,6 +30,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecMSCryptoCertAdopt (PCCERT_
XMLSEC_CRYPTO_EXPORT HCRYPTPROV xmlSecMSCryptoKeyDataGetMSCryptoProvider(xmlSecKeyDataPtr data);
XMLSEC_CRYPTO_EXPORT DWORD xmlSecMSCryptoKeyDataGetMSCryptoKeySpec(xmlSecKeyDataPtr data);
+XMLSEC_CRYPTO_EXPORT PCRYPT_KEY_PROV_INFO xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo(xmlSecKeyDataPtr data);
#ifdef __cplusplus
diff --git a/include/xmlsec/mscrypto/crypto.h b/include/xmlsec/mscrypto/crypto.h
index 5f3142fc..6c5e1fc6 100644
--- a/include/xmlsec/mscrypto/crypto.h
+++ b/include/xmlsec/mscrypto/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_MSCRYPTO_CRYPTO_H__
#define __XMLSEC_MSCRYPTO_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <windows.h>
#include <wincrypt.h>
@@ -21,6 +17,10 @@ extern "C" {
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_mscrypto(void);
/********************************************************************
@@ -33,7 +33,7 @@ XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoShutdown (void);
XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoKeysMngrInit (xmlSecKeysMngrPtr mngr);
XMLSEC_CRYPTO_EXPORT int xmlSecMSCryptoGenerateRandom (xmlSecBufferPtr buffer,
- size_t size);
+ xmlSecSize size);
XMLSEC_CRYPTO_EXPORT void xmlSecMSCryptoErrorsDefaultCallback(const char* file,
int line,
@@ -48,16 +48,16 @@ XMLSEC_CRYPTO_EXPORT void xmlSecMSCryptoErrorsDefaultCallback(cons
* String encoding conversion utils
*
******************************************************************************/
-XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertLocaleToUnicode(const char* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertLocaleToUnicode(const char* str);
-XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertUtf8ToUnicode (const xmlChar* str);
-XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertUnicodeToUtf8 (LPCWSTR str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCryptoConvertUtf8ToUnicode (const xmlChar* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertUnicodeToUtf8 (LPCWSTR str);
-XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertLocaleToUtf8 (const char* str);
-XMLSEC_CRYPTO_EXPORT char* xmlSecMSCryptoConvertUtf8ToLocale (const xmlChar* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertLocaleToUtf8 (const char* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT char* xmlSecMSCryptoConvertUtf8ToLocale (const xmlChar* str);
-XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertTstrToUtf8 (LPCTSTR str);
-XMLSEC_CRYPTO_EXPORT LPTSTR xmlSecMSCryptoConvertUtf8ToTstr (const xmlChar* str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCryptoConvertTstrToUtf8 (LPCTSTR str);
+XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPTSTR xmlSecMSCryptoConvertUtf8ToTstr (const xmlChar* str);
/********************************************************************
@@ -114,6 +114,52 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2001GostR3411_
#endif /* XMLSEC_NO_GOST */
+#ifndef XMLSEC_NO_GOST2012
+
+/********************************************************************
+ *
+ * GOST R 34.10-2012 transform
+ *
+ *******************************************************************/
+
+/**
+ * xmlSecMSCryptoKeyDataGost2012_256Id:
+ *
+ * The GOST R 34.10-2012 256 key klass
+ */
+#define xmlSecMSCryptoKeyDataGost2012_256Id \
+ xmlSecMSCryptoKeyDataGost2012_256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataGost2012_256GetKlass (void);
+
+/**
+ * xmlSecMSCryptoKeyDataGost2012_512Id:
+ *
+ * The GOST R 34.10-2012 512 key klass
+ */
+#define xmlSecMSCryptoKeyDataGost2012_512Id \
+ xmlSecMSCryptoKeyDataGost2012_512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCryptoKeyDataGost2012_512GetKlass (void);
+
+/**
+ * xmlSecMSCryptoTransformGost2012_256Id:
+ *
+ * The GOST R 34.10-2012 - GOST R 3411-2012 256 bit signature transform klass.
+ */
+#define xmlSecMSCryptoTransformGost2012_256Id \
+ xmlSecMSCryptoTransformGost2012_256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2012_256GetKlass(void);
+
+/**
+ * xmlSecMSCryptoTransformGost2012_512Id:
+ *
+ * The GOST R 34.10-2012 - GOST R 3411-2012 512 bit signature transform klass.
+ */
+#define xmlSecMSCryptoTransformGost2012_512Id \
+ xmlSecMSCryptoTransformGost2012_512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGost2012_512GetKlass(void);
+
+#endif /* XMLSEC_NO_GOST2012 */
+
/********************************************************************
*
* RSA transforms
@@ -315,8 +361,38 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformSha512GetKlass(voi
#define xmlSecMSCryptoTransformGostR3411_94Id \
xmlSecMSCryptoTransformGostR3411_94GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_94GetKlass(void);
+
#endif /* XMLSEC_NO_GOST */
+#ifndef XMLSEC_NO_GOST2012
+
+/********************************************************************
+ *
+ * GOST R 34.10-2012 256 and 512-bit digests
+ *
+ *******************************************************************/
+
+/**
+ * xmlSecMSCryptoTransformGostR3411_2012_256Id:
+ *
+ * The GOST R 34.11-2012 256 digest transform klass.
+ */
+#define xmlSecMSCryptoTransformGostR3411_2012_256Id \
+ xmlSecMSCryptoTransformGostR3411_2012_256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_2012_256GetKlass(void);
+
+/**
+ * xmlSecMSCryptoTransformGostR3411_2012_512Id:
+ *
+ * The GOST R 34.11-2012 512 digest transform klass.
+ */
+#define xmlSecMSCryptoTransformGostR3411_2012_512Id \
+ xmlSecMSCryptoTransformGostR3411_2012_512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCryptoTransformGostR3411_2012_512GetKlass(void);
+
+#endif /* XMLSEC_NO_GOST2012 */
+
+
/********************************************************************
*
* AES transforms
diff --git a/include/xmlsec/mscrypto/keysstore.h b/include/xmlsec/mscrypto/keysstore.h
index afaf6a95..f66f7f4c 100644
--- a/include/xmlsec/mscrypto/keysstore.h
+++ b/include/xmlsec/mscrypto/keysstore.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* MSCrypto keys store
*
@@ -11,12 +11,12 @@
#ifndef __XMLSEC_MSCRYPTO_KEYSSTORE_H__
#define __XMLSEC_MSCRYPTO_KEYSSTORE_H__
+#include <xmlsec/xmlsec.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#include <xmlsec/xmlsec.h>
-
/****************************************************************************
*
* MSCrypto Keys Store
diff --git a/include/xmlsec/mscrypto/symbols.h b/include/xmlsec/mscrypto/symbols.h
index 17000ccf..6d83a34a 100644
--- a/include/xmlsec/mscrypto/symbols.h
+++ b/include/xmlsec/mscrypto/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -65,6 +65,8 @@ extern "C" {
#define xmlSecTransformKWDes3Id xmlSecMSCryptoTransformKWDes3Id
#define xmlSecTransformDsaSha1Id xmlSecMSCryptoTransformDsaSha1Id
#define xmlSecTransformGost2001GostR3411_94Id xmlSecMSCryptoTransformGost2001GostR3411_94Id
+#define xmlSecTransformGost2012_256Id xmlSecMSCryptoTransformGost2012_256Id
+#define xmlSecTransformGost2012_512Id xmlSecMSCryptoTransformGost2012_512Id
#define xmlSecTransformHmacMd5Id xmlSecMSCryptoTransformHmacMd5Id
#define xmlSecTransformHmacRipemd160Id xmlSecMSCryptoTransformHmacRipemd160Id
#define xmlSecTransformHmacSha1Id xmlSecMSCryptoTransformHmacSha1Id
@@ -80,6 +82,8 @@ extern "C" {
#define xmlSecTransformSha384Id xmlSecMSCryptoTransformSha384Id
#define xmlSecTransformSha512Id xmlSecMSCryptoTransformSha512Id
#define xmlSecTransformGostR3411_94Id xmlSecMSCryptoTransformGostR3411_94Id
+#define xmlSecTransformGostR3411_2012_256Id xmlSecMSCryptoTransformGostR3411_2012_256Id
+#define xmlSecTransformGostR3411_2012_512Id xmlSecMSCryptoTransformGostR3411_2012_512Id
/********************************************************************
*
diff --git a/include/xmlsec/mscrypto/x509.h b/include/xmlsec/mscrypto/x509.h
index 60066bda..cb436097 100644
--- a/include/xmlsec/mscrypto/x509.h
+++ b/include/xmlsec/mscrypto/x509.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_MSCRYPTO_X509_H__
#define __XMLSEC_MSCRYPTO_X509_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#ifndef XMLSEC_NO_X509
#include <xmlsec/xmlsec.h>
@@ -22,6 +18,10 @@ extern "C" {
#include <windows.h>
#include <wincrypt.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* xmlSecMSCryptoKeyDataX509Id:
*
@@ -83,10 +83,10 @@ XMLSEC_CRYPTO_EXPORT void xmlSecMSCryptoX509StoreEnableSystemTrust
-#endif /* XMLSEC_NO_X509 */
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
+#endif /* XMLSEC_NO_X509 */
+
#endif /* __XMLSEC_MSCRYPTO_X509_H__ */
diff --git a/include/xmlsec/nodeset.h b/include/xmlsec/nodeset.h
index 3c0cfc72..92ea1d13 100644
--- a/include/xmlsec/nodeset.h
+++ b/include/xmlsec/nodeset.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Enchanced nodes Set
@@ -11,15 +11,15 @@
#ifndef __XMLSEC_NODESET_H__
#define __XMLSEC_NODESET_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/xpath.h>
#include <xmlsec/xmlsec.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef struct _xmlSecNodeSet xmlSecNodeSet, *xmlSecNodeSetPtr;
/**
@@ -34,7 +34,7 @@ typedef struct _xmlSecNodeSet xmlSecNodeSet, *xmlSecNodeSetPtr;
* @xmlSecNodeSetTreeWithoutCommentsInvert: nodes set = all document nodes
* minus (nodes in the list and all their subtress
* plus all comment nodes).
- * @xmlSecNodeSetList: nodes set = all nodes in the chidren list of nodes sets.
+ * @xmlSecNodeSetList: nodes set = all nodes in the children list of nodes sets.
*
* The basic nodes sets types.
*/
diff --git a/include/xmlsec/nss/app.h b/include/xmlsec/nss/app.h
index aeac55ed..e53ab4d6 100644
--- a/include/xmlsec/nss/app.h
+++ b/include/xmlsec/nss/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -10,10 +10,6 @@
#ifndef __XMLSEC_NSS_APP_H__
#define __XMLSEC_NSS_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <nspr.h>
#include <nss.h>
@@ -22,6 +18,10 @@ extern "C" {
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
diff --git a/include/xmlsec/nss/bignum.h b/include/xmlsec/nss/bignum.h
index 6147d20a..97848b12 100644
--- a/include/xmlsec/nss/bignum.h
+++ b/include/xmlsec/nss/bignum.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* Reading/writing BIGNUM values
*
@@ -11,10 +11,6 @@
#ifndef __XMLSEC_NSS_BIGNUM_H__
#define __XMLSEC_NSS_BIGNUM_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <nspr.h>
@@ -22,6 +18,10 @@ extern "C" {
#include <xmlsec/xmlsec.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT SECItem* xmlSecNssNodeGetBigNumValue (PRArenaPool *arena,
const xmlNodePtr cur,
SECItem *a);
diff --git a/include/xmlsec/nss/crypto.h b/include/xmlsec/nss/crypto.h
index 87f31bf1..223c1d85 100644
--- a/include/xmlsec/nss/crypto.h
+++ b/include/xmlsec/nss/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -10,10 +10,6 @@
#ifndef __XMLSEC_NSS_CRYPTO_H__
#define __XMLSEC_NSS_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <nspr.h>
#include <nss.h>
#include <pk11func.h>
@@ -23,6 +19,10 @@ extern "C" {
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_nss(void);
/********************************************************************
@@ -175,6 +175,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformKWDes3GetKlass(void);
xmlSecNssKeyDataDsaGetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataDsaGetKlass (void);
+#ifndef XMLSEC_NO_SHA1
/**
* xmlSecNssTransformDsaSha1Id:
*
@@ -183,12 +184,102 @@ XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataDsaGetKlass (void);
#define xmlSecNssTransformDsaSha1Id \
xmlSecNssTransformDsaSha1GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformDsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecNssTransformDsaSha256Id:
+ *
+ * The DSA SHA256 signature transform klass.
+ */
+#define xmlSecNssTransformDsaSha256Id \
+ xmlSecNssTransformDsaSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformDsaSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
#endif /* XMLSEC_NO_DSA */
/********************************************************************
*
+ * ECDSA transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_ECDSA
+
+/**
+ * xmlSecNssKeyDataEcdsaId:
+ *
+ * The ECDSA key klass.
+ */
+#define xmlSecNssKeyDataEcdsaId xmlSecNssKeyDataEcdsaGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataEcdsaGetKlass(void);
+
+#ifndef XMLSEC_NO_SHA1
+
+/**
+ * xmlSecNssTransformEcdsaSha1Id:
+ *
+ * The ECDSA SHA1 signature transform klass.
+ */
+#define xmlSecNssTransformEcdsaSha1Id xmlSecNssTransformEcdsaSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformEcdsaSha1GetKlass(void);
+
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+
+/**
+ * xmlSecNssTransformEcdsaSha224Id:
+ *
+ * The ECDSA SHA224 signature transform klass.
+ */
+#define xmlSecNssTransformEcdsaSha224Id xmlSecNssTransformEcdsaSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformEcdsaSha224GetKlass(void);
+
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+
+/**
+ * xmlSecNssTransformEcdsaSha256Id:
+ *
+ * The ECDSA SHA256 signature transform klass.
+ */
+#define xmlSecNssTransformEcdsaSha256Id xmlSecNssTransformEcdsaSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformEcdsaSha256GetKlass(void);
+
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+
+/**
+ * xmlSecNssTransformEcdsaSha384Id:
+ *
+ * The ECDSA SHA384 signature transform klass.
+ */
+#define xmlSecNssTransformEcdsaSha384Id xmlSecNssTransformEcdsaSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformEcdsaSha384GetKlass(void);
+
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+
+/**
+ * xmlSecNssTransformEcdsaSha512Id:
+ *
+ * The ECDSA SHA512 signature transform klass.
+ */
+#define xmlSecNssTransformEcdsaSha512Id xmlSecNssTransformEcdsaSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformEcdsaSha512GetKlass(void);
+
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
+
+
+/********************************************************************
+ *
* HMAC transforms
*
*******************************************************************/
@@ -241,6 +332,17 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacRipemd160GetKlass(v
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecNssTransformHmacSha224Id:
+ *
+ * The HMAC with SHA224 signature transform klass.
+ */
+#define xmlSecNssTransformHmacSha224Id \
+ xmlSecNssTransformHmacSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
/**
* xmlSecNssTransformHmacSha256Id:
@@ -316,6 +418,17 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaMd5GetKlass(void);
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha1GetKlass(void);
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecNssTransformRsaSha224Id:
+ *
+ * The RSA-SHA224 signature transform klass.
+ */
+#define xmlSecNssTransformRsaSha224Id \
+ xmlSecNssTransformRsaSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
/**
* xmlSecNssTransformRsaSha256Id:
@@ -395,6 +508,22 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha1GetKlass (void);
/********************************************************************
*
+ * SHA224 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecNssTransformSha224Id:
+ *
+ * The SHA224 digest transform klass.
+ */
+#define xmlSecNssTransformSha224Id \
+ xmlSecNssTransformSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
+/********************************************************************
+ *
* SHA256 transform
*
*******************************************************************/
diff --git a/include/xmlsec/nss/keysstore.h b/include/xmlsec/nss/keysstore.h
index a2cc289b..04f80289 100644
--- a/include/xmlsec/nss/keysstore.h
+++ b/include/xmlsec/nss/keysstore.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* Nss keys store
*
@@ -11,12 +11,12 @@
#ifndef __XMLSEC_NSS_KEYSSTORE_H__
#define __XMLSEC_NSS_KEYSSTORE_H__
+#include <xmlsec/xmlsec.h>
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#include <xmlsec/xmlsec.h>
-
/****************************************************************************
*
* Nss Keys Store
diff --git a/include/xmlsec/nss/pkikeys.h b/include/xmlsec/nss/pkikeys.h
index cb498482..e501f165 100644
--- a/include/xmlsec/nss/pkikeys.h
+++ b/include/xmlsec/nss/pkikeys.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_NSS_PKIKEYS_H__
#define __XMLSEC_NSS_PKIKEYS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <nspr.h>
#include <nss.h>
@@ -20,6 +16,9 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecNssPKIAdoptKey (SECKEYPrivateKey *privkey,
SECKEYPublicKey *pubkey);
diff --git a/include/xmlsec/nss/symbols.h b/include/xmlsec/nss/symbols.h
index 23653ed6..3cd0f9ce 100644
--- a/include/xmlsec/nss/symbols.h
+++ b/include/xmlsec/nss/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -65,6 +65,9 @@ extern "C" {
#define xmlSecTransformDes3CbcId xmlSecNssTransformDes3CbcId
#define xmlSecTransformKWDes3Id xmlSecNssTransformKWDes3Id
#define xmlSecTransformDsaSha1Id xmlSecNssTransformDsaSha1Id
+#define xmlSecTransformEcdsaSha1Id xmlSecNssTransformEcdsaSha1Id
+#define xmlSecTransformEcdsaSha256Id xmlSecNssTransformEcdsaSha256Id
+#define xmlSecTransformEcdsaSha512Id xmlSecNssTransformEcdsaSha512Id
#define xmlSecTransformHmacMd5Id xmlSecNssTransformHmacMd5Id
#define xmlSecTransformHmacRipemd160Id xmlSecNssTransformHmacRipemd160Id
#define xmlSecTransformHmacSha1Id xmlSecNssTransformHmacSha1Id
diff --git a/include/xmlsec/nss/x509.h b/include/xmlsec/nss/x509.h
index fe5ceb4a..c8bff92d 100644
--- a/include/xmlsec/nss/x509.h
+++ b/include/xmlsec/nss/x509.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_NSS_X509_H__
#define __XMLSEC_NSS_X509_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#ifndef XMLSEC_NO_X509
#include <nspr.h>
@@ -23,6 +19,10 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* xmlSecNssKeyDataX509Id:
*
@@ -82,10 +82,10 @@ XMLSEC_CRYPTO_EXPORT int xmlSecNssX509StoreAdoptCert (xml
xmlSecKeyDataType type);
-#endif /* XMLSEC_NO_X509 */
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
+#endif /* XMLSEC_NO_X509 */
+
#endif /* __XMLSEC_NSS_X509_H__ */
diff --git a/include/xmlsec/openssl/app.h b/include/xmlsec/openssl/app.h
index 5c5325fe..15a78803 100644
--- a/include/xmlsec/openssl/app.h
+++ b/include/xmlsec/openssl/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_OPENSSL_APP_H__
#define __XMLSEC_OPENSSL_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <openssl/pem.h>
#include <openssl/bio.h>
@@ -21,6 +17,10 @@ extern "C" {
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
@@ -60,7 +60,7 @@ XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLAppKeysMngrCertLoadBIO(xmlS
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLAppKeysMngrAddCertsPath(xmlSecKeysMngrPtr mngr,
const char *path);
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLAppKeysMngrAddCertsFile(xmlSecKeysMngrPtr mngr,
- const char *file);
+ const char *filename);
#endif /* XMLSEC_NO_X509 */
diff --git a/include/xmlsec/openssl/bn.h b/include/xmlsec/openssl/bn.h
index 7415a9bd..0e813635 100644
--- a/include/xmlsec/openssl/bn.h
+++ b/include/xmlsec/openssl/bn.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* Reading/writing BIGNUM values
*
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_BN_H__
#define __XMLSEC_BN_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <openssl/bn.h>
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT BIGNUM* xmlSecOpenSSLNodeGetBNValue (const xmlNodePtr cur,
BIGNUM **a);
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLNodeSetBNValue (xmlNodePtr cur,
diff --git a/include/xmlsec/openssl/crypto.h b/include/xmlsec/openssl/crypto.h
index c734c144..1eada05f 100644
--- a/include/xmlsec/openssl/crypto.h
+++ b/include/xmlsec/openssl/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,16 +9,34 @@
#ifndef __XMLSEC_OPENSSL_CRYPTO_H__
#define __XMLSEC_OPENSSL_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
#include <openssl/err.h>
+#ifndef OPENSSL_IS_BORINGSSL
+#include <openssl/opensslconf.h>
+#endif /* OPENSSL_IS_BORINGSSL */
+
+#ifndef XMLSEC_NO_DSA
+#include <openssl/dsa.h>
+#include <openssl/evp.h>
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_ECDSA
+#include <openssl/ecdsa.h>
+#include <openssl/evp.h>
+#endif /* XMLSEC_NO_ECDSA */
+
+#ifndef XMLSEC_NO_RSA
+#include <openssl/rsa.h>
+#include <openssl/evp.h>
+#endif /* XMLSEC_NO_RSA */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_openssl(void);
@@ -39,6 +57,86 @@ XMLSEC_CRYPTO_EXPORT const xmlChar* xmlSecOpenSSLGetDefaultTrustedCertsFolde
/********************************************************************
*
+ * What version of the openssl API do we have? (also see configure.ac)
+ *
+ *******************************************************************/
+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L
+/* LibreSSL decided to take over OpenSSL version 2.0.0, likely will create
+ * issues down the road... */
+#define XMLSEC_OPENSSL_API_100 1
+#elif defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L
+/* LibreSSL 2.7 implements (most of) OpenSSL 1.1 API */
+#define XMLSEC_OPENSSL_API_110 1
+#elif OPENSSL_VERSION_NUMBER >= 0x10100000L
+#define XMLSEC_OPENSSL_API_110 1
+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L
+#define XMLSEC_OPENSSL_API_100 1
+#else /* OPENSSL_VERSION_NUMBER */
+#error "This version of OpenSSL library is not supported"
+#endif /* OPENSSL_VERSION_NUMBER */
+
+/********************************************************************
+ *
+ * What is supported by the openssl?
+ *
+ *******************************************************************/
+#ifdef OPENSSL_NO_AES
+#define XMLSEC_NO_AES 1
+#endif /* OPENSSL_NO_AES */
+
+#ifdef OPENSSL_NO_DES
+#define XMLSEC_NO_DES 1
+#endif /* OPENSSL_NO_DES */
+
+#ifdef OPENSSL_NO_DSA
+#define XMLSEC_NO_DSA 1
+#endif /* OPENSSL_NO_DSA */
+
+#ifdef OPENSSL_NO_ECDSA
+#define XMLSEC_NO_ECDSA 1
+#endif /* OPENSSL_NO_ECDSA */
+
+#ifdef OPENSSL_NO_GOST
+#define XMLSEC_NO_GOST 1
+#define XMLSEC_NO_GOST2012 1
+#endif /* OPENSSL_NO_GOST */
+
+#ifdef OPENSSL_NO_HMAC
+#define XMLSEC_NO_HMAC 1
+#endif /* OPENSSL_NO_HMAC */
+
+#ifdef OPENSSL_NO_MD5
+#define XMLSEC_NO_MD5 1
+#endif /* OPENSSL_NO_MD5 */
+
+#ifdef OPENSSL_NO_RIPEMD160
+#define XMLSEC_NO_RIPEMD160 1
+#endif /* OPENSSL_NO_RIPEMD160 */
+
+#ifdef OPENSSL_NO_RSA
+#define XMLSEC_NO_RSA 1
+#endif /* OPENSSL_NO_RSA */
+
+#ifdef OPENSSL_NO_SHA1
+#define XMLSEC_NO_SHA1 1
+#endif /* OPENSSL_NO_SHA1 */
+
+#ifdef OPENSSL_NO_SHA256
+#define XMLSEC_NO_SHA256 1
+#define XMLSEC_NO_SHA224 1
+#endif /* OPENSSL_NO_SHA256 */
+
+#ifdef OPENSSL_NO_SHA512
+#define XMLSEC_NO_SHA384 1
+#define XMLSEC_NO_SHA512 1
+#endif /* OPENSSL_NO_SHA512 */
+
+#if defined(OPENSSL_NO_X509) || defined(OPENSSL_NO_X509_VERIFY)
+#define XMLSEC_NO_X509 1
+#endif /* defined(OPENSSL_NO_X509) || defined(OPENSSL_NO_X509_VERIFY) */
+
+/********************************************************************
+ *
* AES transforms
*
*******************************************************************/
@@ -82,6 +180,34 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformAes192CbcGetKlass(
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformAes256CbcGetKlass(void);
/**
+* xmlSecOpenSSLTransformAes128GcmId:
+*
+* The AES128 GCM cipher transform klass.
+*/
+#define xmlSecOpenSSLTransformAes128GcmId \
+ xmlSecOpenSSLTransformAes128GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformAes128GcmGetKlass(void);
+
+/**
+* xmlSecOpenSSLTransformAes192GcmId:
+*
+* The AES192 GCM cipher transform klass.
+*/
+#define xmlSecOpenSSLTransformAes192GcmId \
+ xmlSecOpenSSLTransformAes192GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformAes192GcmGetKlass(void);
+
+/**
+* xmlSecOpenSSLTransformAes256GcmId:
+*
+* The AES256 GCM cipher transform klass.
+*/
+#define xmlSecOpenSSLTransformAes256GcmId \
+ xmlSecOpenSSLTransformAes256GcmGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformAes256GcmGetKlass(void);
+
+
+/**
* xmlSecOpenSSLTransformKWAes128Id:
*
* The AES 128 key wrap transform klass.
@@ -153,8 +279,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformKWDes3GetKlass(void
*
*******************************************************************/
#ifndef XMLSEC_NO_DSA
-#include <openssl/dsa.h>
-#include <openssl/evp.h>
/**
* xmlSecOpenSSLKeyDataDsaId:
@@ -201,8 +325,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformDsaSha256GetKlass(v
*
*******************************************************************/
#ifndef XMLSEC_NO_ECDSA
-#include <openssl/ecdsa.h>
-#include <openssl/evp.h>
/**
* xmlSecOpenSSLKeyDataEcdsaId:
@@ -309,7 +431,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGost2001GostR3411_9
* The GOSTR3411_94 signature transform klass.
*/
#define xmlSecOpenSSLTransformGostR3411_94Id \
- xmlSecOpenSSLTransformGostR3411_94GetKlass()
+ xmlSecOpenSSLTransformGostR3411_94GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_94GetKlass(void);
#endif /* XMLSEC_NO_GOST */
@@ -367,7 +489,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3410_2012GostR
* The GOST R 34.11-2012 256 bit hash transform klass.
*/
#define xmlSecOpenSSLTransformGostR3411_2012_256Id \
- xmlSecOpenSSLTransformGostR3411_2012_256GetKlass()
+ xmlSecOpenSSLTransformGostR3411_2012_256GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_2012_256GetKlass(void);
@@ -377,7 +499,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_2012_256G
* The GOST R 34.11-2012 512 bit hash transform klass.
*/
#define xmlSecOpenSSLTransformGostR3411_2012_512Id \
- xmlSecOpenSSLTransformGostR3411_2012_512GetKlass()
+ xmlSecOpenSSLTransformGostR3411_2012_512GetKlass()
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformGostR3411_2012_512GetKlass(void);
#endif /* XMLSEC_NO_GOST2012 */
@@ -522,8 +644,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRipemd160GetKlass(v
*
*******************************************************************/
#ifndef XMLSEC_NO_RSA
-#include <openssl/rsa.h>
-#include <openssl/evp.h>
/**
* xmlSecOpenSSLKeyDataRsaId:
@@ -721,26 +841,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha512GetKlass(void
#endif /* XMLSEC_NO_SHA512 */
-
-/**************************************************************
- *
- * Error constants for OpenSSL
- *
- *************************************************************/
-/**
- * XMLSEC_OPENSSL_ERRORS_LIB:
- *
- * Macro. The XMLSec library klass for OpenSSL errors reporting functions.
- */
-#define XMLSEC_OPENSSL_ERRORS_LIB (ERR_LIB_USER + 57)
-
-/**
- * XMLSEC_OPENSSL_ERRORS_FUNCTION:
- *
- * Macro. The XMLSec library functions OpenSSL errors reporting functions.
- */
-#define XMLSEC_OPENSSL_ERRORS_FUNCTION 0
-
XMLSEC_CRYPTO_EXPORT void xmlSecOpenSSLErrorsDefaultCallback (const char* file,
int line,
const char* func,
@@ -749,6 +849,7 @@ XMLSEC_CRYPTO_EXPORT void xmlSecOpenSSLErrorsDefaultCallback (const c
int reason,
const char* msg);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/xmlsec/openssl/evp.h b/include/xmlsec/openssl/evp.h
index 2f964e80..318ed301 100644
--- a/include/xmlsec/openssl/evp.h
+++ b/include/xmlsec/openssl/evp.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_OPENSSL_EVP_H__
#define __XMLSEC_OPENSSL_EVP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <openssl/evp.h>
#include <xmlsec/xmlsec.h>
@@ -21,6 +17,9 @@ extern "C" {
#include <xmlsec/openssl/crypto.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLEvpKeyDataAdoptEvp (xmlSecKeyDataPtr data,
EVP_PKEY* pKey);
diff --git a/include/xmlsec/openssl/symbols.h b/include/xmlsec/openssl/symbols.h
index 74a801ac..90bcc046 100644
--- a/include/xmlsec/openssl/symbols.h
+++ b/include/xmlsec/openssl/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -58,6 +58,9 @@ extern "C" {
#define xmlSecTransformAes128CbcId xmlSecOpenSSLTransformAes128CbcId
#define xmlSecTransformAes192CbcId xmlSecOpenSSLTransformAes192CbcId
#define xmlSecTransformAes256CbcId xmlSecOpenSSLTransformAes256CbcId
+#define xmlSecTransformAes128GcmId xmlSecOpenSSLTransformAes128GcmId
+#define xmlSecTransformAes192GcmId xmlSecOpenSSLTransformAes192GcmId
+#define xmlSecTransformAes256GcmId xmlSecOpenSSLTransformAes256GcmId
#define xmlSecTransformKWAes128Id xmlSecOpenSSLTransformKWAes128Id
#define xmlSecTransformKWAes192Id xmlSecOpenSSLTransformKWAes192Id
#define xmlSecTransformKWAes256Id xmlSecOpenSSLTransformKWAes256Id
diff --git a/include/xmlsec/openssl/x509.h b/include/xmlsec/openssl/x509.h
index 0163c231..0d9f8c80 100644
--- a/include/xmlsec/openssl/x509.h
+++ b/include/xmlsec/openssl/x509.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,10 +9,6 @@
#ifndef __XMLSEC_OPENSSL_X509_H__
#define __XMLSEC_OPENSSL_X509_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#ifndef XMLSEC_NO_X509
#include <openssl/x509.h>
@@ -21,6 +17,10 @@ extern "C" {
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* XMLSEC_STACK_OF_X509:
*
@@ -98,12 +98,12 @@ XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLX509StoreAdoptCrl (xmlSecK
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLX509StoreAddCertsPath(xmlSecKeyDataStorePtr store,
const char* path);
XMLSEC_CRYPTO_EXPORT int xmlSecOpenSSLX509StoreAddCertsFile(xmlSecKeyDataStorePtr store,
- const char* file);
-
-#endif /* XMLSEC_NO_X509 */
+ const char* filename);
#ifdef __cplusplus
}
#endif /* __cplusplus */
+#endif /* XMLSEC_NO_X509 */
+
#endif /* __XMLSEC_OPENSSL_X509_H__ */
diff --git a/include/xmlsec/parser.h b/include/xmlsec/parser.h
index b91aa8db..743a5804 100644
--- a/include/xmlsec/parser.h
+++ b/include/xmlsec/parser.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* XML Parser transform and utility functions.
@@ -11,15 +11,14 @@
#ifndef __XMLSEC_PARSER_H__
#define __XMLSEC_PARSER_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
XMLSEC_EXPORT xmlDocPtr xmlSecParseFile (const char *filename);
XMLSEC_EXPORT xmlDocPtr xmlSecParseMemory (const xmlSecByte *buffer,
diff --git a/include/xmlsec/private.h b/include/xmlsec/private.h
index 0a9d74a0..f35690d9 100644
--- a/include/xmlsec/private.h
+++ b/include/xmlsec/private.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* These are internal private declarations. You don't want to use this file
@@ -16,10 +16,6 @@
#error "xmlsec/private.h file contains private xmlsec definitions and should not be used outside xmlsec or xmlsec-$crypto libraries"
#endif /* XMLSEC_PRIVATE */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/xmlIO.h>
@@ -29,6 +25,19 @@ extern "C" {
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __GNUC__
+#ifdef HAVE_ANSIDECL_H
+#include <ansidecl.h>
+#endif
+#endif
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
/*****************************************************************************
*
@@ -343,9 +352,12 @@ typedef int (*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSec
* @keyDataX509GetKlass: the method to get pointer to X509 key data klass.
* @keyDataRawX509CertGetKlass: the method to get pointer to raw X509 cert key data klass.
* @x509StoreGetKlass: the method to get pointer to X509 key data store.
- * @transformAes128CbcGetKlass: the method to get pointer to AES 128 encryption transform.
- * @transformAes192CbcGetKlass: the method to get pointer to AES 192 encryption transform.
- * @transformAes256CbcGetKlass: the method to get pointer to AES 256 encryption transform.
+ * @transformAes128CbcGetKlass: the method to get pointer to AES 128 CBC encryption transform.
+ * @transformAes192CbcGetKlass: the method to get pointer to AES 192 CBC encryption transform.
+ * @transformAes256CbcGetKlass: the method to get pointer to AES 256 CBC encryption transform.
+ * @transformAes128GcmGetKlass: the method to get pointer to AES 128 GCM encryption transform.
+ * @transformAes192GcmGetKlass: the method to get pointer to AES 192 GCM encryption transform.
+ * @transformAes256GcmGetKlass: the method to get pointer to AES 256 GCM encryption transform.
* @transformKWAes128GetKlass: the method to get pointer to AES 128 key wrapper transform.
* @transformKWAes192GetKlass: the method to get pointer to AES 192 key wrapper transform.
* @transformKWAes256GetKlass: the method to get pointer to AES 256 key wrapper transform.
@@ -431,6 +443,9 @@ struct _xmlSecCryptoDLFunctions {
xmlSecCryptoTransformGetKlassMethod transformAes128CbcGetKlass;
xmlSecCryptoTransformGetKlassMethod transformAes192CbcGetKlass;
xmlSecCryptoTransformGetKlassMethod transformAes256CbcGetKlass;
+ xmlSecCryptoTransformGetKlassMethod transformAes128GcmGetKlass;
+ xmlSecCryptoTransformGetKlassMethod transformAes192GcmGetKlass;
+ xmlSecCryptoTransformGetKlassMethod transformAes256GcmGetKlass;
xmlSecCryptoTransformGetKlassMethod transformKWAes128GetKlass;
xmlSecCryptoTransformGetKlassMethod transformKWAes192GetKlass;
xmlSecCryptoTransformGetKlassMethod transformKWAes256GetKlass;
@@ -491,21 +506,97 @@ struct _xmlSecCryptoDLFunctions {
void* cryptoAppDefaultPwdCallback;
};
-#include <libxml/xmlstring.h>
+/**
+ * ATTRIBUTE_UNUSED:
+ *
+ * Macro used to signal to GCC unused function parameters
+ */
+#ifdef __GNUC__
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED
+#endif
+#else
+#define ATTRIBUTE_UNUSED
+#endif
/**
- * xmlSecStrPrintf:
+ * UNREFERENCED_PARAMETER:
*
- * Prints a string (see @xmlStrPrintf).
+ * Macro used to signal to MSVC unused function parameters
*/
-#define xmlSecStrPrintf xmlStrPrintf
+#ifndef UNREFERENCED_PARAMETER
+#define UNREFERENCED_PARAMETER(x)
+#endif /* UNREFERENCED_PARAMETER */
+
+/***********************************************************************
+ *
+ * Helpers to convert from void* to function pointer, this silence
+ * gcc warning
+ *
+ * warning: ISO C forbids conversion of object pointer to function
+ * pointer type
+ *
+ * The workaround is to declare a union that does the conversion. This is
+ * guaranteed (ISO/IEC 9899:1990 "C89"/"C90") to match exactly.
+ *
+ ***********************************************************************/
+
+/**
+ * XMLSEC_PTR_TO_FUNC_IMPL:
+ * @func_type: the function type.
+ *
+ * Macro declares helper functions to convert from "void *" pointer to
+ * function pointer.
+ */
+#define XMLSEC_PTR_TO_FUNC_IMPL(func_type) \
+ union xmlSecPtrToFuncUnion_ ##func_type { \
+ void *ptr; \
+ func_type * func; \
+ } ; \
+ static func_type * xmlSecPtrToFunc_ ##func_type(void * ptr) { \
+ union xmlSecPtrToFuncUnion_ ##func_type x; \
+ x.ptr = ptr; \
+ return (x.func); \
+ }
/**
- * xmlSecStrVPrintf:
+ * XMLSEC_PTR_TO_FUNC:
+ * @func_type: the function type.
+ * @ptr: the "void*" pointer to be converted.
*
- * Prints a string (see @xmlStrVPrintf).
+ * Macro converts from "void*" pointer to "func_type" function pointer.
*/
-#define xmlSecStrVPrintf xmlStrVPrintf
+#define XMLSEC_PTR_TO_FUNC(func_type, ptr) \
+ xmlSecPtrToFunc_ ##func_type((ptr))
+
+/**
+ * XMLSEC_FUNC_TO_PTR_IMPL:
+ * @func_type: the function type.
+ *
+ * Macro declares helper functions to convert from function pointer to
+ * "void *" pointer;
+ */
+#define XMLSEC_FUNC_TO_PTR_IMPL(func_type) \
+ union xmlSecFuncToPtrUnion_ ##func_type { \
+ void *ptr; \
+ func_type * func; \
+ } ; \
+ static void * xmlSecFuncToPtr_ ##func_type(func_type * func) { \
+ union xmlSecFuncToPtrUnion_ ##func_type x; \
+ x.func = func; \
+ return (x.ptr); \
+ }
+
+/**
+ * XMLSEC_FUNC_TO_PTR:
+ * @func_type: the function type.
+ * @func: the "func_type" function pointer to be converted.
+ *
+ * Macro converts from "func_type" function pointer to "void*" pointer.
+ */
+#define XMLSEC_FUNC_TO_PTR(func_type, func) \
+ xmlSecFuncToPtr_ ##func_type((func))
+
#ifdef __cplusplus
}
diff --git a/include/xmlsec/private/xslt.h b/include/xmlsec/private/xslt.h
index ee3e7283..9fbcc3aa 100644
--- a/include/xmlsec/private/xslt.h
+++ b/include/xmlsec/private/xslt.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* XSLT helper functions
diff --git a/include/xmlsec/skeleton/app.h b/include/xmlsec/skeleton/app.h
index 3d29c32b..fcc9d345 100644
--- a/include/xmlsec/skeleton/app.h
+++ b/include/xmlsec/skeleton/app.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,15 +9,15 @@
#ifndef __XMLSEC_SKELETON_APP_H__
#define __XMLSEC_SKELETON_APP_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysmngr.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/********************************************************************
*
* Init/shutdown
diff --git a/include/xmlsec/skeleton/crypto.h b/include/xmlsec/skeleton/crypto.h
index a81ba067..5b9c23f8 100644
--- a/include/xmlsec/skeleton/crypto.h
+++ b/include/xmlsec/skeleton/crypto.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,15 +9,15 @@
#ifndef __XMLSEC_SKELETON_CRYPTO_H__
#define __XMLSEC_SKELETON_CRYPTO_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/dl.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_skeleton(void);
/********************************************************************
diff --git a/include/xmlsec/skeleton/symbols.h b/include/xmlsec/skeleton/symbols.h
index aa7ed387..5800445d 100644
--- a/include/xmlsec/skeleton/symbols.h
+++ b/include/xmlsec/skeleton/symbols.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
diff --git a/include/xmlsec/soap.h b/include/xmlsec/soap.h
index c4efc00f..e87eb915 100644
--- a/include/xmlsec/soap.h
+++ b/include/xmlsec/soap.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Simple SOAP messages parsing/creation.
@@ -6,42 +6,41 @@
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
+ * Copyright (C) 2002-2017 Aleksey Sanin <aleksey@aleksey.com>
*/
#ifndef __XMLSEC_SOAP_H__
#define __XMLSEC_SOAP_H__
#ifndef XMLSEC_NO_SOAP
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
/***********************************************************************
*
* SOAP 1.1
*
**********************************************************************/
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11CreateEnvelope (xmlDocPtr doc);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11EnsureHeader (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11AddBodyEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11CreateEnvelope (xmlDocPtr doc);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11EnsureHeader (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11AddBodyEntry (xmlNodePtr envNode,
xmlNodePtr entryNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11AddFaultEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11AddFaultEntry (xmlNodePtr envNode,
const xmlChar* faultCodeHref,
const xmlChar* faultCodeLocalPart,
const xmlChar* faultString,
const xmlChar* faultActor);
-XMLSEC_EXPORT int xmlSecSoap11CheckEnvelope (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetHeader (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetBody (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlSecSize xmlSecSoap11GetBodyEntriesNumber(xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetBodyEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT int xmlSecSoap11CheckEnvelope (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetHeader (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetBody (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlSecSize xmlSecSoap11GetBodyEntriesNumber(xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetBodyEntry (xmlNodePtr envNode,
xmlSecSize pos);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetFaultEntry (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap11GetFaultEntry (xmlNodePtr envNode);
/***********************************************************************
@@ -92,31 +91,31 @@ typedef enum {
xmlSecSoap12FaultCodeReceiver
} xmlSecSoap12FaultCode;
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12CreateEnvelope (xmlDocPtr doc);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12EnsureHeader (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddBodyEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12CreateEnvelope (xmlDocPtr doc);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12EnsureHeader (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddBodyEntry (xmlNodePtr envNode,
xmlNodePtr entryNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultEntry (xmlNodePtr envNode,
xmlSecSoap12FaultCode faultCode,
const xmlChar* faultReasonText,
const xmlChar* faultReasonLang,
const xmlChar* faultNodeURI,
const xmlChar* faultRole);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultSubcode (xmlNodePtr faultNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultSubcode (xmlNodePtr faultNode,
const xmlChar* subCodeHref,
const xmlChar* subCodeName);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultReasonText (xmlNodePtr faultNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultReasonText (xmlNodePtr faultNode,
const xmlChar* faultReasonText,
const xmlChar* faultReasonLang);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultDetailEntry (xmlNodePtr faultNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12AddFaultDetailEntry (xmlNodePtr faultNode,
xmlNodePtr detailEntryNode);
-XMLSEC_EXPORT int xmlSecSoap12CheckEnvelope (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetHeader (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetBody (xmlNodePtr envNode);
-XMLSEC_EXPORT xmlSecSize xmlSecSoap12GetBodyEntriesNumber(xmlNodePtr envNode);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetBodyEntry (xmlNodePtr envNode,
+XMLSEC_DEPRECATED XMLSEC_EXPORT int xmlSecSoap12CheckEnvelope (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetHeader (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetBody (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlSecSize xmlSecSoap12GetBodyEntriesNumber(xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetBodyEntry (xmlNodePtr envNode,
xmlSecSize pos);
-XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetFaultEntry (xmlNodePtr envNode);
+XMLSEC_DEPRECATED XMLSEC_EXPORT xmlNodePtr xmlSecSoap12GetFaultEntry (xmlNodePtr envNode);
#endif /* XMLSEC_NO_SOAP */
diff --git a/include/xmlsec/strings.h b/include/xmlsec/strings.h
index 42f5117c..ceaa3d18 100644
--- a/include/xmlsec/strings.h
+++ b/include/xmlsec/strings.h
@@ -1,7 +1,7 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * All the string constans.
+ * All the string constants.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -11,14 +11,14 @@
#ifndef __XMLSEC_STRINGS_H__
#define __XMLSEC_STRINGS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/*************************************************************************
*
* Global Namespaces
@@ -113,6 +113,15 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefAes192Cbc[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameAes256Cbc[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefAes256Cbc[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameAes128Gcm[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefAes128Gcm[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameAes192Gcm[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefAes192Gcm[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameAes256Gcm[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefAes256Gcm[];
+
XMLSEC_EXPORT_VAR const xmlChar xmlSecNameKWAes128[];
XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefKWAes128[];
diff --git a/include/xmlsec/templates.h b/include/xmlsec/templates.h
index 94ee7400..5f67fffa 100644
--- a/include/xmlsec/templates.h
+++ b/include/xmlsec/templates.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* KeyInfo node processing
@@ -11,15 +11,15 @@
#ifndef __XMLSEC_TEMPLATES_H__
#define __XMLSEC_TEMPLATES_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/***********************************************************************
*
* <dsig:Signature> node
diff --git a/include/xmlsec/transforms.h b/include/xmlsec/transforms.h
index 7765afc5..1495ccbd 100644
--- a/include/xmlsec/transforms.h
+++ b/include/xmlsec/transforms.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* The transforms engine
@@ -11,10 +11,6 @@
#ifndef __XMLSEC_TRANSFORMS_H__
#define __XMLSEC_TRANSFORMS_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/xpath.h>
@@ -24,6 +20,14 @@ extern "C" {
#include <xmlsec/nodeset.h>
#include <xmlsec/keys.h>
+#ifndef XMLSEC_NO_XSLT
+#include <libxslt/security.h>
+#endif /* XMLSEC_NO_XSLT */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef const struct _xmlSecTransformKlass xmlSecTransformKlass,
*xmlSecTransformId;
@@ -129,7 +133,7 @@ typedef unsigned int xmlSecTransformUriType;
/**
* xmlSecTransformUriTypeSameDocument:
*
- * The smae document ("#...") but not empty ("") URI type.
+ * The same document ("#...") but not empty ("") URI type.
*/
#define xmlSecTransformUriTypeSameDocument 0x0002
@@ -296,7 +300,7 @@ typedef int (*xmlSecTransformCtxPreExecuteCallback) (xmlSecT
* additional validation (and abort transform execution
* if needed).
* @result: the pointer to transforms result buffer.
- * @status: the transforms chain processng status.
+ * @status: the transforms chain processing status.
* @uri: the data source URI without xpointer expression.
* @xptrExpr: the xpointer expression from data source URI (if any).
* @first: the first transform in the chain.
@@ -376,7 +380,7 @@ XMLSEC_EXPORT void xmlSecTransformCtxDebugXmlDump (xmlSecT
/**
* xmlSecTransform:
* @id: the transform id (pointer to #xmlSecTransformId).
- * @operation: the transform's opertaion.
+ * @operation: the transform's operation.
* @status: the current status.
* @hereNode: the pointer to transform's <dsig:Transform /> node.
* @next: the pointer to next transform in the chain.
@@ -748,7 +752,7 @@ typedef int (*xmlSecTransformExecuteMethod) (xmlSecTransform
* @href: the transform's identification string (href).
* @usage: the allowed transforms usages.
* @initialize: the initialization method.
- * @finalize: the finmalization (destroy) function.
+ * @finalize: the finalization (destroy) function.
* @readNode: the XML node read method.
* @writeNode: the XML node write method.
* @setKeyReq: the set key requirements method.
@@ -764,7 +768,7 @@ typedef int (*xmlSecTransformExecuteMethod) (xmlSecTransform
* @reserved0: reserved for the future.
* @reserved1: reserved for the future.
*
- * The transform klass desccription structure.
+ * The transform klass description structure.
*/
struct _xmlSecTransformKlass {
/* data */
@@ -801,7 +805,7 @@ struct _xmlSecTransformKlass {
/**
* xmlSecTransformKlassGetName:
- * @klass: the transofrm's klass.
+ * @klass: the transform's klass.
*
* Macro. Returns transform klass name.
*/
@@ -959,7 +963,6 @@ XMLSEC_EXPORT int xmlSecTransformXPointerSetExpr (xmlSecT
XMLSEC_EXPORT xmlSecTransformId xmlSecTransformRelationshipGetKlass (void);
#ifndef XMLSEC_NO_XSLT
-#include <libxslt/security.h>
/**
* xmlSecTransformXsltId:
diff --git a/include/xmlsec/version.h b/include/xmlsec/version.h
deleted file mode 100644
index b7178dbf..00000000
--- a/include/xmlsec/version.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * XML Security Library (http://www.aleksey.com/xmlsec).
- *
- * Version information
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
- */
-#ifndef __XMLSEC_VERSION_H__
-#define __XMLSEC_VERSION_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * XMLSEC_VERSION:
- *
- * The library version string in the format
- * "<major-number>.<minor-number>.<sub-minor-number>".
- */
-#define XMLSEC_VERSION "1.2.22"
-
-/**
- * XMLSEC_VERSION_MAJOR:
- *
- * The library major version number.
- */
-#define XMLSEC_VERSION_MAJOR 1
-
-/**
- * XMLSEC_VERSION_MINOR:
- *
- * The library minor version number.
- */
-#define XMLSEC_VERSION_MINOR 2
-
-/**
- * XMLSEC_VERSION_SUBMINOR:
- *
- * The library sub-minor version number.
- */
-#define XMLSEC_VERSION_SUBMINOR 22
-
-/**
- * XMLSEC_VERSION_INFO:
- *
- * The library version info string in the format
- * "<major-number>+<minor-number>:<sub-minor-number>:<minor-number>".
- */
-#define XMLSEC_VERSION_INFO "3:22:2"
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __XMLSEC_VERSION_H__ */
-
diff --git a/include/xmlsec/version.h.in b/include/xmlsec/version.h.in
index 6679205c..d8679dd0 100644
--- a/include/xmlsec/version.h.in
+++ b/include/xmlsec/version.h.in
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Version information
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:version
+ * @Short_description: Version macros.
+ * @Stability: Stable
+ *
+ */
#ifndef __XMLSEC_VERSION_H__
#define __XMLSEC_VERSION_H__
@@ -19,7 +24,7 @@ extern "C" {
* XMLSEC_VERSION:
*
* The library version string in the format
- * "<major-number>.<minor-number>.<sub-minor-number>".
+ * "$major_number.$minor_number.$sub_minor_number".
*/
#define XMLSEC_VERSION "@XMLSEC_VERSION@"
@@ -48,7 +53,7 @@ extern "C" {
* XMLSEC_VERSION_INFO:
*
* The library version info string in the format
- * "<major-number>+<minor-number>:<sub-minor-number>:<minor-number>".
+ * "$major_number+$minor_number:$sub_minor_number:$minor_number".
*/
#define XMLSEC_VERSION_INFO "@XMLSEC_VERSION_INFO@"
diff --git a/include/xmlsec/x509.h b/include/xmlsec/x509.h
index c5b20ba6..6a592eed 100644
--- a/include/xmlsec/x509.h
+++ b/include/xmlsec/x509.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
@@ -11,9 +11,6 @@
#ifndef XMLSEC_NO_X509
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include <stdio.h>
#include <libxml/tree.h>
@@ -27,6 +24,10 @@ extern "C" {
#include <xmlsec/keyinfo.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* XMLSEC_X509DATA_CERTIFICATE_NODE:
*
@@ -67,7 +68,6 @@ extern "C" {
(XMLSEC_X509DATA_CERTIFICATE_NODE | XMLSEC_X509DATA_CRL_NODE)
XMLSEC_EXPORT int xmlSecX509DataGetNodeContent (xmlNodePtr node,
- int deleteChildren,
xmlSecKeyInfoCtxPtr keyInfoCtx);
#ifdef __cplusplus
diff --git a/include/xmlsec/xmldsig.h b/include/xmlsec/xmldsig.h
index f00780a1..7dab2411 100644
--- a/include/xmlsec/xmldsig.h
+++ b/include/xmlsec/xmldsig.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* "XML Digital Signature" implementation
@@ -15,10 +15,6 @@
#ifndef XMLSEC_NO_XMLDSIG
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <libxml/parser.h>
@@ -31,6 +27,10 @@ extern "C" {
#include <xmlsec/keyinfo.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef struct _xmlSecDSigReferenceCtx xmlSecDSigReferenceCtx,
*xmlSecDSigReferenceCtxPtr;
@@ -94,40 +94,6 @@ typedef enum {
*/
#define XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK 0x00000010
-/** TIZEN CUSTUMIZED
- * XMLSEC_DSIG_FLAGS_IGNORE_REFERENCES:
- *
- * If this flag is set then <dsig:Reference/> nodes will not be processed.
- */
-#define XMLSEC_DSIG_FLAGS_IGNORE_REFERENCES 0x00000020
-
-/** TIZEN CUSTUMIZED
- * XMLSEC_DSIG_FLAGS_CHECK_PROXY:
- *
- * If this flag is set then xmlSecProxyCtx will be processed.
- */
-#define XMLSEC_DSIG_FLAGS_CHECK_PROXY 0x00000040
-
-/** TIZEN CUSTUMIZED
- * XMLSEC_DSIG_FLAGS_SKIP_PROXY:
- *
- * If this flag is set then xmlSecProxyCtx will not be processed.
- */
-#define XMLSEC_DSIG_FLAGS_SKIP_PROXY 0x00000080
-
-/** TIZEN CUSTUMIZED
- * @cache: the cache include reference uri for supporting partial mode.
- * cache represented uri will be check on processing references.
- * @next: the pointer to indicate linked node (xmlSecProxyCtx).
- */
-struct _xmlSecProxyCtx {
- xmlChar* cache;
- struct _xmlSecProxyCtx* next;
-};
-
-typedef struct _xmlSecProxyCtx xmlSecProxyCtx,
- *xmlSecProxyCtxPtr;
-
/**
* xmlSecDSigCtx:
* @userData: the pointer to user data (xmlsec and xmlsec-crypto libraries
@@ -148,7 +114,7 @@ typedef struct _xmlSecProxyCtx xmlSecProxyCtx,
* functions.
* @operation: the operation: sign or verify.
* @result: the pointer to signature (not valid for signature verification).
- * @status: the <dsig:Signatuire/> processing status.
+ * @status: the <dsig:Signature/> processing status.
* @signMethod: the pointer to signature transform.
* @c14nMethod: the pointer to c14n transform.
* @preSignMemBufMethod: the pointer to binary buffer right before signature
@@ -177,10 +143,6 @@ struct _xmlSecDSigCtx {
xmlSecTransformId defC14NMethodId;
xmlSecTransformId defDigestMethodId;
- /* TIZEN CUTUMIZED: these data user can set before performing the operation */
- xmlSecProxyCtxPtr skipReferences;
- xmlSecProxyCtxPtr checkReferences;
-
/* these data are returned */
xmlSecKeyPtr signKey;
xmlSecTransformOperation operation;
@@ -219,10 +181,6 @@ XMLSEC_EXPORT void xmlSecDSigCtxDebugDump (xmlSecDSigCtxPt
XMLSEC_EXPORT void xmlSecDSigCtxDebugXmlDump (xmlSecDSigCtxPtr dsigCtx,
FILE* output);
-/* TIZEN CUSTUMIZED: xmlSecProxyCtx operator */
-XMLSEC_EXPORT int xmlSecProxyCtxAdd (xmlSecProxyCtxPtr* proxyCtxPtrPtr,
- const xmlChar* uri);
-XMLSEC_EXPORT void xmlSecProxyCtxDestroy (xmlSecProxyCtxPtr proxyCtxPtr);
/**************************************************************************
*
diff --git a/include/xmlsec/xmlenc.h b/include/xmlsec/xmlenc.h
index 0253e3ed..b09c8df8 100644
--- a/include/xmlsec/xmlenc.h
+++ b/include/xmlsec/xmlenc.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* "XML Encryption" implementation
@@ -14,9 +14,6 @@
#ifndef XMLSEC_NO_XMLENC
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
#include <stdio.h>
#include <libxml/tree.h>
@@ -29,6 +26,10 @@ extern "C" {
#include <xmlsec/keyinfo.h>
#include <xmlsec/transforms.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* xmlEncCtxMode:
* @xmlEncCtxModeEncryptedData: the <enc:EncryptedData/> element procesing.
@@ -87,7 +88,7 @@ typedef enum {
* @cipherValueNode: the pointer to <enc:CipherValue/> node.
* @reserved1: reserved for the future.
*
- * XML Encrypiton context.
+ * XML Encryption context.
*/
struct _xmlSecEncCtx {
/* these data user can set before performing the operation */
diff --git a/include/xmlsec/xmlsec.h b/include/xmlsec/xmlsec.h
index 963b37a6..4e13ea8d 100644
--- a/include/xmlsec/xmlsec.h
+++ b/include/xmlsec/xmlsec.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* General functions and forward declarations.
@@ -11,16 +11,16 @@
#ifndef __XMLSEC_H__
#define __XMLSEC_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <libxml/tree.h>
#include <xmlsec/version.h>
#include <xmlsec/exports.h>
#include <xmlsec/strings.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/***********************************************************************
*
* Basic types to make ports to exotic platforms easier
@@ -86,6 +86,7 @@ typedef struct _xmlSecEncCtx xmlSecEncCtx, *xmlSecEncCtxPtr;
XMLSEC_EXPORT int xmlSecInit (void);
XMLSEC_EXPORT int xmlSecShutdown (void);
XMLSEC_EXPORT const xmlChar * xmlSecGetDefaultCrypto (void);
+XMLSEC_EXPORT void xmlSecSetExternalEntityLoader (xmlExternalEntityLoader);
/**
* XMLSEC_CRYPTO:
@@ -97,6 +98,22 @@ XMLSEC_EXPORT const xmlChar * xmlSecGetDefaultCrypto (void);
*/
#define XMLSEC_CRYPTO (xmlSecGetDefaultCrypto())
+/*
+ * XMLSEC_DEPRECATED function definition
+ */
+#if !defined(IN_XMLSEC)
+#ifdef __GNUC__
+#define XMLSEC_DEPRECATED __attribute__((deprecated))
+#elif defined(_MSC_VER)
+#define XMLSEC_DEPRECATED __declspec(deprecated)
+#else /* defined(_MSC_VER) */
+#pragma message("WARNING: You need to implement XMLSEC_DEPRECATED for this compiler")
+#define XMLSEC_DEPRECATED
+#endif /* defined(_MSC_VER) */
+#else /* !defined(IN_XMLSEC) */
+#define XMLSEC_DEPRECATED
+#endif /* !defined(IN_XMLSEC) */
+
/***********************************************************************
*
* Version checking
@@ -139,79 +156,6 @@ XMLSEC_EXPORT int xmlSecCheckVersionExt (int major,
int subminor,
xmlSecCheckVersionMode mode);
-/**
- * ATTRIBUTE_UNUSED:
- *
- * Macro used to signal to GCC unused function parameters
- */
-#ifdef __GNUC__
-#ifdef HAVE_ANSIDECL_H
-#include <ansidecl.h>
-#endif
-#ifndef ATTRIBUTE_UNUSED
-#define ATTRIBUTE_UNUSED
-#endif
-#else
-#define ATTRIBUTE_UNUSED
-#endif
-
-/***********************************************************************
- *
- * Helpers to convert from void* to function pointer, this silence
- * gcc warning
- *
- * warning: ISO C forbids conversion of object pointer to function
- * pointer type
- *
- * The workaround is to declare a union that does the conversion. This is
- * guaranteed (ISO/IEC 9899:1990 "C89"/"C90") to match exactly.
- *
- ***********************************************************************/
-
-/**
- * XMLSEC_PTR_TO_FUNC_IMPL:
- * @func_type: the function type.
- *
- * Macro declares helper functions to convert between "void *" pointer and
- * function pointer.
- */
-#define XMLSEC_PTR_TO_FUNC_IMPL(func_type) \
- union xmlSecPtrToFuncUnion_ ##func_type { \
- void *ptr; \
- func_type * func; \
- } ; \
- static func_type * xmlSecPtrToFunc_ ##func_type(void * ptr) { \
- union xmlSecPtrToFuncUnion_ ##func_type x; \
- x.ptr = ptr; \
- return (x.func); \
- } \
- static void * xmlSecFuncToPtr_ ##func_type(func_type * func) { \
- union xmlSecPtrToFuncUnion_ ##func_type x; \
- x.func = func; \
- return (x.ptr); \
- }
-
-/**
- * XMLSEC_PTR_TO_FUNC:
- * @func_type: the function type.
- * @ptr: the "void*" pointer to be converted.
- *
- * Macro converts from "void*" pointer to "func_type" function pointer.
- */
-#define XMLSEC_PTR_TO_FUNC(func_type, ptr) \
- xmlSecPtrToFunc_ ##func_type((ptr))
-
-/**
- * XMLSEC_FUNC_TO_PTR:
- * @func_type: the function type.
- * @func: the "func_type" function pointer to be converted.
- *
- * Macro converts from "func_type" function pointer to "void*" pointer.
- */
-#define XMLSEC_FUNC_TO_PTR(func_type, func) \
- xmlSecFuncToPtr_ ##func_type((func))
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/xmlsec/xmltree.h b/include/xmlsec/xmltree.h
index 8b575c83..e29016a6 100644
--- a/include/xmlsec/xmltree.h
+++ b/include/xmlsec/xmltree.h
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Common XML utility functions
@@ -11,16 +11,20 @@
#ifndef __XMLSEC_TREE_H__
#define __XMLSEC_TREE_H__
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
#include <stdio.h>
#include <libxml/tree.h>
#include <libxml/xpath.h>
#include <xmlsec/xmlsec.h>
+#ifdef WIN32
+#include <windows.h>
+#endif /* WIN32 */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* xmlSecNodeGetName:
* @node: the pointer to node.
@@ -30,11 +34,17 @@ extern "C" {
#define xmlSecNodeGetName(node) \
(((node)) ? ((const char*)((node)->name)) : NULL)
+XMLSEC_EXPORT const xmlChar* xmlSecGetDefaultLineFeed(void);
+XMLSEC_EXPORT void xmlSecSetDefaultLineFeed(const xmlChar *linefeed);
+
XMLSEC_EXPORT const xmlChar* xmlSecGetNodeNsHref (const xmlNodePtr cur);
XMLSEC_EXPORT int xmlSecCheckNodeName (const xmlNodePtr cur,
const xmlChar *name,
const xmlChar *ns);
XMLSEC_EXPORT xmlNodePtr xmlSecGetNextElementNode(xmlNodePtr cur);
+XMLSEC_EXPORT xmlNodePtr xmlSecFindSibling (const xmlNodePtr cur,
+ const xmlChar *name,
+ const xmlChar *ns);
XMLSEC_EXPORT xmlNodePtr xmlSecFindChild (const xmlNodePtr parent,
const xmlChar *name,
const xmlChar *ns);
@@ -47,6 +57,9 @@ XMLSEC_EXPORT xmlNodePtr xmlSecFindNode (const xmlNodePtr parent
XMLSEC_EXPORT xmlNodePtr xmlSecAddChild (xmlNodePtr parent,
const xmlChar *name,
const xmlChar *ns);
+XMLSEC_EXPORT xmlNodePtr xmlSecEnsureEmptyChild (xmlNodePtr parent,
+ const xmlChar *name,
+ const xmlChar *ns);
XMLSEC_EXPORT xmlNodePtr xmlSecAddChildNode (xmlNodePtr parent,
xmlNodePtr child);
XMLSEC_EXPORT xmlNodePtr xmlSecAddNextSibling (xmlNodePtr node,
@@ -82,13 +95,6 @@ XMLSEC_EXPORT int xmlSecNodeEncodeAndSetContent
XMLSEC_EXPORT void xmlSecAddIDs (xmlDocPtr doc,
xmlNodePtr cur,
const xmlChar** ids);
-XMLSEC_EXPORT int xmlSecGenerateAndAddID (xmlNodePtr node,
- const xmlChar* attrName,
- const xmlChar* prefix,
- xmlSecSize len);
-XMLSEC_EXPORT xmlChar* xmlSecGenerateID (const xmlChar* prefix,
- xmlSecSize len);
-
XMLSEC_EXPORT xmlDocPtr xmlSecCreateTree (const xmlChar* rootNodeName,
const xmlChar* rootNodeNs);
XMLSEC_EXPORT int xmlSecIsEmptyNode (xmlNodePtr node);
@@ -265,6 +271,25 @@ XMLSEC_EXPORT void xmlSecQName2BitMaskDebugXmlDump(xmlSecQName2BitM
FILE* output);
+/*************************************************************************
+ *
+ * Windows string conversions
+ *
+ ************************************************************************/
+#ifdef WIN32
+XMLSEC_EXPORT LPWSTR xmlSecWin32ConvertLocaleToUnicode(const char* str);
+
+XMLSEC_EXPORT LPWSTR xmlSecWin32ConvertUtf8ToUnicode (const xmlChar* str);
+XMLSEC_EXPORT xmlChar* xmlSecWin32ConvertUnicodeToUtf8 (LPCWSTR str);
+
+XMLSEC_EXPORT xmlChar* xmlSecWin32ConvertLocaleToUtf8 (const char* str);
+XMLSEC_EXPORT char* xmlSecWin32ConvertUtf8ToLocale (const xmlChar* str);
+
+XMLSEC_EXPORT xmlChar* xmlSecWin32ConvertTstrToUtf8 (LPCTSTR str);
+XMLSEC_EXPORT LPTSTR xmlSecWin32ConvertUtf8ToTstr (const xmlChar* str);
+
+
+#endif /* WIN32 */
#ifdef __cplusplus
diff --git a/m4/.keep b/m4/.keep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/m4/.keep
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 5d9acd8e..00000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,384 +0,0 @@
-# Helper functions for option handling. -*- Autoconf -*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it. Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
- _LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
- [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME. If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
- dnl
- dnl Simply set some default values (i.e off) if boolean options were not
- dnl specified:
- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
- ])
- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
- ])
- dnl
- dnl If no reference was made to various pairs of opposing options, then
- dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
- dnl archives by default:
- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
- ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS], [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
- _LT_DECL([build_libtool_libs], [enable_shared], [0],
- [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
- _LT_DECL([build_old_libs], [enable_static], [0],
- [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
- [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [lt_p=${PACKAGE-default}
- case $withval in
- yes|no) pic_mode=$withval ;;
- *)
- pic_mode=default
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
- if test "X$lt_pkg" = "X$lt_p"; then
- pic_mode=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
- [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
- [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
- [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
- [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
- [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a057..00000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
- [$#], [2], [[$2]],
- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
- [$#], 1, [],
- [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
- [m4_foreach([_Lt_suffix],
- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
- [lt_append([$1], [$2], [$3])$4],
- [$5])],
- [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
- [$5],
- [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
- [lt_join(m4_quote(m4_default([$4], [[, ]])),
- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index 07a8602d..00000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers -*- Autoconf -*-
-#
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index c573da90..00000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else. This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/man/xmlsec1-config.1 b/man/xmlsec1-config.1
index b78c3b15..336f97c8 100644
--- a/man/xmlsec1-config.1
+++ b/man/xmlsec1-config.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.2.
-.TH XMLSEC1-CONFIG "1" "February 2016" "xmlsec1-config 1.2.20" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH XMLSEC1-CONFIG "1" "April 2019" "xmlsec1-config 1.2.28" "User Commands"
.SH NAME
xmlsec1-config \- detail installed version of xmlsec library
.SH SYNOPSIS
diff --git a/man/xmlsec1.1 b/man/xmlsec1.1
index 0baebed1..cdd20c9b 100644
--- a/man/xmlsec1.1
+++ b/man/xmlsec1.1
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.2.
-.TH XMLSEC1 "1" "February 2016" "xmlsec1 1.2.20 (openssl)" "User Commands"
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
+.TH XMLSEC1 "1" "April 2019" "xmlsec1 1.2.28 (openssl)" "User Commands"
.SH NAME
xmlsec1 \- sign, verify, encrypt and decrypt XML documents
.SH SYNOPSIS
@@ -197,6 +197,10 @@ the password to use for reading keys and certs
.IP
load load private key from pkcs12 file <file>
.HP
+\fB\-\-pkcs12\-persist\fR
+.IP
+persist loaded private key
+.HP
\fB\-\-pubkey\-cert\-pem[\fR:<name>] <file>
.IP
load public key from PEM cert file
@@ -234,6 +238,10 @@ maximum certificates chain depth
.IP
skip strict checking of X509 data
.HP
+\fB\-\-insecure\fR
+.IP
+do not verify certificates
+.HP
\fB\-\-crypto\fR <name>
.IP
the name of the crypto engine to use from the following
@@ -259,6 +267,16 @@ print errors stack at the end
\fB\-\-help\fR
.IP
print help information about the command
+.HP
+\fB\-\-xxe\fR
+.IP
+enable External Entity resolution.
+WARNING: this may allow the reading of arbitrary files and URLs,
+controlled by the input XML document. Use with caution!
+.HP
+\fB\-\-url\-map\fR:<url> <file>
+.IP
+maps a given <url> to the given <file> for loading external resources
.SH AUTHOR
Written by Aleksey Sanin <aleksey@aleksey.com>.
.SH "REPORTING BUGS"
diff --git a/packaging/xmlsec1.spec b/packaging/xmlsec1.spec
index 6437c875..99123973 100644
--- a/packaging/xmlsec1.spec
+++ b/packaging/xmlsec1.spec
@@ -1,6 +1,6 @@
%define keepstatic 1
Name: xmlsec1
-Version: 1.2.22
+Version: 1.2.28
Release: 0
License: MIT
Summary: Library providing support for "XML Signature" and "XML Encryption" standards
@@ -10,14 +10,14 @@ Source0: http://www.aleksey.com/xmlsec/download/xmlsec1-%{version}.tar.gz
Source1001: xmlsec1.manifest
BuildRequires: fdupes
BuildRequires: pkgconfig
-BuildRequires: pkgconfig(libxml-2.0) >= 2.6.27
-BuildRequires: pkgconfig(libxslt)
+BuildRequires: pkgconfig(libxml-2.0) >= 2.8.0
+BuildRequires: pkgconfig(libxslt) >= 1.0.20
BuildRequires: pkgconfig(openssl)
%description
This C library allows to transform XML files into other XML files
(or HTML, text, ...) using the standard XSLT stylesheet transformation
-mechanism. To use it you need to have a version of libxml2 >= 2.6.27
+mechanism. To use it you need to have a version of libxml2 >= 2.8.0
installed. The xsltproc command is a command line interface to the XSLT engine
%package gcrypt
@@ -49,7 +49,7 @@ Requires: %{name} = %{version}
%description devel
This C library allows to transform XML files into other XML files
(or HTML, text, ...) using the standard XSLT stylesheet transformation
-mechanism. To use it you need to have a version of libxml2 >= 2.6.27
+mechanism. To use it you need to have a version of libxml2 >= 2.8.0
installed.
%package devel-static
@@ -61,7 +61,7 @@ Requires: %{name}-devel = %{version}
%description devel-static
This C library allows to transform XML files into other XML files
(or HTML, text, ...) using the standard XSLT stylesheet transformation
-mechanism. To use it you need to have a version of libxml2 >= 2.6.27
+mechanism. To use it you need to have a version of libxml2 >= 2.8.0
installed.
This package contains static versions of the libxmlsec1 library.
diff --git a/scripts/build_coverity.sh b/scripts/build_coverity.sh
new file mode 100755
index 00000000..a947c7fe
--- /dev/null
+++ b/scripts/build_coverity.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# config
+cov_url="https://scan.coverity.com/builds?project=xmlsec"
+cov_email="aleksey@aleksey.com"
+cov_token=$1
+version=$2
+cur_pwd=`pwd`
+today=`date +%F-%H-%M-%S`
+
+git_uri=git@github.com:lsh123/xmlsec.git
+rpm_root=/usr/src/redhat
+build_root="/tmp/xmlsec-build-area-$today"
+tar_file="xmlsec1-$version-$today.tar.gz"
+
+if [ x"$version" = x ]; then
+ echo "Usage: $0 <token> <version>"
+ exit 1
+fi
+
+echo "============== Creating build area $build_root for building xmlsec1-$version"
+rm -rf "$build_root"
+mkdir -p "$build_root"
+cd "$build_root"
+
+echo "============== Checking out the module '$git_url'"
+git clone $git_uri
+cd xmlsec
+find . -name ".git" | xargs rm -r
+
+echo "============== Building xmlsec1-$version with coverity"
+./autogen.sh --prefix=/usr --sysconfdir=/etc
+cov-build --dir cov-int make
+tar czvf "$tar_file" cov-int
+
+echo "============== Uploading to Coverity"
+curl \
+ --form token="$cov_token" \
+ --form email="$cov_email" \
+ --form file=@"$tar_file" \
+ --form version="$version" \
+ --form description="$version built on $today" \
+ "$cov_url"
+
+echo "============== Cleanup"
+cd "$cur_pwd"
+#rm -rf "$build_root"
+
+
diff --git a/scripts/build_release.sh b/scripts/build_release.sh
index 8989eac6..b6480831 100755
--- a/scripts/build_release.sh
+++ b/scripts/build_release.sh
@@ -1,38 +1,70 @@
#!/bin/sh
+#
+# Usage: build_release.sh <version> [<release-candidate-tag>]
+#
+
# config
+version=$1
+rc=$2
cur_pwd=`pwd`
-today=`date +%F-%T`
+today=`date +%F-%H-%M-%S`
git_uri=git@github.com:lsh123/xmlsec.git
rpm_root=/usr/src/redhat
-build_root="$rpm_root/BUILD/xmlsec-build-area-$today"
+build_root="/tmp/xmlsec-build-area-$today"
+tar_file="xmlsec1-$version.tar.gz"
+sig_file="xmlsec1-$version.sig"
+rc_tar_file="xmlsec1-$version-$rc.tar.gz"
+rc_sig_file="xmlsec1-$version-$rc.sig"
+git_release_branch="xmlsec-$version-release"
+git_version_tag=`echo $version | sed 's/\./_/g'`
+
+if [ x"$version" = x ]; then
+ echo "Usage: $0 <version> [<release-candidate-tag>]"
+ exit 1
+fi
-echo "Creating build area $build_root"
+echo "============== Creating build area $build_root for building xmlsec1-$version"
rm -rf "$build_root"
mkdir -p "$build_root"
cd "$build_root"
-echo "Checking out the module '$git_url'"
+echo "============== Checking out the module '$git_url'"
git clone $git_uri
cd xmlsec
+if [ x"$rc" != x ]; then
+ echo "============== Switching to release branch '$git_release_branch' for RC build '$rc'"
+ git checkout $git_release_branch
+fi
find . -name ".git" | xargs rm -r
+echo "============== Building xmlsec1-$version"
./autogen.sh --prefix=/usr --sysconfdir=/etc
make tar-release
# can't build rpm on ubuntu
# make rpm-release
-tar_file=`ls xmlsec*.tar.gz`
-echo "Moving sources tar file to $rpm_root/SOURCES/$tar_file"
-mv $tar_file $rpm_root/SOURCES
-
-echo "Cleanup"
+echo "============== Moving tar file"
+if [ x"$rc" = x ]; then
+ mv "$tar_file" "$cur_pwd/"
+else
+ mv "$tar_file" "$cur_pwd/$rc_tar_file"
+fi
cd "$cur_pwd"
-#rm -rf "$build_root"
-echo "DO NOT FORGET TO TAG THE RELEASE"
-echo "git tag -a xmlsec-1_2_N -m 'XMLSec release 1.2.N'"
-echo "git push origin xmlsec-1_2_N"
+echo "============== Signing tar file"
+if [ x"$rc" = x ]; then
+ gpg --output "$sig_file" --detach-sig "$tar_file"
+else
+ gpg --output "$rc_sig_file" --detach-sig "$rc_tar_file"
+fi
+if [ x"$rc" = x ]; then
+ echo "============== Tagging the release $version in the github"
+ echo "RUN MANUALLY: git tag -a "xmlsec-$git_version_tag" -m 'XMLSec release $version'"
+ echo "RUN MANUALLY: git push --follow-tags"
+fi
+echo "============== Cleanup"
+#rm -rf "$build_root"
diff --git a/scripts/change-release.sh b/scripts/change-release.sh
deleted file mode 100755
index 23c6baf0..00000000
--- a/scripts/change-release.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-
-old_release=$1
-new_release=$2
-
-sh_files=`find . -name "*.sh" -print`
-am_files=`find . -name "*.am" -print`
-in_files=`find . -name "*.in" -print`
-html_files=`find . -name "*.html" -print`
-sgml_files=`find . -name "*.sgml" -print`
-cvsignore_files=`find . -name ".cvsignore" -print`
-
-files="$sh_files $am_files $in_files $html_files $sgml_files $cvsignore_files"
-for i in $files; do
- echo Processing $i ...
- sed "s/$old_release/$new_release/g" $i > $i.tmp
- if [ $? != 0 ]; then
- echo "Failed to process file $i"
- exit 1
- fi
-
- mode=`stat -c "%a" $i`
- chmod $mode $i.tmp
- if [ $? != 0 ]; then
- echo "Failed to retore permissions for $i"
- exit 1
- fi
-done
-
-for i in $files; do
- echo Moving $i ...
- mv $i.tmp $i
-done
diff --git a/scripts/push_release.sh b/scripts/push_release.sh
deleted file mode 100755
index 162c31a8..00000000
--- a/scripts/push_release.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-# input
-version=$1
-
-# config
-svn_module=xmlsec
-svn_uri=svn+ssh://aleksey@svn.gnome.org/svn/$svn_module/trunk
-svn_branch_uri=svn+ssh://aleksey@svn.gnome.org/svn/$svn_module/branches/$version
-
-rpm_name=xmlsec1
-rpm_root=/usr/src/redhat
-remote_root=aleksey@ftp.aleksey.com:/var/ftp/pub/xmlsec/releases
-build_target=i386
-
-echo "Uploading to aleksey.com"
-scp $rpm_root/SOURCES/$rpm_name-$version.tar.gz \
- $rpm_root/SRPMS/$rpm_name-$version-*.src.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-$version-*.$build_target.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-devel-$version-*.$build_target.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-openssl-$version-*.$build_target.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-openssl-devel-$version-*.$build_target.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-nss-$version-*.$build_target.rpm \
- $rpm_root/RPMS/$build_target/$rpm_name-nss-devel-$version-*.$build_target.rpm \
- $remote_root
-
-
-echo "Creating SVN branch $version"
-svn copy $svn_uri $svn_branch_uri -m"creating release $version branch"
-
diff --git a/scripts/remove-gtkdoclink.pl b/scripts/remove-gtkdoclink.pl
index 30404e09..c5c4c554 100755
--- a/scripts/remove-gtkdoclink.pl
+++ b/scripts/remove-gtkdoclink.pl
@@ -6,7 +6,7 @@ my $file;
while ($file = shift @ARGV) {
print "Processing $file..\n";
open (IN, $file) || die "Can't open $file: $!";
- my $entire_file;
+ my $entire_file = '';
while(<IN>) {
$entire_file = $entire_file . $_;
}
diff --git a/scripts/test_release.sh b/scripts/test_release.sh
deleted file mode 100755
index 705f7963..00000000
--- a/scripts/test_release.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-module=$1
-version=$2
-build_root=/tmp
-rpm_root=/usr/src/redhat
-
-./autogen.sh --prefix=/usr --sysconfdir=/etc
-make dist
-mv $module-$version.tar.gz $rpm_root/SOURCES
-rpm -ba $module.spec
-
diff --git a/src/Makefile.am b/src/Makefile.am
index 44cfabea..c6d02443 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,6 +14,7 @@ AM_CFLAGS = \
$(NULL)
EXTRA_DIST = \
+ errors_helpers.h \
globals.h \
kw_aes_des.h \
skeleton \
@@ -46,7 +47,6 @@ libxmlsec1_la_SOURCES = \
nodeset.c \
parser.c \
relationship.c \
- soap.c \
strings.c \
templates.c \
transforms.c \
@@ -59,6 +59,10 @@ libxmlsec1_la_SOURCES = \
xslt.c \
$(NULL)
+if XMLSEC_ENABLE_SOAP
+libxmlsec1_la_SOURCES += soap.c
+endif
+
libxmlsec1_la_LIBADD = \
$(LIBXSLT_LIBS) \
$(LIBXML_LIBS) \
diff --git a/src/app.c b/src/app.c
index b45bc8bb..008d42be 100644
--- a/src/app.c
+++ b/src/app.c
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
*
@@ -7,6 +7,13 @@
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Crypto-engine independent application support functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
@@ -29,7 +36,6 @@
#include <xmlsec/private.h>
#include <xmlsec/errors.h>
-
/******************************************************************************
*
* Crypto Init/shutdown
@@ -45,11 +51,7 @@
int
xmlSecCryptoInit(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoInit == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoInit",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoInit");
return(-1);
}
@@ -66,11 +68,7 @@ xmlSecCryptoInit(void) {
int
xmlSecCryptoShutdown(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoShutdown == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoShutdown",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoShutdown");
return(-1);
}
@@ -88,11 +86,7 @@ xmlSecCryptoShutdown(void) {
int
xmlSecCryptoKeysMngrInit(xmlSecKeysMngrPtr mngr) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoKeysMngrInit == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoKeysMngrInit",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoKeysMngrInit");
return(-1);
}
@@ -116,11 +110,7 @@ xmlSecCryptoKeysMngrInit(xmlSecKeysMngrPtr mngr) {
xmlSecKeyDataId
xmlSecKeyDataAesGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataAesGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataAesId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataAesGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -139,11 +129,7 @@ xmlSecKeyDataAesGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataDesGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataDesGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataDesId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataDesId");
return(xmlSecKeyDataIdUnknown);
}
@@ -162,11 +148,7 @@ xmlSecKeyDataDesGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataDsaGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataDsaGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataDsaId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataDsaGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -185,11 +167,7 @@ xmlSecKeyDataDsaGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataEcdsaGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataEcdsaGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataEcdsaId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataEcdsaGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -208,11 +186,7 @@ xmlSecKeyDataEcdsaGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataGost2001GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataGost2001GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataGost2001Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataGost2001GetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -231,11 +205,7 @@ xmlSecKeyDataGost2001GetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataGostR3410_2012_256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataGostR3410_2012_256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataGostR3410_2012_256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataGostR3410_2012_256GetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -254,11 +224,7 @@ xmlSecKeyDataGostR3410_2012_256GetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataGostR3410_2012_512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataGostR3410_2012_512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataGostR3410_2012_512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataGostR3410_2012_512GetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -277,11 +243,7 @@ xmlSecKeyDataGostR3410_2012_512GetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataHmacGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataHmacGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataHmacId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataHmacGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -300,11 +262,7 @@ xmlSecKeyDataHmacGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataRsaGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataRsaGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataRsaId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataRsaGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -323,11 +281,7 @@ xmlSecKeyDataRsaGetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataX509GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataX509GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataX509Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataX509GetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -346,11 +300,7 @@ xmlSecKeyDataX509GetKlass(void) {
xmlSecKeyDataId
xmlSecKeyDataRawX509CertGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataRawX509CertGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "keyDataRawX509CertId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("keyDataRawX509CertGetKlass");
return(xmlSecKeyDataIdUnknown);
}
@@ -374,11 +324,7 @@ xmlSecKeyDataRawX509CertGetKlass(void) {
xmlSecKeyDataStoreId
xmlSecX509StoreGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->x509StoreGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "x509StoreId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("x509StoreGetKlass");
return(xmlSecKeyStoreIdUnknown);
}
@@ -402,11 +348,7 @@ xmlSecX509StoreGetKlass(void) {
xmlSecTransformId
xmlSecTransformAes128CbcGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes128CbcGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformAes128CbcId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformAes128CbcGetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -425,11 +367,7 @@ xmlSecTransformAes128CbcGetKlass(void) {
xmlSecTransformId
xmlSecTransformAes192CbcGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes192CbcGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformAes192CbcId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformAes192CbcGetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -448,11 +386,7 @@ xmlSecTransformAes192CbcGetKlass(void) {
xmlSecTransformId
xmlSecTransformAes256CbcGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes256CbcGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformAes256CbcId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformAes256CbcGetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -460,6 +394,66 @@ xmlSecTransformAes256CbcGetKlass(void) {
}
/**
+* xmlSecTransformAes128GcmGetKlass:
+*
+* AES 128 GCM encryption transform klass.
+*
+* Returns: pointer to AES 128 GCM encryption transform or NULL if an error
+* occurs (the xmlsec-crypto library is not loaded or this transform is not
+* implemented).
+*/
+xmlSecTransformId
+xmlSecTransformAes128GcmGetKlass(void)
+{
+ if ((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes128GcmGetKlass == NULL)) {
+ xmlSecNotImplementedError("transformAes128GcmGetKlass");
+ return(xmlSecTransformIdUnknown);
+ }
+
+ return(xmlSecCryptoDLGetFunctions()->transformAes128GcmGetKlass());
+}
+
+/**
+* xmlSecTransformAes192GcmGetKlass:
+*
+* AES 192 GCM encryption transform klass.
+*
+* Returns: pointer to AES 192 GCM encryption transform or NULL if an error
+* occurs (the xmlsec-crypto library is not loaded or this transform is not
+* implemented).
+*/
+xmlSecTransformId
+xmlSecTransformAes192GcmGetKlass(void)
+{
+ if ((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes192GcmGetKlass == NULL)) {
+ xmlSecNotImplementedError("transformAes192GcmGetKlass");
+ return(xmlSecTransformIdUnknown);
+ }
+
+ return(xmlSecCryptoDLGetFunctions()->transformAes192GcmGetKlass());
+}
+
+/**
+* xmlSecTransformAes256GcmGetKlass:
+*
+* AES 256 GCM encryption transform klass.
+*
+* Returns: pointer to AES 256 GCM encryption transform or NULL if an error
+* occurs (the xmlsec-crypto library is not loaded or this transform is not
+* implemented).
+*/
+xmlSecTransformId
+xmlSecTransformAes256GcmGetKlass(void)
+{
+ if ((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes256GcmGetKlass == NULL)) {
+ xmlSecNotImplementedError("transformAes256GcmGetKlass");
+ return(xmlSecTransformIdUnknown);
+ }
+
+ return(xmlSecCryptoDLGetFunctions()->transformAes256GcmGetKlass());
+}
+
+/**
* xmlSecTransformKWAes128GetKlass:
*
* The AES-128 kew wrapper transform klass.
@@ -471,11 +465,7 @@ xmlSecTransformAes256CbcGetKlass(void) {
xmlSecTransformId
xmlSecTransformKWAes128GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes128GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformKWAes128Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformKWAes128GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -494,11 +484,7 @@ xmlSecTransformKWAes128GetKlass(void) {
xmlSecTransformId
xmlSecTransformKWAes192GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes192GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformKWAes192Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformKWAes192GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -517,11 +503,7 @@ xmlSecTransformKWAes192GetKlass(void) {
xmlSecTransformId
xmlSecTransformKWAes256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformKWAes256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformKWAes256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -540,11 +522,7 @@ xmlSecTransformKWAes256GetKlass(void) {
xmlSecTransformId
xmlSecTransformDes3CbcGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformDes3CbcGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformDes3CbcId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformDes3CbcGetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -563,11 +541,7 @@ xmlSecTransformDes3CbcGetKlass(void) {
xmlSecTransformId
xmlSecTransformKWDes3GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWDes3GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformKWDes3Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformKWDes3GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -586,11 +560,7 @@ xmlSecTransformKWDes3GetKlass(void) {
xmlSecTransformId
xmlSecTransformDsaSha1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformDsaSha1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformDsaSha1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformDsaSha1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -609,11 +579,7 @@ xmlSecTransformDsaSha1GetKlass(void) {
xmlSecTransformId
xmlSecTransformDsaSha256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformDsaSha256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformDsaSha256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformDsaSha256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -632,11 +598,7 @@ xmlSecTransformDsaSha256GetKlass(void) {
xmlSecTransformId
xmlSecTransformEcdsaSha1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformEcdsaSha1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformEcdsaSha1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformEcdsaSha1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -655,11 +617,7 @@ xmlSecTransformEcdsaSha1GetKlass(void) {
xmlSecTransformId
xmlSecTransformEcdsaSha224GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformEcdsaSha224GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformEcdsaSha224Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformEcdsaSha224GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -678,11 +636,7 @@ xmlSecTransformEcdsaSha224GetKlass(void) {
xmlSecTransformId
xmlSecTransformEcdsaSha256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformEcdsaSha256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformEcdsaSha256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformEcdsaSha256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -701,11 +655,7 @@ xmlSecTransformEcdsaSha256GetKlass(void) {
xmlSecTransformId
xmlSecTransformEcdsaSha384GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformEcdsaSha384GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformEcdsaSha384Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformEcdsaSha384GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -724,11 +674,7 @@ xmlSecTransformEcdsaSha384GetKlass(void) {
xmlSecTransformId
xmlSecTransformEcdsaSha512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformEcdsaSha512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformEcdsaSha512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformEcdsaSha512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -747,11 +693,7 @@ xmlSecTransformEcdsaSha512GetKlass(void) {
xmlSecTransformId
xmlSecTransformGost2001GostR3411_94GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGost2001GostR3411_94GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGost2001GostR3411_94Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGost2001GostR3411_94GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -770,11 +712,7 @@ xmlSecTransformGost2001GostR3411_94GetKlass(void) {
xmlSecTransformId
xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3410_2012GostR3411_2012_256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGostR3410_2012GostR3411_2012_256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGostR3410_2012GostR3411_2012_256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -793,11 +731,7 @@ xmlSecTransformGostR3410_2012GostR3411_2012_256GetKlass(void) {
xmlSecTransformId
xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3410_2012GostR3411_2012_512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGostR3410_2012GostR3411_2012_512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGostR3410_2012GostR3411_2012_512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -816,11 +750,7 @@ xmlSecTransformGostR3410_2012GostR3411_2012_512GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacMd5GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacMd5Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacMd5GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -839,11 +769,7 @@ xmlSecTransformHmacMd5GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacRipemd160GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacRipemd160GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacRipemd160Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacRipemd160GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -862,11 +788,7 @@ xmlSecTransformHmacRipemd160GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacSha1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacSha1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacSha1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -885,11 +807,7 @@ xmlSecTransformHmacSha1GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacSha224GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha224GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacSha224Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacSha224GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -908,11 +826,7 @@ xmlSecTransformHmacSha224GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacSha256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacSha256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacSha256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -931,11 +845,7 @@ xmlSecTransformHmacSha256GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacSha384GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha384GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacSha384Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacSha384GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -954,11 +864,7 @@ xmlSecTransformHmacSha384GetKlass(void) {
xmlSecTransformId
xmlSecTransformHmacSha512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformHmacSha512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformHmacSha512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -977,11 +883,7 @@ xmlSecTransformHmacSha512GetKlass(void) {
xmlSecTransformId
xmlSecTransformMd5GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformMd5GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformMd5Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformMd5GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1000,11 +902,7 @@ xmlSecTransformMd5GetKlass(void) {
xmlSecTransformId
xmlSecTransformRipemd160GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRipemd160GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRipemd160Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRipemd160GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1023,11 +921,7 @@ xmlSecTransformRipemd160GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaMd5GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaMd5GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaMd5Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaMd5GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1046,11 +940,7 @@ xmlSecTransformRsaMd5GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaRipemd160GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaRipemd160GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaRipemd160Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaRipemd160GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1069,11 +959,7 @@ xmlSecTransformRsaRipemd160GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaSha1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaSha1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaSha1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1092,11 +978,7 @@ xmlSecTransformRsaSha1GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaSha224GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha224GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaSha224Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaSha224GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1115,11 +997,7 @@ xmlSecTransformRsaSha224GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaSha256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaSha256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaSha256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1138,11 +1016,7 @@ xmlSecTransformRsaSha256GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaSha384GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha384GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaSha384Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaSha384GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1161,11 +1035,7 @@ xmlSecTransformRsaSha384GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaSha512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaSha512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaSha512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1184,11 +1054,7 @@ xmlSecTransformRsaSha512GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaPkcs1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaPkcs1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaPkcs1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaPkcs1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1207,11 +1073,7 @@ xmlSecTransformRsaPkcs1GetKlass(void) {
xmlSecTransformId
xmlSecTransformRsaOaepGetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaOaepGetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformRsaOaepId",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformRsaOaepGetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1230,11 +1092,7 @@ xmlSecTransformRsaOaepGetKlass(void) {
xmlSecTransformId
xmlSecTransformGostR3411_94GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3411_94GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGostR3411_94Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGostR3411_94GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1254,11 +1112,7 @@ xmlSecTransformGostR3411_94GetKlass(void) {
xmlSecTransformId
xmlSecTransformGostR3411_2012_256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3411_2012_256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGostR3411_2012_256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGostR3411_2012_256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1277,11 +1131,7 @@ xmlSecTransformGostR3411_2012_256GetKlass(void) {
xmlSecTransformId
xmlSecTransformGostR3411_2012_512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3411_2012_512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformGostR3411_2012_512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformGostR3411_2012_512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1299,11 +1149,7 @@ xmlSecTransformGostR3411_2012_512GetKlass(void) {
xmlSecTransformId
xmlSecTransformSha1GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha1GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformSha1Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformSha1GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1322,11 +1168,7 @@ xmlSecTransformSha1GetKlass(void) {
xmlSecTransformId
xmlSecTransformSha224GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha224GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformSha224Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformSha224GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1345,11 +1187,7 @@ xmlSecTransformSha224GetKlass(void) {
xmlSecTransformId
xmlSecTransformSha256GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha256GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformSha256Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformSha256GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1368,11 +1206,7 @@ xmlSecTransformSha256GetKlass(void) {
xmlSecTransformId
xmlSecTransformSha384GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha384GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformSha384Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformSha384GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1391,11 +1225,7 @@ xmlSecTransformSha384GetKlass(void) {
xmlSecTransformId
xmlSecTransformSha512GetKlass(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha512GetKlass == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "transformSha512Id",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("transformSha512GetKlass");
return(xmlSecTransformIdUnknown);
}
@@ -1420,11 +1250,7 @@ xmlSecTransformSha512GetKlass(void) {
int
xmlSecCryptoAppInit(const char* config) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppInit == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppInit",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppInit");
return(-1);
}
@@ -1444,11 +1270,7 @@ xmlSecCryptoAppInit(const char* config) {
int
xmlSecCryptoAppShutdown(void) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppShutdown == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppShutdown",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppShutdown");
return(-1);
}
@@ -1467,11 +1289,7 @@ xmlSecCryptoAppShutdown(void) {
int
xmlSecCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrInit == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppDefaultKeysMngrInit",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppDefaultKeysMngrInit");
return(-1);
}
@@ -1491,11 +1309,7 @@ xmlSecCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
int
xmlSecCryptoAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrAdoptKey == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppDefaultKeysMngrAdoptKey",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppDefaultKeysMngrAdoptKey");
return(-1);
}
@@ -1515,11 +1329,7 @@ xmlSecCryptoAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key)
int
xmlSecCryptoAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrLoad == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppDefaultKeysMngrLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppDefaultKeysMngrLoad");
return(-1);
}
@@ -1540,11 +1350,7 @@ int
xmlSecCryptoAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename,
xmlSecKeyDataType type) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrSave == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppDefaultKeysMngrSave",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppDefaultKeysMngrSave");
return(-1);
}
@@ -1568,11 +1374,7 @@ int
xmlSecCryptoAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
xmlSecKeyDataFormat format, xmlSecKeyDataType type) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoad == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeysMngrCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeysMngrCertLoad");
return(-1);
}
@@ -1597,11 +1399,7 @@ xmlSecCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte*
xmlSecSize dataSize, xmlSecKeyDataFormat format,
xmlSecKeyDataType type) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoadMemory == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeysMngrCertLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeysMngrCertLoadMemory");
return(-1);
}
@@ -1624,11 +1422,7 @@ xmlSecKeyPtr
xmlSecCryptoAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
const char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoad == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeyLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeyLoad");
return(NULL);
}
@@ -1652,11 +1446,7 @@ xmlSecKeyPtr
xmlSecCryptoAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlSecKeyDataFormat format,
const char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoadMemory == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeyLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeyLoadMemory");
return(NULL);
}
@@ -1680,11 +1470,7 @@ xmlSecKeyPtr
xmlSecCryptoAppPkcs12Load(const char* filename, const char* pwd, void* pwdCallback,
void* pwdCallbackCtx) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12Load == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppPkcs12Load",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppPkcs12Load");
return(NULL);
}
@@ -1710,11 +1496,7 @@ xmlSecCryptoAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
const char *pwd, void* pwdCallback,
void* pwdCallbackCtx) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12LoadMemory == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppPkcs12LoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppPkcs12LoadMemory");
return(NULL);
}
@@ -1734,11 +1516,7 @@ xmlSecCryptoAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
int
xmlSecCryptoAppKeyCertLoad(xmlSecKeyPtr key, const char* filename, xmlSecKeyDataFormat format) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoad == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeyCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeyCertLoad");
return(-1);
}
@@ -1760,11 +1538,7 @@ int
xmlSecCryptoAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlSecSize dataSize,
xmlSecKeyDataFormat format) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoadMemory == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cryptoAppKeyCertLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppKeyCertLoadMemory");
return(-1);
}
@@ -1781,11 +1555,7 @@ xmlSecCryptoAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlSe
void*
xmlSecCryptoAppGetDefaultPwdCallback(void) {
if(xmlSecCryptoDLGetFunctions() == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("cryptoAppDefaultPwdCallback");
return(NULL);
}
diff --git a/src/base64.c b/src/base64.c
index a78f8164..cc4bbd5f 100644
--- a/src/base64.c
+++ b/src/base64.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Base64 encode/decode transform and utility functions.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:base64
+ * @Short_description: Base64 encoding/decoding functions and base64 transform implementation.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -156,22 +162,13 @@ xmlSecBase64CtxCreate(int encode, int columns) {
*/
ctx = (xmlSecBase64CtxPtr) xmlMalloc(sizeof(xmlSecBase64Ctx));
if (ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecBase64Ctx)=%d",
- (int)sizeof(xmlSecBase64Ctx));
+ xmlSecMallocError(sizeof(xmlSecBase64Ctx), NULL);
return(NULL);
}
ret = xmlSecBase64CtxInitialize(ctx, encode, columns);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxInitialize", NULL);
xmlSecBase64CtxDestroy(ctx);
return(NULL);
}
@@ -254,22 +251,14 @@ xmlSecBase64CtxUpdate(xmlSecBase64CtxPtr ctx,
ret = xmlSecBase64CtxEncode(ctx, in, inSize, &inResSize,
out, outSize, &outResSize);
if((ret < 0) || (inResSize != inSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxEncode", NULL);
return(-1);
}
} else {
ret = xmlSecBase64CtxDecode(ctx, in, inSize, &inResSize,
out, outSize, &outResSize);
if((ret < 0) || (inResSize != inSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxDecode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxDecode", NULL);
return(-1);
}
}
@@ -302,20 +291,12 @@ xmlSecBase64CtxFinal(xmlSecBase64CtxPtr ctx,
if(ctx->encode != 0) {
ret = xmlSecBase64CtxEncodeFinal(ctx, out, outSize, &outResSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxEncodeFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBase64CtxEncodeFinal", NULL, "outSize=%d", outSize);
return(-1);
}
} else {
if(!xmlSecBase64CtxDecodeIsFinished(ctx)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxIsFinished",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxDecodeIsFinished", NULL);
return(-1);
}
}
@@ -363,11 +344,7 @@ xmlSecBase64CtxEncodeByte(xmlSecBase64CtxPtr ctx, xmlSecByte inByte, xmlSecByte*
return(xmlSecBase64StatusConsumeAndNext);
}
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "ctx->inPos=%d", ctx->inPos);
+ xmlSecInvalidIntegerDataError("ctx->inPos", ctx->inPos, "0,1,2,3", NULL);
return(xmlSecBase64StatusFailed);
}
@@ -397,11 +374,7 @@ xmlSecBase64CtxEncodeByteFinal(xmlSecBase64CtxPtr ctx, xmlSecByte* outByte) {
return(xmlSecBase64StatusConsumeAndRepeat);
}
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "ctx->inPos=%d", ctx->inPos);
+ xmlSecInvalidIntegerDataError("ctx->inPos", ctx->inPos, "0,1,2,3", NULL);
return(xmlSecBase64StatusFailed);
}
@@ -414,35 +387,20 @@ xmlSecBase64CtxDecodeByte(xmlSecBase64CtxPtr ctx, xmlSecByte inByte, xmlSecByte*
return(xmlSecBase64StatusDone);
} if(inByte == '=') {
ctx->finished = 1;
- if(ctx->inPos < 2) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "ctx->inPos=%d", ctx->inPos);
- return(xmlSecBase64StatusFailed);
- } else if(ctx->inPos == 2) {
+ if(ctx->inPos == 2) {
++ctx->inPos;
return(xmlSecBase64StatusNext);
} else if(ctx->inPos == 3) {
ctx->inPos = 0;
return(xmlSecBase64StatusNext);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "ctx->inPos=%d", ctx->inPos);
+ xmlSecInvalidIntegerDataError("ctx->inPos", ctx->inPos, "2,3", NULL);
return(xmlSecBase64StatusFailed);
}
} else if(xmlSecIsBase64Space(inByte)) {
return(xmlSecBase64StatusNext);
} else if(!xmlSecIsBase64Char(inByte) || (ctx->finished != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "inByte=0x%02x", inByte);
+ xmlSecInvalidIntegerDataError("inByte", inByte, "base64 character", NULL);
return(xmlSecBase64StatusFailed);
}
@@ -464,27 +422,23 @@ xmlSecBase64CtxDecodeByte(xmlSecBase64CtxPtr ctx, xmlSecByte inByte, xmlSecByte*
++ctx->inPos;
return(xmlSecBase64StatusNext);
} else if(ctx->inPos == 1) {
- (*outByte) = xmlSecBase64Decode1(ctx->inByte, inByte);
+ (*outByte) = (xmlSecByte)xmlSecBase64Decode1(ctx->inByte, inByte);
ctx->inByte = inByte;
++ctx->inPos;
return(xmlSecBase64StatusConsumeAndNext);
} else if(ctx->inPos == 2) {
- (*outByte) = xmlSecBase64Decode2(ctx->inByte, inByte);
+ (*outByte) = (xmlSecByte)xmlSecBase64Decode2(ctx->inByte, inByte);
ctx->inByte = inByte;
++ctx->inPos;
return(xmlSecBase64StatusConsumeAndNext);
} else if(ctx->inPos == 3) {
- (*outByte) = xmlSecBase64Decode3(ctx->inByte, inByte);
+ (*outByte) = (xmlSecByte)xmlSecBase64Decode3(ctx->inByte, inByte);
ctx->inByte = 0;
ctx->inPos = 0;
return(xmlSecBase64StatusConsumeAndNext);
}
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "ctx->inPos=%d", ctx->inPos);
+ xmlSecInvalidIntegerDataError("ctx->inPos", ctx->inPos, "0,1,2,3", NULL);
return(xmlSecBase64StatusFailed);
}
@@ -516,11 +470,7 @@ xmlSecBase64CtxEncode(xmlSecBase64CtxPtr ctx,
case xmlSecBase64StatusNext:
case xmlSecBase64StatusDone:
case xmlSecBase64StatusFailed:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxEncodeByte",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "status=%d", status);
+ xmlSecInternalError2("xmlSecBase64CtxEncodeByte", NULL, "status=%d", status);
return(-1);
}
}
@@ -553,21 +503,13 @@ xmlSecBase64CtxEncodeFinal(xmlSecBase64CtxPtr ctx,
break;
case xmlSecBase64StatusNext:
case xmlSecBase64StatusFailed:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxEncodeByteFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "status=%d", status);
+ xmlSecInternalError2("xmlSecBase64CtxEncodeByteFinal", NULL, "status=%d", status);
return(-1);
}
}
if(status != xmlSecBase64StatusDone) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "outBufSize=%d", outBufSize);
+ xmlSecInvalidSizeOtherError("invalid base64 buffer size", NULL);
return(-1);
}
if(outPos < outBufSize) {
@@ -609,11 +551,7 @@ xmlSecBase64CtxDecode(xmlSecBase64CtxPtr ctx,
case xmlSecBase64StatusDone:
break;
case xmlSecBase64StatusFailed:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxDecodeByte",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "status=%d", status);
+ xmlSecInternalError2("xmlSecBase64CtxDecodeByte", NULL, "status=%d", status);
return(-1);
}
}
@@ -662,11 +600,7 @@ xmlSecBase64Encode(const xmlSecByte *buf, xmlSecSize len, int columns) {
ret = xmlSecBase64CtxInitialize(&ctx, 1, columns);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxInitialize", NULL);
return(NULL);
}
@@ -677,22 +611,16 @@ xmlSecBase64Encode(const xmlSecByte *buf, xmlSecSize len, int columns) {
}
ptr = (xmlChar*) xmlMalloc(size);
if(ptr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", size);
+ xmlSecMallocError(size, NULL);
xmlSecBase64CtxFinalize(&ctx);
return(NULL);
}
ret = xmlSecBase64CtxUpdate(&ctx, buf, len, (xmlSecByte*)ptr, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "len=%d", len);
+ xmlSecInternalError3("xmlSecBase64CtxUpdate", NULL,
+ "len=%lu;size=%lu",
+ (unsigned long)len, (unsigned long)size);
xmlFree(ptr);
xmlSecBase64CtxFinalize(&ctx);
return(NULL);
@@ -701,11 +629,7 @@ xmlSecBase64Encode(const xmlSecByte *buf, xmlSecSize len, int columns) {
ret = xmlSecBase64CtxFinal(&ctx, ((xmlSecByte*)ptr) + size_update, size - size_update);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxFinal", NULL);
xmlFree(ptr);
xmlSecBase64CtxFinalize(&ctx);
return(NULL);
@@ -741,21 +665,13 @@ xmlSecBase64Decode(const xmlChar* str, xmlSecByte *buf, xmlSecSize len) {
ret = xmlSecBase64CtxInitialize(&ctx, 0, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxInitialize", NULL);
return(-1);
}
ret = xmlSecBase64CtxUpdate(&ctx, (const xmlSecByte*)str, xmlStrlen(str), buf, len);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxUpdate", NULL);
xmlSecBase64CtxFinalize(&ctx);
return(-1);
}
@@ -763,11 +679,7 @@ xmlSecBase64Decode(const xmlChar* str, xmlSecByte *buf, xmlSecSize len) {
size_update = ret;
ret = xmlSecBase64CtxFinal(&ctx, buf + size_update, len - size_update);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64CtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxFinal", NULL);
xmlSecBase64CtxFinalize(&ctx);
return(-1);
}
@@ -873,11 +785,8 @@ xmlSecBase64Initialize(xmlSecTransformPtr transform) {
transform->operation = xmlSecTransformOperationDecode;
ret = xmlSecBase64CtxInitialize(ctx, 0, xmlSecBase64GetDefaultLineSize());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBase64CtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -933,11 +842,9 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
}
ret = xmlSecBufferSetMaxSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize + outLen);
return(-1);
}
@@ -946,11 +853,8 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
xmlSecBufferGetData(out) + outSize,
outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBase64CtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
outLen = ret;
@@ -958,22 +862,18 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
/* set correct size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove chunk from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -983,22 +883,17 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
ret = xmlSecBufferSetMaxSize(out, outSize + 16);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + 16);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize + 16);
return(-1);
}
/* add from ctx buffer */
ret = xmlSecBase64CtxFinal(ctx, xmlSecBufferGetData(out) + outSize, 16);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBase64CtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64CtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
outLen = ret;
@@ -1006,11 +901,9 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
/* set correct size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize + outLen);
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -1021,11 +914,7 @@ xmlSecBase64Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPt
xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
diff --git a/src/bn.c b/src/bn.c
index 48fb990a..6085eb27 100644
--- a/src/bn.c
+++ b/src/bn.c
@@ -1,7 +1,6 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Big Numbers.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -9,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
*/
+/**
+ * SECTION:bn
+ * @Short_description: Big numbers support functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -197,23 +203,19 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
*/
ret = xmlSecBufferSetMaxSize(bn, xmlSecBufferGetSize(bn) + len / 2 + 1 + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnRevLookupTable",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", len / 2 + 1);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL, "size=%d", len / 2 + 1);
return (-1);
}
/* figure out if it is positive or negative number */
- positive = 1;
+ positive = 1; /* no sign, positive by default */
i = 0;
while(i < len) {
ch = str[i++];
/* skip spaces */
if(isspace(ch)) {
- continue;
+ continue;
}
/* check if it is + or - */
@@ -225,64 +227,37 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
break;
}
- /* otherwise, it must be start of the number */
- nn = xmlSecBnLookupTable[ch];
- if((nn >= 0) && ((xmlSecSize)nn < base)) {
- xmlSecAssert2(i > 0, -1);
-
- /* no sign, positive by default */
- positive = 1;
- --i; /* make sure that we will look at this character in next loop */
- break;
- } else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "char=%c;base=%d",
- ch, base);
- return (-1);
- }
+ /* otherwise, it must be start of the number, make sure that we will look
+ * at this character in next loop */
+ xmlSecAssert2(i > 0, -1);
+ --i;
+ break;
}
/* now parse the number itself */
while(i < len) {
ch = str[i++];
if(isspace(ch)) {
- continue;
+ continue;
}
- xmlSecAssert2(ch < sizeof(xmlSecBnLookupTable) / sizeof(xmlSecBnLookupTable[0]), -1);
nn = xmlSecBnLookupTable[ch];
- if((nn < 0) || ((xmlSecSize)nn > base)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "char=%c;base=%d",
- ch, base);
- return (-1);
+ if((nn < 0) || ((xmlSecSize)nn >= base)) {
+ xmlSecInvalidIntegerDataError2("char", nn, "base", base, "0 <= char < base", NULL);
+ return (-1);
}
ret = xmlSecBnMul(bn, base);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnMul",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "base=%d", base);
- return (-1);
+ xmlSecInternalError2("xmlSecBnMul", NULL, "base=%d", base);
+ return (-1);
}
ret = xmlSecBnAdd(bn, nn);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "base=%d", base);
- return (-1);
-}
+ xmlSecInternalError2("xmlSecBnAdd", NULL, "base=%d", base);
+ return (-1);
+ }
}
/* check if we need to add 00 prefix, do this for empty bn too */
@@ -292,11 +267,7 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
ch = 0;
ret = xmlSecBufferPrepend(bn, &ch, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "base=%d", base);
+ xmlSecInternalError2("xmlSecBufferPrepend", NULL, "base=%d", base);
return (-1);
}
}
@@ -311,11 +282,7 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
ret = xmlSecBnAdd(bn, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "base=%d", base);
+ xmlSecInternalError2("xmlSecBnAdd", NULL, "base=%d", base);
return (-1);
}
}
@@ -354,21 +321,13 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
size = xmlSecBufferGetSize(bn);
ret = xmlSecBnInitialize(&bn2, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBnInitialize", NULL, "size=%d", size);
return (NULL);
}
ret = xmlSecBnSetData(&bn2, data, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBnSetData", NULL, "size=%d", size);
xmlSecBnFinalize(&bn2);
return (NULL);
}
@@ -380,11 +339,7 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
/* subtract 1 and do 2's compliment */
ret = xmlSecBnAdd(&bn2, -1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBnAdd", NULL, "size=%d", size);
xmlSecBnFinalize(&bn2);
return (NULL);
}
@@ -405,11 +360,7 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
len = 8 * size + 1 + 1;
res = (xmlChar*)xmlMalloc(len + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "len=%d", len);
+ xmlSecMallocError(len + 1, NULL);
xmlSecBnFinalize(&bn2);
return (NULL);
}
@@ -417,11 +368,7 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
for(i = 0; (xmlSecBufferGetSize(&bn2) > 0) && (i < len); i++) {
if(xmlSecBnDiv(&bn2, base, &nn) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnDiv",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "base=%d", base);
+ xmlSecInternalError2("xmlSecBnDiv", NULL, "base=%d", base);
xmlFree(res);
xmlSecBnFinalize(&bn2);
return (NULL);
@@ -432,7 +379,8 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
xmlSecAssert2(i < len, NULL);
/* we might have '0' at the beggining, remove it but keep one zero */
- for(len = i; (len > 1) && (res[len - 1] == '0'); len--);
+ for(len = i; (len > 1) && (res[len - 1] == '0'); len--) {
+ }
res[len] = '\0';
/* add "-" for negative numbers */
@@ -549,11 +497,7 @@ xmlSecBnMul(xmlSecBnPtr bn, int multiplier) {
ret = xmlSecBufferPrepend(bn, &ch, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=1");
+ xmlSecInternalError2("xmlSecBufferPrepend", NULL, "size=%d", 1);
return (-1);
}
}
@@ -592,7 +536,7 @@ xmlSecBnDiv(xmlSecBnPtr bn, int divider, int* mod) {
xmlSecAssert2(data != NULL, -1);
over = over * 256 + data[i];
- data[i] = over / divider;
+ data[i] = (xmlSecByte)(over / divider);
over = over % divider;
}
(*mod) = over;
@@ -608,11 +552,7 @@ xmlSecBnDiv(xmlSecBnPtr bn, int divider, int* mod) {
if(i > 0) {
ret = xmlSecBufferRemoveHead(bn, i);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", i);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", NULL, "size=%d", i);
return (-1);
}
}
@@ -659,11 +599,7 @@ xmlSecBnAdd(xmlSecBnPtr bn, int delta) {
ret = xmlSecBufferPrepend(bn, &ch, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=1");
+ xmlSecInternalError2("xmlSecBufferPrepend", NULL, "size=%d", 1);
return (-1);
}
}
@@ -676,7 +612,7 @@ xmlSecBnAdd(xmlSecBnPtr bn, int delta) {
data[i] = 0;
over = (over - tmp) / 256;
} else {
- data[i] = tmp - over;
+ data[i] = (xmlSecByte)(tmp - over);
over = 0;
}
}
@@ -823,7 +759,7 @@ xmlSecBnCompareReverse(xmlSecBnPtr bn, const xmlSecByte* data, xmlSecSize dataSi
/**
* xmlSecBnGetNodeValue:
* @bn: the pointer to BN.
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
* @format: the BN format.
* @reverse: if set then reverse read buffer after reading.
*
@@ -843,31 +779,19 @@ xmlSecBnGetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
case xmlSecBnBase64:
ret = xmlSecBufferBase64NodeContentRead(bn, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead", NULL);
return(-1);
}
break;
case xmlSecBnHex:
content = xmlNodeGetContent(cur);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNodeGetContent",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNodeGetContent", NULL);
return(-1);
}
ret = xmlSecBnFromHexString(bn, content);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnFromHexString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnFromHexString", NULL);
xmlFree(content);
return(-1);
}
@@ -876,20 +800,12 @@ xmlSecBnGetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
case xmlSecBnDec:
content = xmlNodeGetContent(cur);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNodeGetContent",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNodeGetContent", NULL);
return(-1);
}
ret = xmlSecBnFromDecString(bn, content);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnFromDecString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnFromDecString", NULL);
xmlFree(content);
return(-1);
}
@@ -900,11 +816,7 @@ xmlSecBnGetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
if(reverse != 0) {
ret = xmlSecBnReverse(bn);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnReverse",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnReverse", NULL);
return(-1);
}
}
@@ -914,7 +826,7 @@ xmlSecBnGetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
/**
* xmlSecBnSetNodeValue:
* @bn: the pointer to BN.
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
* @format: the BN format.
* @reverse: the flag that indicates whether to reverse the buffer before writing.
* @addLineBreaks: the flag; it is equal to 1 then linebreaks will be added before and after new buffer content.
@@ -934,39 +846,27 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
if(reverse != 0) {
ret = xmlSecBnReverse(bn);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnReverse",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnReverse", NULL);
return(-1);
}
}
if(addLineBreaks) {
- xmlNodeAddContent(cur, xmlSecStringCR);
+ xmlNodeAddContent(cur, xmlSecGetDefaultLineFeed());
}
switch(format) {
case xmlSecBnBase64:
ret = xmlSecBufferBase64NodeContentWrite(bn, cur, xmlSecBase64GetDefaultLineSize());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentWrite", NULL);
return(-1);
}
break;
case xmlSecBnHex:
content = xmlSecBnToHexString(bn);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnToHexString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnToHexString", NULL);
xmlFree(content);
return(-1);
}
@@ -976,11 +876,7 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
case xmlSecBnDec:
content = xmlSecBnToDecString(bn);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnToDecString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnToDecString", NULL);
xmlFree(content);
return(-1);
}
@@ -990,7 +886,7 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
}
if(addLineBreaks) {
- xmlNodeAddContent(cur, xmlSecStringCR);
+ xmlNodeAddContent(cur, xmlSecGetDefaultLineFeed());
}
return(0);
@@ -1000,7 +896,7 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
* xmlSecBnBlobSetNodeValue:
* @data: the pointer to BN blob.
* @dataSize: the size of BN blob.
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
* @format: the BN format.
* @reverse: the flag that indicates whether to reverse the buffer before writing.
* @addLineBreaks: if the flag is equal to 1 then
@@ -1023,32 +919,20 @@ xmlSecBnBlobSetNodeValue(const xmlSecByte* data, xmlSecSize dataSize,
ret = xmlSecBnInitialize(&bn, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnInitialize", NULL);
return(-1);
}
ret = xmlSecBnSetData(&bn, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnSetData", NULL);
xmlSecBnFinalize(&bn);
return(-1);
}
ret = xmlSecBnSetNodeValue(&bn, cur, format, reverse, addLineBreaks);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnSetNodeValue", NULL);
xmlSecBnFinalize(&bn);
return(-1);
}
diff --git a/src/buffer.c b/src/buffer.c
index 55a95dda..cc0da65f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1,19 +1,24 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Memory buffer.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:buffer
+ * @Short_description:Binary memory buffer functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include <errno.h>
#include <libxml/tree.h>
@@ -50,7 +55,7 @@ xmlSecBufferSetDefaultAllocMode(xmlSecAllocMode defAllocMode, xmlSecSize defInit
* xmlSecBufferCreate:
* @size: the intial size.
*
- * Allocates and initalizes new memory buffer with given size.
+ * Allocates and initializes new memory buffer with given size.
* Caller is responsible for calling #xmlSecBufferDestroy function
* to free the buffer.
*
@@ -63,21 +68,13 @@ xmlSecBufferCreate(xmlSecSize size) {
buf = (xmlSecBufferPtr)xmlMalloc(sizeof(xmlSecBuffer));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecBuffer)=%d", (int)sizeof(xmlSecBuffer));
+ xmlSecMallocError(sizeof(xmlSecBuffer), NULL);
return(NULL);
}
ret = xmlSecBufferInitialize(buf, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferInitialize", NULL, "size=%d", size);
xmlSecBufferDestroy(buf);
return(NULL);
}
@@ -88,7 +85,7 @@ xmlSecBufferCreate(xmlSecSize size) {
* xmlSecBufferDestroy:
* @buf: the pointer to buffer object.
*
- * Desrtoys buffer object created with #xmlSecBufferCreate function.
+ * Destroys buffer object created with #xmlSecBufferCreate function.
*/
void
xmlSecBufferDestroy(xmlSecBufferPtr buf) {
@@ -123,7 +120,7 @@ xmlSecBufferInitialize(xmlSecBufferPtr buf, xmlSecSize size) {
* xmlSecBufferFinalize:
* @buf: the pointer to buffer object.
*
- * Frees allocated resource for a buffer intialized with #xmlSecBufferInitialize
+ * Frees allocated resource for a buffer initialized with #xmlSecBufferInitialize
* function.
*/
void
@@ -193,11 +190,7 @@ xmlSecBufferSetData(xmlSecBufferPtr buf, const xmlSecByte* data, xmlSecSize size
ret = xmlSecBufferSetMaxSize(buf, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL, "size=%d", size);
return(-1);
}
@@ -241,11 +234,7 @@ xmlSecBufferSetSize(xmlSecBufferPtr buf, xmlSecSize size) {
ret = xmlSecBufferSetMaxSize(buf, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL, "size=%d", size);
return(-1);
}
@@ -309,11 +298,7 @@ xmlSecBufferSetMaxSize(xmlSecBufferPtr buf, xmlSecSize size) {
newData = (xmlSecByte*)xmlMalloc(newSize);
}
if(newData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", newSize);
+ xmlSecMallocError(newSize, NULL);
return(-1);
}
@@ -349,11 +334,7 @@ xmlSecBufferAppend(xmlSecBufferPtr buf, const xmlSecByte* data, xmlSecSize size)
ret = xmlSecBufferSetMaxSize(buf, buf->size + size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", buf->size + size);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL, "size=%d", buf->size + size);
return(-1);
}
@@ -385,11 +366,7 @@ xmlSecBufferPrepend(xmlSecBufferPtr buf, const xmlSecByte* data, xmlSecSize size
ret = xmlSecBufferSetMaxSize(buf, buf->size + size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", buf->size + size);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL, "size=%d", buf->size + size);
return(-1);
}
@@ -466,48 +443,34 @@ xmlSecBufferRemoveTail(xmlSecBufferPtr buf, xmlSecSize size) {
int
xmlSecBufferReadFile(xmlSecBufferPtr buf, const char* filename) {
xmlSecByte buffer[1024];
- FILE* f;
- int ret, len;
+ FILE* f = NULL;
+ size_t len;
+ int ret;
xmlSecAssert2(buf != NULL, -1);
xmlSecAssert2(filename != NULL, -1);
+#ifndef _MSC_VER
f = fopen(filename, "rb");
+#else
+ fopen_s(&f, filename, "rb");
+#endif /* _MSC_VER */
if(f == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "fopen",
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecIOError("fopen", filename, NULL);
return(-1);
}
- while(1) {
+ while(!feof(f)) {
len = fread(buffer, 1, sizeof(buffer), f);
- if(len == 0) {
- break;
- }else if(len < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "fread",
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ if(ferror(f)) {
+ xmlSecIOError("fread", filename, NULL);
fclose(f);
return(-1);
}
- ret = xmlSecBufferAppend(buf, buffer, len);
+ ret = xmlSecBufferAppend(buf, buffer, XMLSEC_SIZE_BAD_CAST(len));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d",
- len);
+ xmlSecInternalError2("xmlSecBufferAppend", NULL, "size=%d", XMLSEC_SIZE_BAD_CAST(len));
fclose(f);
return(-1);
}
@@ -538,33 +501,21 @@ xmlSecBufferBase64NodeContentRead(xmlSecBufferPtr buf, xmlNodePtr node) {
content = xmlNodeGetContent(node);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, NULL, "empty");
return(-1);
}
/* base64 decode size is less than input size */
ret = xmlSecBufferSetMaxSize(buf, xmlStrlen(content));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferSetMaxSize", NULL);
xmlFree(content);
return(-1);
}
ret = xmlSecBase64Decode(content, xmlSecBufferGetData(buf), xmlSecBufferGetMaxSize(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
xmlFree(content);
return(-1);
}
@@ -572,11 +523,7 @@ xmlSecBufferBase64NodeContentRead(xmlSecBufferPtr buf, xmlNodePtr node) {
ret = xmlSecBufferSetSize(buf, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", size);
xmlFree(content);
return(-1);
}
@@ -589,7 +536,7 @@ xmlSecBufferBase64NodeContentRead(xmlSecBufferPtr buf, xmlNodePtr node) {
* xmlSecBufferBase64NodeContentWrite:
* @buf: the pointer to buffer object.
* @node: the pointer to a node.
- * @columns: the max line size fro base64 encoded data.
+ * @columns: the max line size for base64 encoded data.
*
* Sets the content of the @node to the base64 encoded buffer data.
*
@@ -604,11 +551,7 @@ xmlSecBufferBase64NodeContentWrite(xmlSecBufferPtr buf, xmlNodePtr node, int col
content = xmlSecBase64Encode(xmlSecBufferGetData(buf), xmlSecBufferGetSize(buf), columns);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
return(-1);
}
xmlNodeAddContent(node, content);
@@ -654,11 +597,7 @@ xmlSecBufferIOWrite(xmlSecBufferPtr buf, const xmlSecByte *data, xmlSecSize size
ret = xmlSecBufferAppend(buf, data, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferAppend", NULL, "size=%d", size);
return(-1);
}
diff --git a/src/c14n.c b/src/c14n.c
index 59a7ddcf..7c64feef 100644
--- a/src/c14n.c
+++ b/src/c14n.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Canonicalization transforms.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:c14n
+ * @Short_description: C14N transform implementation.
+ * @Stability: Private
+ *
+ */
#include "globals.h"
#include <stdlib.h>
@@ -84,11 +89,8 @@ xmlSecTransformC14NInitialize(xmlSecTransformPtr transform) {
ret = xmlSecPtrListInitialize(nsList, xmlSecStringListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -127,22 +129,16 @@ xmlSecTransformC14NNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSe
cur = xmlSecGetNextElementNode(node->children);
if(cur != NULL) {
if(!xmlSecCheckNodeName(cur, xmlSecNodeInclusiveNamespaces, xmlSecNsExcC14N)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeInclusiveNamespaces,
+ xmlSecTransformGetName(transform));
return(-1);
}
list = xmlGetProp(cur, xmlSecAttrPrefixList);
if(list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecAttrPrefixList),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrPrefixList,
+ xmlSecTransformGetName(transform),
+ "empty");
return(-1);
}
@@ -155,22 +151,15 @@ xmlSecTransformC14NNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSe
tmp = xmlStrdup(p);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "len=%d", xmlStrlen(p));
+ xmlSecStrdupError(p, xmlSecTransformGetName(transform));
xmlFree(list);
return(-1);
}
ret = xmlSecPtrListAdd(nsList, tmp);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlFree(tmp);
xmlFree(list);
return(-1);
@@ -181,11 +170,8 @@ xmlSecTransformC14NNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSe
/* add NULL at the end */
ret = xmlSecPtrListAdd(nsList, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -194,11 +180,7 @@ xmlSecTransformC14NNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSe
/* check that we have nothing else */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
@@ -226,11 +208,7 @@ xmlSecTransformC14NPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nodes,
case xmlSecTransformStatusFinished:
return(0);
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
xmlSecAssert2(transform->status == xmlSecTransformStatusWorking, -1);
@@ -239,21 +217,15 @@ xmlSecTransformC14NPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nodes,
if(transform->next != NULL) {
buf = xmlSecTransformCreateOutputBuffer(transform->next, transformCtx);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
buf = xmlSecBufferCreateOutputBuffer(&(transform->outBuf));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -265,22 +237,15 @@ xmlSecTransformC14NPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nodes,
ret = xmlSecTransformC14NExecute(transform->id, nodes, (xmlChar**)(nsList->data), buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformC14NExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformC14NExecute",
+ xmlSecTransformGetName(transform));
xmlOutputBufferClose(buf);
return(-1);
}
ret = xmlOutputBufferClose(buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -316,22 +281,16 @@ xmlSecTransformC14NPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
/* get xml data from previous transform */
ret = xmlSecTransformPopXml(transform->prev, &(transform->inNodes), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformPopXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopXml",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* dump everything to internal buffer */
buf = xmlSecBufferCreateOutputBuffer(out);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -342,21 +301,14 @@ xmlSecTransformC14NPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
ret = xmlSecTransformC14NExecute(transform->id, transform->inNodes, (xmlChar**)(nsList->data), buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformC14NExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformC14NExecute",
+ xmlSecTransformGetName(transform));
xmlOutputBufferClose(buf);
return(-1);
}
ret = xmlOutputBufferClose(buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusWorking;
@@ -379,11 +331,9 @@ xmlSecTransformC14NPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
memcpy(data, xmlSecBufferGetData(&(transform->outBuf)), outSize);
ret = xmlSecBufferRemoveHead(&(transform->outBuf), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
} else if(xmlSecBufferGetSize(out) == 0) {
@@ -395,11 +345,7 @@ xmlSecTransformC14NPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
xmlSecAssert2(xmlSecBufferGetSize(out) == 0, -1);
(*dataSize) = 0;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -445,20 +391,13 @@ xmlSecTransformC14NExecute(xmlSecTransformId id, xmlSecNodeSetPtr nodes, xmlChar
ret = xmlSecNodeSetDumpTextNodes(nodes, buf);
} else {
/* shoudn't be possible to come here, actually */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_TRANSFORM,
+ xmlSecTransformKlassGetName(id), NULL);
return(-1);
}
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)),
- "xmlC14NExecute",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlC14NExecute", xmlSecTransformKlassGetName(id));
return(-1);
}
@@ -688,7 +627,7 @@ static xmlSecTransformKlass xmlSecTransformExclC14NKlass = {
/**
* xmlSecTransformExclC14NGetKlass:
*
- * Exclusive canoncicalization that ommits comments transform klass
+ * Exclusive canoncicalization that omits comments transform klass
* (http://www.w3.org/TR/xml-exc-c14n/).
*
* Returns: exclusive c14n transform id.
diff --git a/src/dl.c b/src/dl.c
index 7ab84d76..b13f9d46 100644
--- a/src/dl.c
+++ b/src/dl.c
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
*
@@ -7,6 +7,12 @@
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:dl
+ * @Short_description: Dynamic crypto-engine library loading functions.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
#include <stdlib.h>
@@ -31,7 +37,6 @@
#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
-
#ifdef XMLSEC_DL_LIBLTDL
#include <ltdl.h>
#endif /* XMLSEC_DL_LIBLTDL */
@@ -98,44 +103,28 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
/* Allocate a new xmlSecCryptoDLLibrary and fill the fields. */
lib = (xmlSecCryptoDLLibraryPtr)xmlMalloc(sizeof(xmlSecCryptoDLLibrary));
if(lib == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)sizeof(lib));
+ xmlSecMallocError(sizeof(xmlSecCryptoDLLibrary), NULL);
return(NULL);
}
memset(lib, 0, sizeof(xmlSecCryptoDLLibrary));
lib->name = xmlStrdup(name);
if(lib->name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlStrdup",
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(name, NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
lib->filename = xmlSecCryptoDLLibraryConstructFilename(name);
if(lib->filename == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecCryptoDLLibraryConstructFilename",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLLibraryConstructFilename", NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
lib->getFunctionsName = xmlSecCryptoDLLibraryConstructGetFunctionsName(name);
if(lib->getFunctionsName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecCryptoDLLibraryConstructGetFunctionsName",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLLibraryConstructGetFunctionsName", NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -143,12 +132,7 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
#ifdef XMLSEC_DL_LIBLTDL
lib->handle = lt_dlopenext((char*)lib->filename);
if(lib->handle == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "lt_dlopenext",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(lib->filename));
+ xmlSecIOError("lt_dlopenext", lib->filename, NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -157,12 +141,7 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
lt_dlsym(lib->handle, (char*)lib->getFunctionsName)
);
if(getFunctions == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "lt_dlsym",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- "function=%s",
- xmlSecErrorsSafeString(lib->getFunctionsName));
+ xmlSecIOError("lt_dlsym", lib->getFunctionsName, NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -171,12 +150,7 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
#ifdef XMLSEC_DL_WIN32
lib->handle = LoadLibraryA((char*)lib->filename);
if(lib->handle == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "LoadLibraryA",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(lib->filename));
+ xmlSecIOError("LoadLibraryA", lib->filename, NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -188,34 +162,21 @@ xmlSecCryptoDLLibraryCreate(const xmlChar* name) {
)
);
if(getFunctions == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "GetProcAddressA",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- "function=%s",
- xmlSecErrorsSafeString(lib->getFunctionsName));
+ xmlSecIOError("GetProcAddressA", lib->getFunctionsName, NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
#endif /* XMLSEC_DL_WIN32 */
if(getFunctions == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "invalid configuration: no way to load library");
+ xmlSecInternalError("invalid configuration: no way to load library", NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
lib->functions = getFunctions();
if(lib->functions == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "getFunctions",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("getFunctions", NULL);
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -247,11 +208,7 @@ xmlSecCryptoDLLibraryDestroy(xmlSecCryptoDLLibraryPtr lib) {
ret = lt_dlclose(lib->handle);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "lt_dlclose",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecIOError("lt_dlclose", NULL, NULL);
}
}
#endif /* XMLSEC_DL_LIBLTDL */
@@ -262,11 +219,7 @@ xmlSecCryptoDLLibraryDestroy(xmlSecCryptoDLLibraryPtr lib) {
res = FreeLibrary(lib->handle);
if(!res) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "FreeLibrary",
- NULL,
- XMLSEC_ERRORS_R_IO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecIOError("FreeLibrary", NULL, NULL);
}
}
#endif /* XMLSEC_DL_WIN32*/
@@ -285,47 +238,53 @@ xmlSecCryptoDLLibraryDuplicate(xmlSecCryptoDLLibraryPtr lib) {
static xmlChar*
xmlSecCryptoDLLibraryConstructFilename(const xmlChar* name) {
- static xmlChar tmpl[] = "lib%s-%s";
+ static char tmpl[] = "lib%s-%s";
xmlChar* res;
int len;
+ int ret;
xmlSecAssert2(name != NULL, NULL);
/* TODO */
- len = xmlStrlen(BAD_CAST PACKAGE) + xmlStrlen(name) + xmlStrlen(tmpl) + 1;
+ len = xmlStrlen(BAD_CAST PACKAGE) + xmlStrlen(name) + xmlStrlen(BAD_CAST tmpl) + 1;
res = (xmlChar*)xmlMalloc(len + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", len + 1);
+ xmlSecMallocError(len + 1, NULL);
+ return(NULL);
+ }
+
+ ret = xmlStrPrintf(res, len, tmpl, PACKAGE, name);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ xmlFree(res);
return(NULL);
}
- xmlSecStrPrintf(res, len, tmpl, PACKAGE, name);
return(res);
}
static xmlChar*
xmlSecCryptoDLLibraryConstructGetFunctionsName(const xmlChar* name) {
- static xmlChar tmpl[] = "xmlSecCryptoGetFunctions_%s";
+ static char tmpl[] = "xmlSecCryptoGetFunctions_%s";
xmlChar* res;
int len;
+ int ret;
xmlSecAssert2(name != NULL, NULL);
- len = xmlStrlen(name) + xmlStrlen(tmpl) + 1;
+ len = xmlStrlen(name) + xmlStrlen(BAD_CAST tmpl) + 1;
res = (xmlChar*)xmlMalloc(len + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", len + 1);
+ xmlSecMallocError(len + 1, NULL);
+ return(NULL);
+ }
+
+ ret = xmlStrPrintf(res, len, tmpl, name);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ xmlFree(res);
return(NULL);
}
- xmlSecStrPrintf(res, len, tmpl, name);
return(res);
}
@@ -373,24 +332,18 @@ int
xmlSecCryptoDLInit(void) {
int ret;
- ret = xmlSecPtrListInitialize(&gXmlSecCryptoDLLibraries, xmlSecCryptoDLLibrariesListGetKlass());
+ ret = xmlSecPtrListInitialize(&gXmlSecCryptoDLLibraries,
+ xmlSecCryptoDLLibrariesListGetKlass());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListPtrInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecCryptoDLLibrariesListGetKlass");
+ xmlSecInternalError("xmlSecPtrListInitialize",
+ "xmlSecCryptoDLLibrariesListGetKlass");
return(-1);
}
#ifdef XMLSEC_DL_LIBLTDL
ret = lt_dlinit ();
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "lt_dlinit",
- XMLSEC_ERRORS_R_IO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecIOError("lt_dlinit", NULL, NULL);
return(-1);
}
#endif /* XMLSEC_DL_LIBLTDL */
@@ -416,12 +369,10 @@ xmlSecCryptoDLShutdown(void) {
#ifdef XMLSEC_DL_LIBLTDL
ret = lt_dlexit ();
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "lt_dlexit",
- XMLSEC_ERRORS_R_IO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecIOError("lt_dlexit", NULL, NULL);
}
+#else /* XMLSEC_DL_LIBLTDL */
+ UNREFERENCED_PARAMETER(ret);
#endif /* XMLSEC_DL_LIBLTDL */
return(0);
@@ -446,21 +397,13 @@ xmlSecCryptoDLLoadLibrary(const xmlChar* crypto) {
/* if crypto is not specified, then used default */
functions = xmlSecCryptoDLGetLibraryFunctions((crypto != NULL ) ? crypto : xmlSecGetDefaultCrypto());
if(functions == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLGetLibraryFunctions",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLGetLibraryFunctions", NULL);
return(-1);
}
ret = xmlSecCryptoDLSetFunctions(functions);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLSetFunctions",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLSetFunctions", NULL);
return(-1);
}
@@ -496,23 +439,15 @@ xmlSecCryptoDLGetLibraryFunctions(const xmlChar* crypto) {
lib = xmlSecCryptoDLLibraryCreate(crypto);
if(lib == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLLibraryCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "crypto=%s",
- xmlSecErrorsSafeString(crypto));
+ xmlSecInternalError2("xmlSecCryptoDLLibraryCreate", NULL,
+ "crypto=%s", xmlSecErrorsSafeString(crypto));
return(NULL);
}
ret = xmlSecPtrListAdd(&gXmlSecCryptoDLLibraries, lib);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "crypto=%s",
- xmlSecErrorsSafeString(crypto));
+ xmlSecInternalError2("xmlSecPtrListAdd", NULL,
+ "crypto=%s", xmlSecErrorsSafeString(crypto));
xmlSecCryptoDLLibraryDestroy(lib);
return(NULL);
}
@@ -552,11 +487,7 @@ xmlSecCryptoDLUnloadLibrary(const xmlChar* crypto) {
ret = xmlSecPtrListRemove(&gXmlSecCryptoDLLibraries, pos);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListRemove",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListRemove", NULL);
return(-1);
}
@@ -612,90 +543,57 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
*
****************************************************************************/
if((functions->keyDataAesGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataAesGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataAesGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataAesGetKlass()));
return(-1);
}
if((functions->keyDataDesGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataDesGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataDesGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataDesGetKlass()));
return(-1);
}
if((functions->keyDataDsaGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataDsaGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataDsaGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataDsaGetKlass()));
return(-1);
}
if((functions->keyDataEcdsaGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataEcdsaGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataEcdsaGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataEcdsaGetKlass()));
return(-1);
}
if((functions->keyDataGost2001GetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataGost2001GetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataGost2001GetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataGost2001GetKlass()));
return(-1);
}
if((functions->keyDataGostR3410_2012_256GetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataGostR3410_2012_256GetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataGostR3410_2012_256GetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataGostR3410_2012_256GetKlass()));
return(-1);
}
if((functions->keyDataGostR3410_2012_512GetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataGostR3410_2012_512GetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataGostR3410_2012_512GetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataGostR3410_2012_512GetKlass()));
return(-1);
} if((functions->keyDataHmacGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataHmacGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataHmacGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataHmacGetKlass()));
return(-1);
}
if((functions->keyDataRsaGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataRsaGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataRsaGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataRsaGetKlass()));
return(-1);
}
if((functions->keyDataX509GetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataX509GetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataX509GetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataX509GetKlass()));
return(-1);
}
if((functions->keyDataRawX509CertGetKlass != NULL) && (xmlSecKeyDataIdsRegister(functions->keyDataRawX509CertGetKlass()) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(functions->keyDataRawX509CertGetKlass())),
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegister",
+ xmlSecKeyDataKlassGetName(functions->keyDataRawX509CertGetKlass()));
return(-1);
}
@@ -706,397 +604,283 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
*
****************************************************************************/
if((functions->transformAes128CbcGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes128CbcGetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformAes128CbcGetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes128CbcGetKlass()));
return(-1);
}
if((functions->transformAes192CbcGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes192CbcGetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformAes192CbcGetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes192CbcGetKlass()));
return(-1);
}
if((functions->transformAes256CbcGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes256CbcGetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformAes256CbcGetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes256CbcGetKlass()));
+ return(-1);
+ }
+
+ if ((functions->transformAes128GcmGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes128GcmGetKlass()) < 0) {
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes128GcmGetKlass()));
+ return(-1);
+ }
+
+ if ((functions->transformAes192GcmGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes192GcmGetKlass()) < 0) {
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes192GcmGetKlass()));
+ return(-1);
+ }
+
+ if ((functions->transformAes256GcmGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformAes256GcmGetKlass()) < 0) {
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformAes256GcmGetKlass()));
return(-1);
}
if((functions->transformKWAes128GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformKWAes128GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformKWAes128GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformKWAes128GetKlass()));
return(-1);
}
if((functions->transformKWAes192GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformKWAes192GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformKWAes192GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformKWAes192GetKlass()));
return(-1);
}
if((functions->transformKWAes256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformKWAes256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformKWAes256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformKWAes256GetKlass()));
return(-1);
}
if((functions->transformDes3CbcGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformDes3CbcGetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformDes3CbcGetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformDes3CbcGetKlass()));
return(-1);
}
if((functions->transformKWDes3GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformKWDes3GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformKWDes3GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformKWDes3GetKlass()));
return(-1);
}
if((functions->transformGost2001GostR3411_94GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGost2001GostR3411_94GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGost2001GostR3411_94GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGost2001GostR3411_94GetKlass()));
return(-1);
}
if((functions->transformGostR3410_2012GostR3411_2012_256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGostR3410_2012GostR3411_2012_256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGostR3410_2012GostR3411_2012_256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGostR3410_2012GostR3411_2012_256GetKlass()));
return(-1);
}
if((functions->transformGostR3410_2012GostR3411_2012_512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGostR3410_2012GostR3411_2012_512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGostR3410_2012GostR3411_2012_512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGostR3410_2012GostR3411_2012_512GetKlass()));
return(-1);
}
if((functions->transformDsaSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformDsaSha1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformDsaSha1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformDsaSha1GetKlass()));
return(-1);
}
if((functions->transformDsaSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformDsaSha256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformDsaSha256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformDsaSha256GetKlass()));
return(-1);
}
if((functions->transformEcdsaSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformEcdsaSha1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformEcdsaSha1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformEcdsaSha1GetKlass()));
return(-1);
}
if((functions->transformEcdsaSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformEcdsaSha224GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformEcdsaSha224GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformEcdsaSha224GetKlass()));
return(-1);
}
if((functions->transformEcdsaSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformEcdsaSha256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformEcdsaSha256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformEcdsaSha256GetKlass()));
return(-1);
}
if((functions->transformEcdsaSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformEcdsaSha384GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformEcdsaSha384GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformEcdsaSha384GetKlass()));
return(-1);
}
if((functions->transformEcdsaSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformEcdsaSha512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformEcdsaSha512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformEcdsaSha512GetKlass()));
return(-1);
}
if((functions->transformHmacMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacMd5GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacMd5GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacMd5GetKlass()));
return(-1);
}
if((functions->transformHmacRipemd160GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacRipemd160GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacRipemd160GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacRipemd160GetKlass()));
return(-1);
}
if((functions->transformHmacSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacSha1GetKlass()));
return(-1);
}
if((functions->transformHmacSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha224GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha224GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacSha224GetKlass()));
return(-1);
}
if((functions->transformHmacSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacSha256GetKlass()));
return(-1);
}
if((functions->transformHmacSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha384GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha384GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacSha384GetKlass()));
return(-1);
}
if((functions->transformHmacSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformHmacSha512GetKlass()));
return(-1);
}
if((functions->transformMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformMd5GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformMd5GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformMd5GetKlass()));
return(-1);
}
if((functions->transformRipemd160GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRipemd160GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRipemd160GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRipemd160GetKlass()));
return(-1);
}
if((functions->transformRsaMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaMd5GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaMd5GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaMd5GetKlass()));
return(-1);
}
if((functions->transformRsaRipemd160GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaRipemd160GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaRipemd160GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaRipemd160GetKlass()));
return(-1);
}
if((functions->transformRsaSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaSha1GetKlass()));
return(-1);
}
if((functions->transformRsaSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha224GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha224GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaSha224GetKlass()));
return(-1);
}
if((functions->transformRsaSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaSha256GetKlass()));
return(-1);
}
if((functions->transformRsaSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha384GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha384GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaSha384GetKlass()));
return(-1);
}
if((functions->transformRsaSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaSha512GetKlass()));
return(-1);
}
if((functions->transformRsaPkcs1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaPkcs1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaPkcs1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaPkcs1GetKlass()));
return(-1);
}
if((functions->transformRsaOaepGetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaOaepGetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaOaepGetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformRsaOaepGetKlass()));
return(-1);
}
if((functions->transformGostR3411_94GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGostR3411_94GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGostR3411_94GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGostR3411_94GetKlass()));
return(-1);
}
if((functions->transformGostR3411_2012_256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGostR3411_2012_256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGostR3411_2012_256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGostR3411_2012_256GetKlass()));
return(-1);
}
if((functions->transformGostR3411_2012_512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformGostR3411_2012_512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformGostR3411_2012_512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformGostR3411_2012_512GetKlass()));
return(-1);
}
if((functions->transformSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha1GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha1GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformSha1GetKlass()));
return(-1);
}
if((functions->transformSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha224GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha224GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformSha224GetKlass()));
return(-1);
}
if((functions->transformSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha256GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha256GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformSha256GetKlass()));
return(-1);
}
if((functions->transformSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha384GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha384GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformSha384GetKlass()));
return(-1);
}
if((functions->transformSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha512GetKlass()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha512GetKlass())),
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegister",
+ xmlSecTransformKlassGetName(functions->transformSha512GetKlass()));
return(-1);
}
diff --git a/src/enveloped.c b/src/enveloped.c
index ae11c16e..6f227e93 100644
--- a/src/enveloped.c
+++ b/src/enveloped.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Enveloped transform.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:enveloped
+ * @Short_description: Enveloped transform implementation.
+ * @Stability: Private
+ *
+ */
#include "globals.h"
#include <stdlib.h>
@@ -106,44 +111,35 @@ xmlSecTransformEnvelopedExecute(xmlSecTransformPtr transform, int last,
xmlSecAssert2(transformCtx != NULL, -1);
if((transform->inNodes != NULL) && (transform->inNodes->doc != transform->hereNode->doc)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED,
+ xmlSecTransformGetName(transform),
+ NULL);
return(-1);
}
/* find signature node and get all its children in the nodes set */
node = xmlSecFindParent(transform->hereNode, xmlSecNodeSignature, xmlSecDSigNs);
if(node == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeSignature),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindParent", transform->hereNode,
+ xmlSecNodeSignature,
+ xmlSecTransformGetName(transform));
return(-1);
}
children = xmlSecNodeSetGetChildren(node->doc, node, 1, 1);
if(children == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNodeSetGetChildren",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError2("xmlSecNodeSetGetChildren",
+ xmlSecTransformGetName(transform),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
return(-1);
}
/* intersect <dsig:Signature/> node children with input nodes (if exist) */
transform->outNodes = xmlSecNodeSetAdd(transform->inNodes, children, xmlSecNodeSetIntersection);
if(transform->outNodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNodeSetAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetAdd",
+ xmlSecTransformGetName(transform));
xmlSecNodeSetDestroy(children);
return(-1);
}
diff --git a/src/errors.c b/src/errors.c
index a4519270..179caa73 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -1,19 +1,26 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Error codes and error reporting functions.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:errors
+ * @Short_description: Error reporting and logging functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <time.h>
+#include <string.h>
#include <libxml/tree.h>
@@ -22,8 +29,12 @@
#include <xmlsec/private.h>
#include <xmlsec/errors.h>
+/* Must be bigger than fatal_error */
#define XMLSEC_ERRORS_BUFFER_SIZE 1024
+/* Must fit into xmlChar[XMLSEC_ERRORS_BUFFER_SIZE] */
+static const xmlChar fatal_error[] = "Can not format error message";
+
typedef struct _xmlSecErrorDescription xmlSecErrorDescription, *xmlSecErrorDescriptionPtr;
struct _xmlSecErrorDescription {
int errorCode;
@@ -40,6 +51,7 @@ static xmlSecErrorDescription xmlSecErrorsTable[XMLSEC_ERRORS_MAX_NUMBER + 1] =
{ XMLSEC_ERRORS_R_IO_FAILED, "io function failed" },
{ XMLSEC_ERRORS_R_DISABLED, "feature is disabled" },
{ XMLSEC_ERRORS_R_NOT_IMPLEMENTED, "feature is not implemented" },
+ { XMLSEC_ERRORS_R_INVALID_CONFIG, "invalid configuration" },
{ XMLSEC_ERRORS_R_INVALID_SIZE, "invalid size" },
{ XMLSEC_ERRORS_R_INVALID_DATA, "invalid data" },
{ XMLSEC_ERRORS_R_INVALID_RESULT, "invalid result" },
@@ -48,6 +60,7 @@ static xmlSecErrorDescription xmlSecErrorsTable[XMLSEC_ERRORS_MAX_NUMBER + 1] =
{ XMLSEC_ERRORS_R_INVALID_STATUS, "invalid status" },
{ XMLSEC_ERRORS_R_INVALID_FORMAT, "invalid format" },
{ XMLSEC_ERRORS_R_DATA_NOT_MATCH, "data do not match" },
+ { XMLSEC_ERRORS_R_INVALID_VERSION, "invalid version" },
{ XMLSEC_ERRORS_R_INVALID_NODE, "invalid node" },
{ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT, "invalid node content" },
{ XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE, "invalid node attribute" },
@@ -74,7 +87,7 @@ static xmlSecErrorDescription xmlSecErrorsTable[XMLSEC_ERRORS_MAX_NUMBER + 1] =
{ XMLSEC_ERRORS_R_CERT_REVOKED, "certificate is revoked" },
{ XMLSEC_ERRORS_R_CERT_ISSUER_FAILED, "certificate issuer check failed" },
{ XMLSEC_ERRORS_R_CERT_NOT_YET_VALID, "certificate is not yet valid" },
- { XMLSEC_ERRORS_R_CERT_HAS_EXPIRED, "certificate has expirred" },
+ { XMLSEC_ERRORS_R_CERT_HAS_EXPIRED, "certificate has expired" },
{ XMLSEC_ERRORS_R_DSIG_NO_REFERENCES, "Reference nodes are not found" },
{ XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE, "Reference verification failed" },
{ XMLSEC_ERRORS_R_ASSERTION, "assertion" },
@@ -82,7 +95,7 @@ static xmlSecErrorDescription xmlSecErrorsTable[XMLSEC_ERRORS_MAX_NUMBER + 1] =
};
static xmlSecErrorsCallback xmlSecErrorsClbk = xmlSecErrorsDefaultCallback;
-static int xmlSecPrintErrorMessages = 1; /* whether the error messages will be printed immidiatelly */
+static int xmlSecPrintErrorMessages = 1; /* whether the error messages will be printed immediately */
/**
* xmlSecErrorsInit:
@@ -208,9 +221,9 @@ xmlSecErrorsGetMsg(xmlSecSize pos) {
* xmlSecError:
* @file: the error location filename (__FILE__).
* @line: the error location line number (__LINE__).
- * @func: the error location function (__FUNCTIION__).
- * @errorObject: the error specific error object
- * @errorSubject: the error specific error subject.
+ * @func: the error location function (__FUNCTION__).
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @errorSubject: the error specific error subject (e.g. failed function name).
* @reason: the error code.
* @msg: the error message in printf format.
* @...: the parameters for the @msg.
@@ -223,15 +236,20 @@ void
xmlSecError(const char* file, int line, const char* func,
const char* errorObject, const char* errorSubject,
int reason, const char* msg, ...) {
-
if(xmlSecErrorsClbk != NULL) {
xmlChar error_msg[XMLSEC_ERRORS_BUFFER_SIZE];
+ int ret;
if(msg != NULL) {
va_list va;
+
va_start(va, msg);
- xmlSecStrVPrintf(error_msg, sizeof(error_msg), msg, va);
- error_msg[sizeof(error_msg) - 1] = '\0';
+ ret = xmlStrVPrintf(error_msg, sizeof(error_msg), msg, va);
+ if(ret < 0) {
+ /* Can't really report an error from an error callback */
+ memcpy(error_msg, fatal_error, sizeof(fatal_error));
+ }
+ error_msg[sizeof(error_msg) - 1] = '\0'; /* just in case */
va_end(va);
} else {
error_msg[0] = '\0';
diff --git a/src/errors_helpers.h b/src/errors_helpers.h
new file mode 100644
index 00000000..3752fa69
--- /dev/null
+++ b/src/errors_helpers.h
@@ -0,0 +1,872 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * Internal header only used during the compilation,
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
+
+#ifndef __XMLSEC_ERROR_HELPERS_H__
+#define __XMLSEC_ERROR_HELPERS_H__
+
+#ifndef XMLSEC_PRIVATE
+#error "private.h file contains private xmlsec definitions and should not be used outside xmlsec or xmlsec-$crypto libraries"
+#endif /* XMLSEC_PRIVATE */
+
+#include <errno.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**********************************************************************
+ *
+ * Error handling macros.
+ *
+ **********************************************************************/
+
+/**
+ * xmlSecInternalError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting internal XMLSec errors.
+ */
+#define xmlSecInternalError(errorFunction, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XMLSEC_FAILED, \
+ XMLSEC_ERRORS_NO_MESSAGE \
+ )
+
+/**
+ * xmlSecInternalError2:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting internal XMLSec errors.
+ */
+#define xmlSecInternalError2(errorFunction, errorObject, msg, param) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XMLSEC_FAILED, \
+ (msg), (param) \
+ )
+
+/**
+ * xmlSecInternalError3:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param1: the extra message param1.
+ * @param2: the extra message param2.
+ *
+ * Macro. The XMLSec library macro for reporting internal XMLSec errors.
+ */
+#define xmlSecInternalError3(errorFunction, errorObject, msg, param1, param2) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XMLSEC_FAILED, \
+ (msg), (param1), (param2) \
+ )
+
+/**
+ * xmlSecInternalError4:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param1: the extra message param1.
+ * @param2: the extra message param2.
+ * @param3: the extra message param3.
+ *
+ * Macro. The XMLSec library macro for reporting internal XMLSec errors.
+ */
+#define xmlSecInternalError4(errorFunction, errorObject, msg, param1, param2, param3) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XMLSEC_FAILED, \
+ (msg), (param1), (param2), (param3) \
+ )
+
+/**
+ * xmlSecMallocError:
+ * @allocSize: the failed allocation size.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting xmlMalloc() errors.
+ */
+#define xmlSecMallocError(allocSize, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ "xmlMalloc", \
+ XMLSEC_ERRORS_R_MALLOC_FAILED, \
+ "size=%lu", (unsigned long)(allocSize) \
+ )
+
+/**
+ * xmlSecStrdupError:
+ * @str: the failed string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting xmlStrdup() errors.
+ */
+#define xmlSecStrdupError(str, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ "xmlStrdup", \
+ XMLSEC_ERRORS_R_STRDUP_FAILED, \
+ "size=%lu", (unsigned long)xmlStrlen(str) \
+ )
+
+/**
+ * xmlSecXmlError:
+ * @errorFunction: the failed function.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting generic XML errors.
+ */
+#define xmlSecXmlError(errorFunction, errorObject) \
+ { \
+ xmlErrorPtr error = xmlGetLastError(); \
+ int code = (error != NULL) ? error->code : 0; \
+ const char* message = (error != NULL) ? error->message : NULL; \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XML_FAILED, \
+ "xml error: %lu: %s", \
+ (unsigned long)code, \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecXmlError2:
+ * @errorFunction: the failed function.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting generic XML errors.
+ */
+#define xmlSecXmlError2(errorFunction, errorObject, msg, param) \
+ { \
+ xmlErrorPtr error = xmlGetLastError(); \
+ int code = (error != NULL) ? error->code : 0; \
+ const char* message = (error != NULL) ? error->message : NULL; \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XML_FAILED, \
+ msg "; xml error: %lu: %s", \
+ (param), \
+ (unsigned long)code, \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecXmlParserError:
+ * @errorFunction: the failed function.
+ * @ctxt: the parser context.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting XML parser errors.
+ */
+#define xmlSecXmlParserError(errorFunction, ctxt, errorObject) \
+ { \
+ xmlErrorPtr error = xmlCtxtGetLastError(ctxt);\
+ int code = (error != NULL) ? error->code : 0; \
+ const char* message = (error != NULL) ? error->message : NULL; \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XML_FAILED, \
+ "xml error: %lu: %s", \
+ (unsigned long)code, \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecXmlParserError2:
+ * @errorFunction: the failed function.
+ * @ctxt: the parser context.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting XML parser errors.
+ */
+#define xmlSecXmlParserError2(errorFunction, ctxt, errorObject, msg, param) \
+ { \
+ xmlErrorPtr error = xmlCtxtGetLastError(ctxt);\
+ int code = (error != NULL) ? error->code : 0; \
+ const char* message = (error != NULL) ? error->message : NULL; \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XML_FAILED, \
+ msg "; xml error: %lu: %s", \
+ (param), \
+ (unsigned long)code, \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecXsltError:
+ * @errorFunction: the failed function.
+ * @ctxt: the parser context.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting XSLT errors.
+ */
+#define xmlSecXsltError(errorFunction, ctxt, errorObject) \
+ { \
+ xmlErrorPtr error = xmlGetLastError(); \
+ int code = (error != NULL) ? error->code : 0; \
+ const char* message = (error != NULL) ? error->message : NULL; \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_XSLT_FAILED, \
+ "xslt error: %lu: %s", \
+ (unsigned long)code, \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecIOError:
+ * @errorFunction: the failed function.
+ * @name: the filename, function name, uri, etc.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting IO errors.
+ */
+#define xmlSecIOError(errorFunction, name, errorObject) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_IO_FAILED, \
+ "name=\"%s\"; errno=%d", \
+ xmlSecErrorsSafeString(name), \
+ errno \
+ ); \
+ }
+
+/**
+ * xmlSecNotImplementedError:
+ * @details: the additional details.
+ *
+ * Macro. The XMLSec library macro for reporting "not implemented" errors.
+ */
+#define xmlSecNotImplementedError(details) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ NULL, \
+ NULL, \
+ XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \
+ "details=%s", \
+ xmlSecErrorsSafeString(details) \
+ )
+/**
+ * xmlSecInvalidSizeError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value.
+ * @expected: the expected value.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid size" errors when
+ * we expect exact match.
+ */
+#define xmlSecInvalidSizeError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_SIZE, \
+ "invalid size for '%s': actual=%lu is not equal to expected=%lu", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (unsigned long)(expected) \
+ )
+
+/**
+ * xmlSecInvalidSizeLessThanError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value.
+ * @expected: the expected value.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid size" errors when
+ * we expect at least the expected size.
+ */
+#define xmlSecInvalidSizeLessThanError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_SIZE, \
+ "invalid size for '%s': actual=%lu is less than expected=%lu", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (unsigned long)(expected) \
+ )
+
+/**
+ * xmlSecInvalidSizeMoreThanError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value.
+ * @expected: the expected value.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid size" errors when
+ * we expect at most the expected size.
+ */
+#define xmlSecInvalidSizeMoreThanError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \
+ "invalid size for '%s': actual=%lu is more than expected=%lu", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (unsigned long)(expected) \
+ )
+
+/**
+ * xmlSecInvalidSizeNotMultipleOfError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value.
+ * @divider: the expected divider.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid size" errors when
+ * we expect the size to be a multiple of the divider.
+ */
+#define xmlSecInvalidSizeNotMultipleOfError(name, actual, divider, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \
+ "invalid size for '%s': actual=%lu is not a multiple of %lu", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (unsigned long)(divider) \
+ )
+
+/**
+ * xmlSecInvalidSizeOtherError:
+ * @msg: the message about the error.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid size" errors when
+ * we expect exact match.
+ */
+#define xmlSecInvalidSizeOtherError(msg, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_SIZE, \
+ "invalid size: %s", \
+ xmlSecErrorsSafeString(msg) \
+ )
+
+/**
+ * xmlSecInvalidDataError:
+ * @msg: the msg with explanation.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid data" errors.
+ */
+#define xmlSecInvalidDataError(msg, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_DATA, \
+ "%s", \
+ xmlSecErrorsSafeString(msg) \
+ )
+
+/**
+ * xmlSecInvalidStringDataError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value as a string.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid data" errors for string.
+ */
+#define xmlSecInvalidStringDataError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_DATA, \
+ "invalid data for '%s': actual='%s' and expected %s", \
+ xmlSecErrorsSafeString(name), \
+ xmlSecErrorsSafeString(actual), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidIntegerDataError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value as an integer.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid data" errors for integers.
+ */
+#define xmlSecInvalidIntegerDataError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_DATA, \
+ "invalid data for '%s': actual=%ld and expected %s", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidIntegerDataError2:
+ * @name1: the name of the first variable, parameter, etc.
+ * @actual1: the actual first value as an integer.
+ * @name2: the name of the second variable, parameter, etc.
+ * @actual2: the actual second value as an integer.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid data" errors for integers.
+ */
+#define xmlSecInvalidIntegerDataError2(name1, actual1, name2, actual2, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_DATA, \
+ "invalid data: actual value '%s'=%ld, actual value '%s'=%ld and expected %s", \
+ xmlSecErrorsSafeString(name1), \
+ (unsigned long)(actual1), \
+ xmlSecErrorsSafeString(name2), \
+ (unsigned long)(actual2), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidTypeError:
+ * @msg: the msg with explanation.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid type" errors.
+ */
+#define xmlSecInvalidTypeError(msg, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TYPE, \
+ "%s", \
+ xmlSecErrorsSafeString(msg) \
+ )
+
+/**
+ * xmlSecInvalidStringTypeError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value as a string.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid type" errors for string.
+ */
+#define xmlSecInvalidStringTypeError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TYPE, \
+ "invalid type for '%s': actual='%s' and expected %s", \
+ xmlSecErrorsSafeString(name), \
+ xmlSecErrorsSafeString(actual), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidIntegerTypeError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value as an integer.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid type" errors for integers.
+ */
+#define xmlSecInvalidIntegerTypeError(name, actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TYPE, \
+ "invalid type for '%s': actual=%ld and expected %s", \
+ xmlSecErrorsSafeString(name), \
+ (unsigned long)(actual), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidIntegerTypeError2:
+ * @name1: the name of the first variable, parameter, etc.
+ * @actual1: the actual first value as an integer.
+ * @name2: the name of the second variable, parameter, etc.
+ * @actual2: the actual second value as an integer.
+ * @expected: the expected value(s) as a string.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid type" errors for integers.
+ */
+#define xmlSecInvalidIntegerTypeError2(name1, actual1, name2, actual2, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TYPE, \
+ "invalid type: actual value '%s'=%ld, actual value '%s'=%ld and expected %s", \
+ xmlSecErrorsSafeString(name1), \
+ (unsigned long)(actual1), \
+ xmlSecErrorsSafeString(name2), \
+ (unsigned long)(actual2), \
+ (expected) \
+ )
+
+/**
+ * xmlSecInvalidNodeError:
+ * @actualNode: the actual node.
+ * @expectedNodeName: the expected node name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting an invalid node errors.
+ */
+#define xmlSecInvalidNodeError(actualNode, expectedNodeName, errorObject) \
+ { \
+ const char* actualNodeName = xmlSecNodeGetName(actualNode); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_NODE, \
+ "actual=%s; expected=%s", \
+ xmlSecErrorsSafeString(actualNodeName), \
+ xmlSecErrorsSafeString(expectedNodeName) \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidNodeContentError:
+ * @node: the node.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @reason: the reason why node content is invalid.
+ *
+ * Macro. The XMLSec library macro for reporting an invalid node content errors.
+ */
+#define xmlSecInvalidNodeContentError(node, errorObject, reason) \
+ { \
+ const char* nName = xmlSecNodeGetName(node); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_NODE_CONTENT, \
+ "node=%s; reason=%s", \
+ xmlSecErrorsSafeString(nName), \
+ xmlSecErrorsSafeString(reason) \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidNodeAttributeError:
+ * @node: the node.
+ * @attrName: the attribute name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @reason: the reason why node content is invalid.
+ *
+ * Macro. The XMLSec library macro for reporting an invalid node attribute errors.
+ */
+#define xmlSecInvalidNodeAttributeError(node, attrName, errorObject, reason) \
+ { \
+ const char* nName = xmlSecNodeGetName(node); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE, \
+ "node=%s; attribute=%s; reason=%s",\
+ xmlSecErrorsSafeString(nName), \
+ xmlSecErrorsSafeString(attrName), \
+ xmlSecErrorsSafeString(reason) \
+ ); \
+ }
+
+/**
+ * xmlSecNodeAlreadyPresentError:
+ * @parent: the parent node.
+ * @nodeName: the node name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting node already present errors.
+ */
+#define xmlSecNodeAlreadyPresentError(parent, nodeName, errorObject) \
+ { \
+ const char* pName = xmlSecNodeGetName(parent);\
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT, \
+ "parent=%s; node=%s", \
+ xmlSecErrorsSafeString(pName), \
+ xmlSecErrorsSafeString(nodeName) \
+ ); \
+ }
+
+/**
+ * xmlSecUnexpectedNodeError:
+ * @node: the node.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting an invalid node errors.
+ */
+#define xmlSecUnexpectedNodeError(node, errorObject) \
+ { \
+ const char* nName = xmlSecNodeGetName(node); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_UNEXPECTED_NODE, \
+ "node=%s", \
+ xmlSecErrorsSafeString(nName) \
+ ); \
+ }
+
+/**
+ * xmlSecNodeNotFoundError:
+ * @errorFunction: the failed function.
+ * @startNode: the search start node.
+ * @targetNodeName: the expected child node name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting node not found errors.
+ */
+#define xmlSecNodeNotFoundError(errorFunction, startNode, targetNodeName, errorObject) \
+ { \
+ const char* startNodeName = xmlSecNodeGetName(startNode); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_NODE_NOT_FOUND, \
+ "startNode=%s; target=%s", \
+ xmlSecErrorsSafeString(startNodeName), \
+ xmlSecErrorsSafeString(targetNodeName) \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidTransfromError:
+ * @transform: the transform.
+ *
+ * Macro. The XMLSec library macro for reporting an invalid transform errors.
+ */
+#define xmlSecInvalidTransfromError(transform) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)xmlSecTransformGetName(transform), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM, \
+ XMLSEC_ERRORS_NO_MESSAGE \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidTransfromError2:
+ * @transform: the transform.
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ *
+ * Macro. The XMLSec library macro for reporting an invalid transform errors.
+ */
+#define xmlSecInvalidTransfromError2(transform, msg, param) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)xmlSecTransformGetName(transform), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_TRANSFORM, \
+ (msg), (param) \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidTransfromStatusError:
+ * @transform: the transform.
+ *
+ * Macro. The XMLSec library macro for reporting an invalid transform status errors.
+ */
+#define xmlSecInvalidTransfromStatusError(transform) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)xmlSecTransformGetName(transform), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_STATUS, \
+ "transformStatus=%d", \
+ (int)((transform)->status) \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidTransfromStatusError2:
+ * @transform: the transform.
+ * @msg: the extra message.
+ *
+ * Macro. The XMLSec library macro for reporting an invalid transform status errors.
+ */
+#define xmlSecInvalidTransfromStatusError2(transform, msg) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)xmlSecTransformGetName(transform), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_STATUS, \
+ "transformStatus=%ld, msg=%s", \
+ (long int)((transform)->status), \
+ msg \
+ ); \
+ }
+
+/**
+ * xmlSecInvalidKeyDataSizeError:
+ * @name: the name of the variable, parameter, etc.
+ * @actual: the actual value.
+ * @expected: the expected value(s).
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid keydata size" errors.
+ */
+#define xmlSecInvalidKeyDataSizeError(actual, expected, errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE, \
+ "invalid key data size: actual=%ld and expected=%ld", \
+ (unsigned long)(actual), \
+ (unsigned long)(expected) \
+ )
+
+/**
+ * xmlSecInvalidZeroKeyDataSizeError:
+ * @name: the name of the variable, parameter, etc.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting "invalid keydata size" errors.
+ */
+#define xmlSecInvalidZeroKeyDataSizeError(errorObject) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE, \
+ "invalid zero key data size" \
+ )
+
+
+/**
+ * xmlSecOtherError:
+ * @code: the error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @details: the error message.
+ *
+ * Macro. The XMLSec library macro for reporting other XMLSec errors.
+ */
+#define xmlSecOtherError(code, errorObject, details) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ (code), \
+ "details=%s", \
+ xmlSecErrorsSafeString(details) \
+ )
+
+/**
+ * xmlSecOtherError2:
+ * @code: the error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting other XMLSec errors.
+ */
+#define xmlSecOtherError2(code, errorObject, msg, param) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ (code), \
+ (msg), (param) \
+ )
+
+/**
+ * xmlSecOtherError3:
+ * @code: the error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param1: the extra message param.
+ * @param2: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting other XMLSec errors.
+ */
+#define xmlSecOtherError3(code, errorObject, msg, param1, param2) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ (code), \
+ (msg), (param1), (param2) \
+ )
+
+/**
+ * xmlSecOtherError4:
+ * @code: the error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param1: the extra message param.
+ * @param2: the extra message param.
+ * @param3: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting other XMLSec errors.
+ */
+#define xmlSecOtherError4(code, errorObject, msg, param1, param2, param3) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ (code), \
+ (msg), (param1), (param2), (param3) \
+ )
+
+/**
+ * xmlSecOtherError5:
+ * @code: the error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param1: the extra message param.
+ * @param2: the extra message param.
+ * @param3: the extra message param.
+ * @param4: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting other XMLSec errors.
+ */
+#define xmlSecOtherError5(code, errorObject, msg, param1, param2, param3, param4) \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ NULL, \
+ (code), \
+ (msg), (param1), (param2), (param3), (param4) \
+ )
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __XMLSEC_ERROR_HELPERS_H__ */
diff --git a/src/gcrypt/Makefile.am b/src/gcrypt/Makefile.am
index 734c429f..9645c40d 100644
--- a/src/gcrypt/Makefile.am
+++ b/src/gcrypt/Makefile.am
@@ -35,10 +35,6 @@ libxmlsec1_gcrypt_la_SOURCES =\
globals.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_gcrypt_la_SOURCES += ../strings.c
-endif
-
libxmlsec1_gcrypt_la_LIBADD = \
$(GCRYPT_LIBS) \
$(LIBXSLT_LIBS) \
diff --git a/src/gcrypt/app.c b/src/gcrypt/app.c
index dd5d7706..19412271 100644
--- a/src/gcrypt/app.c
+++ b/src/gcrypt/app.c
@@ -1,11 +1,18 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for GCrypt.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
#include <string.h>
@@ -34,6 +41,7 @@
*/
int
xmlSecGCryptAppInit(const char* config ATTRIBUTE_UNUSED) {
+ gcry_error_t err;
/* Secure memory initialisation based on documentation from:
http://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html
NOTE sample code don't check gcry_control(...) return code
@@ -61,40 +69,54 @@ Noteworthy changes in version 1.4.3 (2008-09-18)
*/
/* Version check should be the very first call because it
- makes sure that important subsystems are intialized. */
+ makes sure that important subsystems are initialized. */
/* NOTE configure.in defines GCRYPT_MIN_VERSION */
if (!gcry_check_version (GCRYPT_MIN_VERSION)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_check_version",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError2("gcry_check_version", GPG_ERR_NO_ERROR, NULL,
+ "min_version=%s", GCRYPT_MIN_VERSION);
return(-1);
}
/* We don't want to see any warnings, e.g. because we have not yet
parsed program options which might be used to suppress such
warnings. */
- gcry_control(GCRYCTL_SUSPEND_SECMEM_WARN);
+ err = gcry_control(GCRYCTL_SUSPEND_SECMEM_WARN);
+ if(err != GPG_ERR_NO_ERROR) {
+ xmlSecGCryptError("gcry_control(GCRYCTL_SUSPEND_SECMEM_WARN)", err, NULL);
+ return(-1);
+ }
/* ... If required, other initialization goes here. Note that the
process might still be running with increased privileges and that
- the secure memory has not been intialized. */
+ the secure memory has not been initialized. */
/* Allocate a pool of 32k secure memory. This make the secure memory
available and also drops privileges where needed. */
- gcry_control(GCRYCTL_INIT_SECMEM, 32768, 0);
+ err = gcry_control(GCRYCTL_INIT_SECMEM, 32768, 0);
+ if(err != GPG_ERR_NO_ERROR) {
+ xmlSecGCryptError("gcry_control(GCRYCTL_INIT_SECMEM)", err, NULL);
+ return(-1);
+ }
/* It is now okay to let Libgcrypt complain when there was/is
a problem with the secure memory. */
- gcry_control(GCRYCTL_RESUME_SECMEM_WARN);
+ err = gcry_control(GCRYCTL_RESUME_SECMEM_WARN);
+ if(err != GPG_ERR_NO_ERROR) {
+ xmlSecGCryptError("gcry_control(GCRYCTL_RESUME_SECMEM_WARN)", err, NULL);
+ return(-1);
+ }
/* ... If required, other initialization goes here. */
/* Tell Libgcrypt that initialization has completed. */
- gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+ err = gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+ if(err != GPG_ERR_NO_ERROR) {
+ xmlSecGCryptError("gcry_control(GCRYCTL_INITIALIZATION_FINISHED)", err, NULL);
+ return(-1);
+ }
+ /* done */
return(0);
}
@@ -112,14 +134,12 @@ xmlSecGCryptAppShutdown(void) {
gcry_error_t err;
err = gcry_control(GCRYCTL_TERM_SECMEM);
- if (gcry_err_code(err)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_control(GCRYCTL_TERM_SECMEM)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ if(err != GPG_ERR_NO_ERROR) {
+ xmlSecGCryptError("gcry_control(GCRYCTL_TERM_SECMEM)", err, NULL);
return(-1);
}
+
+ /* done */
return(0);
}
@@ -149,22 +169,14 @@ xmlSecGCryptAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
ret = xmlSecBufferInitialize(&buffer, 4*1024);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL) || (xmlSecBufferGetSize(&buffer) <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -173,12 +185,8 @@ xmlSecGCryptAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
xmlSecBufferGetSize(&buffer),
format, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeyLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecGCryptAppKeyLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -220,36 +228,21 @@ xmlSecGCryptAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
case xmlSecKeyDataFormatDer:
key_data = xmlSecGCryptParseDer(data, dataSize, xmlSecGCryptDerKeyTypeAuto);
if(key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptParseDer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptParseDer", NULL);
return(NULL);
}
break;
case xmlSecKeyDataFormatPem:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeyLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("xmlSecKeyDataFormatPem");
return (NULL);
#ifndef XMLSEC_NO_X509
case xmlSecKeyDataFormatPkcs12:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeyLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("xmlSecKeyDataFormatPkcs12");
return (NULL);
#endif /* XMLSEC_NO_X509 */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
@@ -257,23 +250,15 @@ xmlSecGCryptAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
xmlSecAssert2(key_data != NULL, NULL);
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
xmlSecKeyDataDestroy(key_data);
return(NULL);
}
ret = xmlSecKeySetValue(key, key_data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(key_data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(key_data));
xmlSecKeyDestroy(key);
xmlSecKeyDataDestroy(key_data);
return(NULL);
@@ -304,11 +289,7 @@ xmlSecGCryptAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeyCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -334,11 +315,7 @@ xmlSecGCryptAppKeyCertLoadMemory(xmlSecKeyPtr key,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeyCertLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -364,11 +341,7 @@ xmlSecGCryptAppPkcs12Load(const char *filename,
xmlSecAssert2(filename != NULL, NULL);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppPkcs12Load",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -395,11 +368,7 @@ xmlSecGCryptAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
xmlSecAssert2(dataSize > 0, NULL);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppPkcs12LoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -426,11 +395,7 @@ xmlSecGCryptAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeysMngrCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -459,11 +424,7 @@ xmlSecGCryptAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppKeysMngrCertLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -490,21 +451,13 @@ xmlSecGCryptAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -512,11 +465,7 @@ xmlSecGCryptAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecGCryptKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeysMngrInit", NULL);
return(-1);
}
@@ -545,21 +494,13 @@ xmlSecGCryptAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key)
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSimpleKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -586,21 +527,14 @@ xmlSecGCryptAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -627,22 +561,14 @@ xmlSecGCryptAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename,
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreSave", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
diff --git a/src/gcrypt/asn1.c b/src/gcrypt/asn1.c
index cec6364d..c9d0e525 100644
--- a/src/gcrypt/asn1.c
+++ b/src/gcrypt/asn1.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:asn1
+ * @Short_description: ASN1 support functions for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -202,12 +210,8 @@ xmlSecGCryptAsn1ParseIntegerSequence(xmlSecByte const **buffer, xmlSecSize *bufl
memset(&ti, 0, sizeof(ti));
ret = xmlSecGCryptAsn1ParseTag (&buf, &length, &ti);
if((ret != 0) || (ti.tag != TAG_SEQUENCE) || ti.class || !ti.cons || ti.ndef) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsn1ParseTag",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "TAG_SEQUENCE is expected: tag=%d",
- (int)ti.tag);
+ xmlSecInternalError2("xmlSecGCryptAsn1ParseTag", NULL,
+ "TAG_SEQUENCE is expected: tag=%d", (int)ti.tag);
return(-1);
}
@@ -217,22 +221,15 @@ xmlSecGCryptAsn1ParseIntegerSequence(xmlSecByte const **buffer, xmlSecSize *bufl
ret = xmlSecGCryptAsn1ParseTag (&buf, &length, &ti);
if((ret != 0) || (ti.tag != TAG_INTEGER) || ti.class || ti.cons || ti.ndef)
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsn1ParseTag",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "TAG_INTEGER is expected - index=%d, tag=%d",
- (int)idx, (int)ti.tag);
+ xmlSecInternalError3("xmlSecGCryptAsn1ParseTag", NULL,
+ "TAG_INTEGER is expected - index=%d, tag=%d",
+ (int)idx, (int)ti.tag);
return(-1);
}
err = gcry_mpi_scan(&(params[idx]), GCRYMPI_FMT_USG, buf, ti.length, NULL);
if((err != GPG_ERR_NO_ERROR) || (params[idx] == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan", err, NULL);
return(-1);
}
buf += ti.length;
@@ -241,12 +238,9 @@ xmlSecGCryptAsn1ParseIntegerSequence(xmlSecByte const **buffer, xmlSecSize *bufl
/* did we parse everything? */
if(length > 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsn1ParseTag",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "too many params - cur=%d, expected=%d",
- (int)(idx - 1), (int)params_size);
+ xmlSecInternalError3("xmlSecGCryptAsn1ParseTag", NULL,
+ "too many params - cur=%d, expected=%d",
+ (int)(idx - 1), (int)params_size);
return(-1);
}
@@ -278,23 +272,15 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms, sizeof(keyparms) / sizeof(keyparms[0])
);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsn1ParseIntegerSequence",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAsn1ParseIntegerSequence", NULL);
goto done;
}
keyparms_num = ret;
/* The value of the first integer should be 0. */
if ((keyparms_num < 1) || (gcry_mpi_cmp_ui(keyparms[0], 0) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsn1ParseTag",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "num=%d",
- (int)keyparms_num);
+ xmlSecInternalError2("xmlSecGCryptAsn1ParseTag", NULL,
+ "num=%d", (int)keyparms_num);
goto done;
}
@@ -319,11 +305,8 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
break;
default:
/* unknown */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Unexpected number of parameters, unknown key type",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "keyparms_num=%d", (int)keyparms_num);
+ xmlSecInvalidIntegerDataError("keyparms_num", keyparms_num,
+ "the number of parameters matching key type", NULL);
goto done;
}
}
@@ -334,11 +317,8 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
case xmlSecGCryptDerKeyTypePrivateDsa:
/* check we have enough params */
if(keyparms_num != 6) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Private DSA key: 6 parameters exepcted",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "parms_num=%d", (int)keyparms_num);
+ xmlSecInvalidSizeError("Private DSA key params",
+ keyparms_num, 6, NULL);
goto done;
}
@@ -354,11 +334,7 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms[1], keyparms[2], keyparms[3], keyparms[4], keyparms[5]
);
if((err != GPG_ERR_NO_ERROR) || (s_priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private-key/dsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(private-key/dsa)", err, NULL);
goto done;
}
@@ -367,32 +343,20 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms[1], keyparms[2], keyparms[3], keyparms[5]
);
if((err != GPG_ERR_NO_ERROR) || (s_pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(public-key/dsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public-key/dsa)", err, NULL);
goto done;
}
/* construct key and key data */
key_data = xmlSecKeyDataCreate(xmlSecGCryptKeyDataDsaId);
if(key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecGCryptKeyDataDsaId)", NULL);
goto done;
}
ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(key_data, s_pub_key, s_priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataDsaAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataDsaId");
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaAdoptKey(xmlSecGCryptKeyDataDsaId)", NULL);
xmlSecKeyDataDestroy(key_data);
key_data = NULL;
goto done;
@@ -404,11 +368,8 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
case xmlSecGCryptDerKeyTypePublicDsa:
/* check we have enough params */
if(keyparms_num != 5) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Public DSA key: 5 parameters exepcted",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "parms_num=%d", (int)keyparms_num);
+ xmlSecInvalidSizeError("Public DSA key params",
+ keyparms_num, 5, NULL);
goto done;
}
@@ -418,32 +379,20 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms[2], keyparms[3], keyparms[4], keyparms[1]
);
if((err != GPG_ERR_NO_ERROR) || (s_pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(public-key/dsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public-key/dsa)", err, NULL);
goto done;
}
/* construct key and key data */
key_data = xmlSecKeyDataCreate(xmlSecGCryptKeyDataDsaId);
if(key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecGCryptKeyDataDsaId)", NULL);
goto done;
}
ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(key_data, s_pub_key, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataDsaAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataDsaId");
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaAdoptKey(xmlSecGCryptKeyDataDsaId)", NULL);
xmlSecKeyDataDestroy(key_data);
key_data = NULL;
goto done;
@@ -456,15 +405,13 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
case xmlSecGCryptDerKeyTypePrivateRsa:
/* check we have enough params */
if(keyparms_num != 9) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Private RSA key: 9 parameters exepcted",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "parms_num=%d", (int)keyparms_num);
+ xmlSecInvalidSizeError("Private RSA key params",
+ keyparms_num, 9, NULL);
goto done;
}
/* Convert from OpenSSL parameter ordering to the OpenPGP order. */
+ /* (http://gnupg.10057.n7.nabble.com/RSA-PKCS-1-signing-differs-from-OpenSSL-s-td27920.html) */
/* First check that p < q; if not swap p and q and recompute u. */
if (gcry_mpi_cmp (keyparms[4], keyparms[5]) > 0) {
gcry_mpi_swap (keyparms[4], keyparms[5]);
@@ -474,16 +421,11 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
/* Build the S-expression. */
err = gcry_sexp_build (&s_priv_key, NULL,
"(private-key(rsa(n%m)(e%m)(d%m)(p%m)(q%m)(u%m)))",
- keyparms[1], keyparms[2],
- keyparms[3], keyparms[4],
- keyparms[5], keyparms[8]
+ keyparms[1], keyparms[2], keyparms[3],
+ keyparms[4], keyparms[5], keyparms[8]
);
if((err != GPG_ERR_NO_ERROR) || (s_priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private-key/rsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(private-key/rsa)", err, NULL);
goto done;
}
@@ -492,32 +434,20 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms[1], keyparms[2]
);
if((err != GPG_ERR_NO_ERROR) || (s_pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(public-key/rsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public-key/rsa)", err, NULL);
goto done;
}
/* construct key and key data */
key_data = xmlSecKeyDataCreate(xmlSecGCryptKeyDataRsaId);
if(key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecGCryptKeyDataRsaId)", NULL);
goto done;
}
ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(key_data, s_pub_key, s_priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataRsaAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataRsaId");
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaAdoptKey(xmlSecGCryptKeyDataRsaId)", NULL);
xmlSecKeyDataDestroy(key_data);
key_data = NULL;
goto done;
@@ -529,11 +459,8 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
case xmlSecGCryptDerKeyTypePublicRsa:
/* check we have enough params */
if(keyparms_num != 3) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Public RSA key: 3 parameters exepcted",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "parms_num=%d", (int)keyparms_num);
+ xmlSecInvalidSizeError("Public RSA key params",
+ keyparms_num, 3, NULL);
goto done;
}
@@ -543,32 +470,20 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
keyparms[1], keyparms[2]
);
if((err != GPG_ERR_NO_ERROR) || (s_pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(public-key/rsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public-key/rsa)", err, NULL);
goto done;
}
/* construct key and key data */
key_data = xmlSecKeyDataCreate(xmlSecGCryptKeyDataRsaId);
if(key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecGCryptKeyDataRsaId)", NULL);
goto done;
}
ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(key_data, s_pub_key, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataRsaAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGCryptKeyDataRsaId");
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaAdoptKey(xmlSecGCryptKeyDataRsaId)", NULL);
xmlSecKeyDataDestroy(key_data);
key_data = NULL;
goto done;
@@ -578,11 +493,7 @@ xmlSecGCryptParseDer(const xmlSecByte * der, xmlSecSize derlen,
#endif /* XMLSEC_NO_RSA */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Unsupported key type",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=%d", (int)type);
+ xmlSecInvalidIntegerTypeError("key_type", type, "supported key type", NULL);
goto done;
break;
}
diff --git a/src/gcrypt/asymkeys.c b/src/gcrypt/asymkeys.c
index b2256145..76932aa8 100644
--- a/src/gcrypt/asymkeys.c
+++ b/src/gcrypt/asymkeys.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:asymkeys
+ * @Short_description: Asymmetric keys implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -109,11 +117,8 @@ xmlSecGCryptAsymKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(ctxSrc->pub_key != NULL) {
ctxDst->pub_key = xmlSecGCryptAsymSExpDup(ctxSrc->pub_key);
if(ctxDst->pub_key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecGCryptAsymSExpDup(pub_key)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAsymSExpDup(pub_key)",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
}
@@ -121,11 +126,8 @@ xmlSecGCryptAsymKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(ctxSrc->priv_key != NULL) {
ctxDst->priv_key = xmlSecGCryptAsymSExpDup(ctxSrc->priv_key);
if(ctxDst->priv_key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecGCryptAsymSExpDup(priv_key)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAsymSExpDup(priv_key)",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
}
@@ -170,22 +172,15 @@ xmlSecGCryptAsymKeyDataAdoptKey(xmlSecKeyDataPtr data, gcry_sexp_t key_pair) {
not be present */
pub_key = gcry_sexp_find_token(key_pair, "public-key", 0);
if(pub_key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(public-key)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(public-key)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
priv_key = gcry_sexp_find_token(key_pair, "private-key", 0);
/* assign */
if(xmlSecGCryptAsymKeyDataAdoptKeyPair(data, pub_key, priv_key) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsymKeyDataAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAsymKeyDataAdoptKeyPair", NULL);
goto done;
}
pub_key = NULL; /* data owns it now */
@@ -286,31 +281,19 @@ xmlSecGCryptAsymKeyDataGenerate(xmlSecKeyDataPtr data, const char * alg, xmlSecS
"(genkey (%s (nbits %d)(transient-key)))",
alg, (int)key_size);
if((err != GPG_ERR_NO_ERROR) || (key_spec == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(genkey)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(genkey)", err, NULL);
goto done;
}
err = gcry_pk_genkey(&key_pair, key_spec);
if((err != GPG_ERR_NO_ERROR) || (key_pair == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_pk_genkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_pk_genkey", err, NULL);
goto done;
}
ret = xmlSecGCryptAsymKeyDataAdoptKey(data, key_pair);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAsymKeyDataAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", (int)ret);
+ xmlSecInternalError("xmlSecGCryptAsymKeyDataAdopt", NULL);
goto done;
}
key_pair = NULL; /* now owned by data */
@@ -378,41 +361,26 @@ xmlSecGCryptAsymSExpDup(gcry_sexp_t pKey) {
size = gcry_sexp_sprint(pKey, GCRYSEXP_FMT_ADVANCED, NULL, 0);
if(size == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_sprint",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_sprint", GPG_ERR_NO_ERROR, NULL);
goto done;
}
buf = (xmlSecByte *)xmlMalloc(size);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)size);
+ xmlSecMallocError(size, NULL);
goto done;
}
size = gcry_sexp_sprint(pKey, GCRYSEXP_FMT_ADVANCED, buf, size);
if(size == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_sprint",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", (int)size);
+ xmlSecGCryptError2("gcry_sexp_sprint", GPG_ERR_NO_ERROR, NULL,
+ "size=%lu", (unsigned long)size);
goto done;
}
err = gcry_sexp_new(&res, buf, size, 1);
if((err != GPG_ERR_NO_ERROR) || (res == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_new", err, NULL);
goto done;
}
@@ -425,7 +393,7 @@ done:
/**
* xmlSecGCryptNodeGetMpiValue:
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
*
* Converts the node content from CryptoBinary format
* (http://www.w3.org/TR/xmldsig-core/#sec-CryptoBinary)
@@ -446,21 +414,13 @@ xmlSecGCryptNodeGetMpiValue(const xmlNodePtr cur) {
ret = xmlSecBufferInitialize(&buf, 128);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferBase64NodeContentRead(&buf, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead", NULL);
xmlSecBufferFinalize(&buf);
return(NULL);
}
@@ -470,11 +430,7 @@ xmlSecGCryptNodeGetMpiValue(const xmlNodePtr cur) {
xmlSecBufferGetSize(&buf),
NULL);
if((err != GPG_ERR_NO_ERROR) || (res == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan", err, NULL);
xmlSecBufferFinalize(&buf);
return(NULL);
}
@@ -513,21 +469,14 @@ xmlSecGCryptNodeSetMpiValue(xmlNodePtr cur, const gcry_mpi_t a, int addLineBreak
written = 0;
err = gcry_mpi_print(GCRYMPI_FMT_USG, NULL, 0, &written, a);
if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_print",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_print", err, NULL);
return(-1);
}
ret = xmlSecBufferInitialize(&buf, written + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)written + 1);
+ xmlSecInternalError2("xmlSecBufferInitialize", NULL,
+ "size=%d", (int)written + 1);
return(-1);
}
@@ -537,45 +486,34 @@ xmlSecGCryptNodeSetMpiValue(xmlNodePtr cur, const gcry_mpi_t a, int addLineBreak
xmlSecBufferGetMaxSize(&buf),
&written, a);
if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_print",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_print", err, NULL);
xmlSecBufferFinalize(&buf);
return(-1);
}
ret = xmlSecBufferSetSize(&buf, written);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "written=%d", (int)written);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", (int)written);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
} else {
xmlNodeSetContent(cur, xmlSecStringEmpty);
}
ret = xmlSecBufferBase64NodeContentWrite(&buf, cur, xmlSecBase64GetDefaultLineSize());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentWrite", NULL);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeAddContent(cur, xmlSecStringCR);
+ xmlNodeAddContent(cur, xmlSecGetDefaultLineFeed());
}
xmlSecBufferFinalize(&buf);
@@ -613,23 +551,14 @@ xmlSecGCryptNodeSetSExpTokValue(xmlNodePtr cur, const gcry_sexp_t sexp,
val = gcry_sexp_find_token(sexp, tok, 0);
if(val == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "tok=%s",
- xmlSecErrorsSafeString(tok));
+ xmlSecGCryptError2("gcry_sexp_find_token", GPG_ERR_NO_ERROR, NULL,
+ "tok=%s", xmlSecErrorsSafeString(tok));
goto done;
}
mpi = gcry_sexp_nth_mpi(val, 1, GCRYMPI_FMT_USG);
if(mpi == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_nth_mpi",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "tok=%s",
- xmlSecErrorsSafeString(tok));
+ xmlSecGCryptError("gcry_sexp_nth_mpi", GPG_ERR_NO_ERROR, NULL);
goto done;
}
@@ -945,11 +874,9 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
goto done;
}
@@ -957,66 +884,39 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
/* first is P node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAP, xmlSecKeyDataKlassGetName(id));
goto done;
}
p = xmlSecGCryptNodeGetMpiValue(cur);
if(p == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Q node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAQ, xmlSecKeyDataKlassGetName(id));
goto done;
}
q = xmlSecGCryptNodeGetMpiValue(cur);
if(q == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is G node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAG, xmlSecKeyDataKlassGetName(id));
goto done;
}
g = xmlSecGCryptNodeGetMpiValue(cur);
if(g == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1026,12 +926,8 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
* we are not sure exactly what do we read */
x = xmlSecGCryptNodeGetMpiValue(cur);
if(x == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeDSAX)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1039,21 +935,13 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
/* next is Y node. */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAY, xmlSecKeyDataKlassGetName(id));
goto done;
}
y = xmlSecGCryptNodeGetMpiValue(cur);
if(y == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1074,25 +962,23 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
goto done;
}
+ /* Convert from OpenSSL parameter ordering to the OpenPGP order. */
+ /* First check that x < y; if not swap x and y */
+ if((x != NULL) && (gcry_mpi_cmp (x, y) > 0)) {
+ gcry_mpi_swap (x, y);
+ }
/* construct pub/priv key pairs */
err = gcry_sexp_build(&pub_key, NULL,
"(public-key(dsa(p%m)(q%m)(g%m)(y%m)))",
p, q, g, y);
if((err != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gcry_sexp_build(public)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public)", err,
+ xmlSecKeyDataGetName(data));
goto done;
}
if(x != NULL) {
@@ -1100,11 +986,8 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
"(private-key(dsa(p%m)(q%m)(g%m)(x%m)(y%m)))",
p, q, g, x, y);
if((err != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gcry_sexp_build(private)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(private)", err,
+ xmlSecKeyDataGetName(data));
goto done;
}
}
@@ -1112,21 +995,15 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
/* create key data */
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(data, pub_key, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGCryptKeyDataDsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaAdoptKeyPair",
+ xmlSecKeyDataGetName(data));
goto done;
}
pub_key = NULL; /* pub_key is owned by data now */
@@ -1135,11 +1012,8 @@ xmlSecGCryptKeyDataDsaXmlRead(xmlSecKeyDataId id,
/* set key */
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL; /* data is owned by key now */
@@ -1209,11 +1083,8 @@ xmlSecGCryptKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if(pub_priv_key == NULL) {
pub_priv_key = xmlSecGCryptKeyDataDsaGetPublicKey(xmlSecKeyGetValue(key));
if(pub_priv_key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptKeyDataDsaGetPublicKey()",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaGetPublicKey()",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
} else {
@@ -1222,77 +1093,50 @@ xmlSecGCryptKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
dsa = gcry_sexp_find_token(pub_priv_key, "dsa", 0);
if(dsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "gcry_sexp_find_token(dsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(dsa)", GPG_ERR_NO_ERROR,
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* first is P node */
cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "p", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* next is Q node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "q", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* next is G node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "g", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1300,22 +1144,14 @@ xmlSecGCryptKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (private != 0)) {
cur = xmlSecAddChild(node, xmlSecNodeDSAX, xmlSecNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAX)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "x", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeDSAX)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
}
@@ -1323,22 +1159,14 @@ xmlSecGCryptKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Y node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, dsa, "y", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1618,11 +1446,9 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- "key already has a value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
goto done;
}
@@ -1630,44 +1456,26 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node. It is REQUIRED */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAModulus, xmlSecKeyDataKlassGetName(id));
goto done;
}
n = xmlSecGCryptNodeGetMpiValue(cur);
if(n == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Exponent node. It is REQUIRED */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAExponent, xmlSecKeyDataKlassGetName(id));
goto done;
}
e = xmlSecGCryptNodeGetMpiValue(cur);
if(e == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1676,23 +1484,15 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is PrivateExponent node. It is REQUIRED for private key */
d = xmlSecGCryptNodeGetMpiValue(cur);
if(d == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeGetMpiValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ xmlSecInternalError("xmlSecGCryptNodeGetMpiValue(NodeRSAPrivateExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1701,11 +1501,8 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
"(public-key(rsa(n%m)(e%m)))",
n, e);
if((err != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gcry_sexp_build(public)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(public)", err,
+ xmlSecKeyDataGetName(data));
goto done;
}
if(d != NULL) {
@@ -1713,11 +1510,8 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
"(private-key(rsa(n%m)(e%m)(d%m)))",
n, e, d);
if((err != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gcry_sexp_build(private)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(private)", err,
+ xmlSecKeyDataGetName(data));
goto done;
}
}
@@ -1726,21 +1520,15 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* create key data */
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(data, pub_key, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGCryptKeyDataRsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaAdoptKeyPair",
+ xmlSecKeyDataGetName(data));
goto done;
}
pub_key = NULL; /* pub_key is owned by data now */
@@ -1749,11 +1537,8 @@ xmlSecGCryptKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* set key */
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL; /* data is owned by key now */
@@ -1817,11 +1602,8 @@ xmlSecGCryptKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if(pub_priv_key == NULL) {
pub_priv_key = xmlSecGCryptKeyDataRsaGetPublicKey(xmlSecKeyGetValue(key));
if(pub_priv_key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptKeyDataRsaGetPublicKey()",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaGetPublicKey()",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
} else {
@@ -1830,55 +1612,37 @@ xmlSecGCryptKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
rsa = gcry_sexp_find_token(pub_priv_key, "rsa", 0);
if(rsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "gcry_sexp_find_token(rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(rsa)",
+ GPG_ERR_NO_ERROR,
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* first is Modulus node */
cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "n", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* next is Exponent node. */
cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "e", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1886,22 +1650,14 @@ xmlSecGCryptKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (private != 0)) {
cur = xmlSecAddChild(node, xmlSecNodeRSAPrivateExponent, xmlSecNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAPrivateExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecGCryptNodeSetSExpTokValue(cur, rsa, "d", 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGCryptNodeSetSExpTokValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ xmlSecInternalError("xmlSecGCryptNodeSetSExpTokValue(NodeRSAPrivateExponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
}
diff --git a/src/gcrypt/ciphers.c b/src/gcrypt/ciphers.c
index 76c1d5a9..d88ccd92 100644
--- a/src/gcrypt/ciphers.c
+++ b/src/gcrypt/ciphers.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -84,11 +92,8 @@ xmlSecGCryptBlockCipherCtxInit(xmlSecGCryptBlockCipherCtxPtr ctx,
outSize = xmlSecBufferGetSize(out);
ret = xmlSecBufferSetSize(out, outSize + blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + blockLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + blockLen);
return(-1);
}
iv = xmlSecBufferGetData(out) + outSize;
@@ -97,11 +102,8 @@ xmlSecGCryptBlockCipherCtxInit(xmlSecGCryptBlockCipherCtxPtr ctx,
gcry_randomize(iv, blockLen, GCRY_STRONG_RANDOM);
err = gcry_cipher_setiv(ctx->cipherCtx, iv, blockLen);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err,
+ cipherName);
return(-1);
}
} else {
@@ -115,22 +117,16 @@ xmlSecGCryptBlockCipherCtxInit(xmlSecGCryptBlockCipherCtxPtr ctx,
/* set iv */
err = gcry_cipher_setiv(ctx->cipherCtx, xmlSecBufferGetData(in), blockLen);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err,
+ cipherName);
return(-1);
}
/* and remove from input */
ret = xmlSecBufferRemoveHead(in, blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blockLen);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", blockLen);
return(-1);
}
}
@@ -181,11 +177,8 @@ xmlSecGCryptBlockCipherCtxUpdate(xmlSecGCryptBlockCipherCtxPtr ctx,
/* we write out the input size plus may be one block */
ret = xmlSecBufferSetMaxSize(out, outSize + inSize + blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + inSize + blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + inSize + blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -194,22 +187,16 @@ xmlSecGCryptBlockCipherCtxUpdate(xmlSecGCryptBlockCipherCtxPtr ctx,
err = gcry_cipher_encrypt(ctx->cipherCtx, outBuf, inSize + blockLen,
xmlSecBufferGetData(in), inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_encrypt", err,
+ cipherName);
return(-1);
}
} else {
err = gcry_cipher_decrypt(ctx->cipherCtx, outBuf, inSize + blockLen,
xmlSecBufferGetData(in), inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_decrypt", err,
+ cipherName);
return(-1);
}
}
@@ -217,22 +204,16 @@ xmlSecGCryptBlockCipherCtxUpdate(xmlSecGCryptBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + inSize);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + inSize);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
return(0);
@@ -272,11 +253,8 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
/* create padding */
ret = xmlSecBufferSetMaxSize(in, blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", blockLen);
return(-1);
}
inBuf = xmlSecBufferGetData(in);
@@ -290,11 +268,7 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
inSize = blockLen;
} else {
if(inSize != (xmlSecSize)blockLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data=%d;block=%d", inSize, blockLen);
+ xmlSecInvalidSizeError("Input data", inSize, blockLen, cipherName);
return(-1);
}
}
@@ -302,11 +276,8 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
/* process last block */
ret = xmlSecBufferSetMaxSize(out, outSize + 2 * blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + 2 * blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + 2 * blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -315,22 +286,16 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
err = gcry_cipher_encrypt(ctx->cipherCtx, outBuf, inSize + blockLen,
xmlSecBufferGetData(in), inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_encrypt", err,
+ cipherName);
return(-1);
}
} else {
err = gcry_cipher_decrypt(ctx->cipherCtx, outBuf, inSize + blockLen,
xmlSecBufferGetData(in), inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "gcry_cipher_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_decrypt", err,
+ cipherName);
return(-1);
}
}
@@ -338,12 +303,8 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
if(encrypt == 0) {
/* check padding */
if(inSize < outBuf[blockLen - 1]) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "padding=%d;buffer=%d",
- outBuf[blockLen - 1], inSize);
+ xmlSecInvalidSizeLessThanError("Input data padding",
+ inSize, outBuf[blockLen - 1], cipherName);
return(-1);
}
outLen = inSize - outBuf[blockLen - 1];
@@ -354,22 +315,16 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
@@ -377,22 +332,16 @@ xmlSecGCryptBlockCipherCtxFinal(xmlSecGCryptBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
@@ -483,21 +432,14 @@ xmlSecGCryptBlockCipherInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_AES */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
err = gcry_cipher_open(&ctx->cipherCtx, ctx->cipher, ctx->mode, GCRY_CIPHER_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_cipher_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_open", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -573,23 +515,16 @@ xmlSecGCryptBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) < keySize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=%d;expected=%d",
- xmlSecBufferGetSize(buffer), keySize);
+ xmlSecInvalidKeyDataSizeError(xmlSecBufferGetSize(buffer), keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(xmlSecBufferGetData(buffer) != NULL, -1);
err = gcry_cipher_setkey(ctx->cipherCtx, xmlSecBufferGetData(buffer), keySize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_cipher_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setkey", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -624,20 +559,14 @@ xmlSecGCryptBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTra
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecGCryptBlockCipherCtxInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptBlockCipherCtxInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
if((ctx->ctxInitialized == 0) && (last != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "not enough data to initialize transform");
+ xmlSecInvalidDataError("not enough data to initialize transform",
+ xmlSecTransformGetName(transform));
return(-1);
}
if(ctx->ctxInitialized != 0) {
@@ -645,11 +574,8 @@ xmlSecGCryptBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTra
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecGCryptBlockCipherCtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptBlockCipherCtxUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -659,11 +585,8 @@ xmlSecGCryptBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTra
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecGCryptBlockCipherCtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptBlockCipherCtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -675,11 +598,7 @@ xmlSecGCryptBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTra
/* the only way we can get here is if there is no enough data in the input */
xmlSecAssert2(last == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/gcrypt/crypto.c b/src/gcrypt/crypto.c
index d02eb597..7ccf4062 100644
--- a/src/gcrypt/crypto.c
+++ b/src/gcrypt/crypto.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for GCrypt.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -234,21 +242,13 @@ int
xmlSecGCryptInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_gcrypt()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
@@ -301,11 +301,8 @@ xmlSecGCryptGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
ret = xmlSecBufferSetSize(buffer, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", size);
return(-1);
}
diff --git a/src/gcrypt/digests.c b/src/gcrypt/digests.c
index d947446f..2d20c22b 100644
--- a/src/gcrypt/digests.c
+++ b/src/gcrypt/digests.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -155,22 +163,15 @@ xmlSecGCryptDigestInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_RIPEMD160 */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create digest ctx */
err = gcry_md_open(&ctx->digestCtx, ctx->digest, GCRY_MD_FLAG_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_open", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -210,22 +211,15 @@ xmlSecGCryptDigestVerify(xmlSecTransformPtr transform,
xmlSecAssert2(ctx->dgstSize > 0, -1);
if(dataSize != ctx->dgstSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest sizes are different (data=%d, dgst=%d)",
- dataSize, ctx->dgstSize);
+ xmlSecInvalidSizeError("Input data",
+ dataSize, ctx->dgstSize, xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
if(memcmp(ctx->dgst, data, dataSize) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest do not match");
+ xmlSecInvalidDataError("data and digest do not match",
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -266,11 +260,9 @@ xmlSecGCryptDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -281,11 +273,8 @@ xmlSecGCryptDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
gcry_md_final(ctx->digestCtx);
buf = gcry_md_read(ctx->digestCtx, ctx->digest);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_read",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_md_read", GPG_ERR_NO_ERROR,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -299,11 +288,9 @@ xmlSecGCryptDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, ctx->dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ctx->dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->dgstSize);
return(-1);
}
}
@@ -313,11 +300,7 @@ xmlSecGCryptDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/gcrypt/globals.h b/src/gcrypt/globals.h
index 3da464d2..37198c25 100644
--- a/src/gcrypt/globals.h
+++ b/src/gcrypt/globals.h
@@ -21,10 +21,60 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
#define XMLSEC_GCRYPT_MAX_DIGEST_SIZE 256
-#define XMLSEC_GCRYPT_REPORT_ERROR(err) \
- "error code=%d; error message='%s'", \
- (int)err, xmlSecErrorsSafeString(gcry_strerror((err)))
+
+
+/**
+ * xmlSecGCryptError:
+ * @errorFunction: the failed function name.
+ * @errCode: the GCrypt error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting GCrypt crypro errors.
+ */
+#define xmlSecGCryptError(errorFunction, errCode, errorObject) \
+ { \
+ const char* source = gcry_strsource((errCode)); \
+ const char* message = gcry_strerror((errCode)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "gcrypt error: %ld: %s: %s", \
+ (long)(errCode), \
+ xmlSecErrorsSafeString(source), \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecGCryptError2:
+ * @errorFunction: the failed function name.
+ * @errCode: the GCrypt error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting GCrypt crypro errors.
+ */
+#define xmlSecGCryptError2(errorFunction, errCode, errorObject, msg, param) \
+ { \
+ const char* source = gcry_strsource((errCode)); \
+ const char* message = gcry_strerror((errCode)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ msg "; gcrypt error: %ld: %s: %s", \
+ (param), \
+ (long)(errCode), \
+ xmlSecErrorsSafeString(source), \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/gcrypt/hmac.c b/src/gcrypt/hmac.c
index 631b4704..4f5d2762 100644
--- a/src/gcrypt/hmac.c
+++ b/src/gcrypt/hmac.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_HMAC
#include "globals.h"
@@ -199,22 +207,15 @@ xmlSecGCryptHmacInitialize(xmlSecTransformPtr transform) {
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* open context */
err = gcry_md_open(&ctx->digestCtx, ctx->digest, GCRY_MD_FLAG_HMAC | GCRY_MD_FLAG_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_open", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -287,11 +288,8 @@ xmlSecGCryptHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTr
small value
*/
if((int)ctx->dgstSize < xmlSecGCryptHmacGetMinOutputLength()) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "HMAC output length is too small");
+ xmlSecInvalidNodeContentError(cur, xmlSecTransformGetName(transform),
+ "HMAC output length is too small");
return(-1);
}
@@ -299,11 +297,7 @@ xmlSecGCryptHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTr
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -356,22 +350,15 @@ xmlSecGCryptHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key is empty");
+ xmlSecInvalidZeroKeyDataSizeError(xmlSecTransformGetName(transform));
return(-1);
}
err = gcry_md_setkey(ctx->digestCtx, xmlSecBufferGetData(buffer),
xmlSecBufferGetSize(buffer));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_setkey", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -400,37 +387,30 @@ xmlSecGCryptHmacVerify(xmlSecTransformPtr transform,
xmlSecAssert2(ctx->dgstSize > 0, -1);
/* compare the digest size in bytes */
- if(dataSize != ((ctx->dgstSize + 7) / 8)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data=%d;dgst=%d",
- dataSize, ((ctx->dgstSize + 7) / 8));
+ if(dataSize != ((ctx->dgstSize + 7) / 8)) {
+ xmlSecInvalidSizeError("HMAC digest size",
+ dataSize, ((ctx->dgstSize + 7) / 8),
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
- /* we check the last byte separatelly */
+ /* we check the last byte separately */
xmlSecAssert2(dataSize > 0, -1);
mask = last_byte_masks[ctx->dgstSize % 8];
if((ctx->dgst[dataSize - 1] & mask) != (data[dataSize - 1] & mask)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match (last byte)");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match (last byte)");
transform->status = xmlSecTransformStatusFail;
return(0);
}
/* now check the rest of the digest */
if((dataSize > 1) && (memcmp(ctx->dgst, data, dataSize - 1) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match");
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -472,11 +452,9 @@ xmlSecGCryptHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformC
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -485,11 +463,8 @@ xmlSecGCryptHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformC
gcry_md_final(ctx->digestCtx);
dgst = gcry_md_read(ctx->digestCtx, ctx->digest);
if(dgst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_read",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_md_read", GPG_ERR_NO_ERROR,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -505,23 +480,18 @@ xmlSecGCryptHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformC
} else if(ctx->dgstSize <= 8 * dgstSize) {
dgstSize = ((ctx->dgstSize + 7) / 8); /* we need to truncate result digest */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "result-bits=%d;required-bits=%d",
- 8 * dgstSize, ctx->dgstSize);
+ xmlSecInvalidSizeLessThanError("HMAC digest (bits)",
+ 8 * dgstSize, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", dgstSize);
return(-1);
}
}
@@ -531,11 +501,7 @@ xmlSecGCryptHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformC
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "size=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/gcrypt/kw_aes.c b/src/gcrypt/kw_aes.c
index 16977ff5..b9f746c5 100644
--- a/src/gcrypt/kw_aes.c
+++ b/src/gcrypt/kw_aes.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * AES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_AES
#include "globals.h"
@@ -111,11 +116,7 @@ xmlSecGCryptKWAesInitialize(xmlSecTransformPtr transform) {
ctx->cipher = GCRY_CIPHER_AES256;
ctx->keyExpectedSize = XMLSEC_KW_AES256_KEY_SIZE;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ctx->mode = GCRY_CIPHER_MODE_CBC;
@@ -125,11 +126,8 @@ xmlSecGCryptKWAesInitialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecGCryptKWAesGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKWAesGetKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -194,12 +192,8 @@ xmlSecGCryptKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < ctx->keyExpectedSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key=%d;expected=%d",
- keySize, ctx->keyExpectedSize);
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keyExpectedSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -207,12 +201,9 @@ xmlSecGCryptKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecBufferGetData(buffer),
ctx->keyExpectedSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "expected-size=%d",
- ctx->keyExpectedSize);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->keyExpectedSize);
return(-1);
}
@@ -251,11 +242,8 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % 8) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d(not 8 bytes aligned)", inSize);
+ xmlSecInvalidSizeNotMultipleOfError("Input data", inSize, 8,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -269,11 +257,9 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "outSize=%d", outSize);
return(-1);
}
@@ -282,11 +268,8 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -295,11 +278,8 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -307,21 +287,17 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "outSize=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "inSize%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "inSize%d", inSize);
return(-1);
}
@@ -330,11 +306,7 @@ xmlSecGCryptKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -482,11 +454,7 @@ xmlSecGCryptKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
err = gcry_cipher_open(&cipherCtx, ctx->cipher, ctx->mode, ctx->flags);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_open", err, NULL);
return(-1);
}
@@ -494,11 +462,7 @@ xmlSecGCryptKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
xmlSecBufferGetData(&ctx->keyBuffer),
xmlSecBufferGetSize(&ctx->keyBuffer));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setkey", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
@@ -506,22 +470,14 @@ xmlSecGCryptKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
/* use zero IV and CBC mode to ensure we get result as-is */
err = gcry_cipher_setiv(cipherCtx, g_zero_iv, sizeof(g_zero_iv));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
err = gcry_cipher_encrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_encrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
@@ -546,11 +502,7 @@ xmlSecGCryptKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
err = gcry_cipher_open(&cipherCtx, ctx->cipher, ctx->mode, ctx->flags);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_open", err, NULL);
return(-1);
}
@@ -558,11 +510,7 @@ xmlSecGCryptKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
xmlSecBufferGetData(&ctx->keyBuffer),
xmlSecBufferGetSize(&ctx->keyBuffer));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setkey", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
@@ -570,22 +518,14 @@ xmlSecGCryptKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
/* use zero IV and CBC mode to ensure we get result as-is */
err = gcry_cipher_setiv(cipherCtx, g_zero_iv, sizeof(g_zero_iv));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
err = gcry_cipher_decrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_decrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
diff --git a/src/gcrypt/kw_des.c b/src/gcrypt/kw_des.c
index 67e76c56..3c3b792c 100644
--- a/src/gcrypt/kw_des.c
+++ b/src/gcrypt/kw_des.c
@@ -1,14 +1,20 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
@@ -158,11 +164,8 @@ xmlSecGCryptKWDes3Initialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -226,22 +229,16 @@ xmlSecGCryptKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < XMLSEC_KW_DES3_KEY_LENGTH) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key length %d is not enough (%d expected)",
- keySize, XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInvalidKeyDataSizeError(keySize, XMLSEC_KW_DES3_KEY_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(&(ctx->keyBuffer), xmlSecBufferGetData(buffer), XMLSEC_KW_DES3_KEY_LENGTH);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
return(-1);
}
@@ -280,12 +277,9 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d bytes - not %d bytes aligned",
- inSize, XMLSEC_KW_DES3_BLOCK_LENGTH);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -301,11 +295,9 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -314,12 +306,8 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Encode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -328,12 +316,8 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -341,21 +325,17 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -364,11 +344,7 @@ xmlSecGCryptKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -400,11 +376,7 @@ xmlSecGCryptKWDes3Sha1(void * context,
err = gcry_md_open(&digestCtx, GCRY_MD_SHA1, GCRY_MD_FLAG_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_open(GCRY_MD_SHA1)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_open(GCRY_MD_SHA1)", err, NULL);
return(-1);
}
@@ -412,22 +384,14 @@ xmlSecGCryptKWDes3Sha1(void * context,
err = gcry_md_final(digestCtx);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_final",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_final", err, NULL);
gcry_md_close(digestCtx);
return(-1);
}
res = gcry_md_read(digestCtx, GCRY_MD_SHA1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_md_read(GCRY_MD_SHA1)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_md_read", GPG_ERR_NO_ERROR, NULL);
gcry_md_close(digestCtx);
return(-1);
}
@@ -477,11 +441,7 @@ xmlSecGCryptKWDes3BlockEncrypt(void * context,
out, outSize,
1); /* encrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKWDes3Encrypt", NULL);
return(-1);
}
@@ -513,11 +473,7 @@ xmlSecGCryptKWDes3BlockDecrypt(void * context,
out, outSize,
0); /* decrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKWDes3Encrypt", NULL);
return(-1);
}
return(ret);
@@ -545,53 +501,35 @@ xmlSecGCryptKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
err = gcry_cipher_open(&cipherCtx, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, GCRY_CIPHER_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_open(GCRY_CIPHER_3DES)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_open(GCRY_CIPHER_3DES)", err, NULL);
return(-1);
}
err = gcry_cipher_setkey(cipherCtx, key, keySize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setkey", err, NULL);
+ gcry_cipher_close(cipherCtx);
return(-1);
}
err = gcry_cipher_setiv(cipherCtx, iv, ivSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_setiv",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_setiv", err, NULL);
+ gcry_cipher_close(cipherCtx);
return(-1);
}
if(enc) {
err = gcry_cipher_encrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_encrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
} else {
err = gcry_cipher_decrypt(cipherCtx, out, outSize, in, inSize);
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_cipher_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_cipher_decrypt", err, NULL);
gcry_cipher_close(cipherCtx);
return(-1);
}
diff --git a/src/gcrypt/signatures.c b/src/gcrypt/signatures.c
index 1d3f77a4..4dc65eec 100644
--- a/src/gcrypt/signatures.c
+++ b/src/gcrypt/signatures.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -260,22 +268,15 @@ xmlSecGCryptPkSignatureInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_RSA */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create digest ctx */
err = gcry_md_open(&ctx->digestCtx, ctx->digest, GCRY_MD_FLAG_SECURE); /* we are paranoid */
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_open",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_md_open", err,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -327,11 +328,8 @@ xmlSecGCryptPkSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
ctx->key_data = xmlSecKeyDataDuplicate(key_data);
if(ctx->key_data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKeyDataDuplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataDuplicate",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -386,11 +384,7 @@ xmlSecGCryptPkSignatureVerify(xmlSecTransformPtr transform,
ret = ctx->verify(ctx->digest, ctx->key_data, ctx->dgst, ctx->dgstSize, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "ctx->verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("ctx->verify", xmlSecTransformGetName(transform));
return(-1);
}
@@ -398,11 +392,9 @@ xmlSecGCryptPkSignatureVerify(xmlSecTransformPtr transform,
if(ret == 1) {
transform->status = xmlSecTransformStatusOk;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "ctx->verify",
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "signature do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "ctx->verify: signature does not verify");
transform->status = xmlSecTransformStatusFail;
}
@@ -451,11 +443,9 @@ xmlSecGCryptPkSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -468,11 +458,8 @@ xmlSecGCryptPkSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
gcry_md_final(ctx->digestCtx);
buf = gcry_md_read(ctx->digestCtx, ctx->digest);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "gcry_md_read",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_md_read", GPG_ERR_NO_ERROR,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -486,11 +473,8 @@ xmlSecGCryptPkSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
if(transform->operation == xmlSecTransformOperationSign) {
ret = ctx->sign(ctx->digest, ctx->key_data, ctx->dgst, ctx->dgstSize, out);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "ctx->sign",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("ctx->sign",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -504,11 +488,7 @@ xmlSecGCryptPkSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -537,11 +517,7 @@ xmlSecGCryptAppendMpi(gcry_mpi_t a, xmlSecBufferPtr out, xmlSecSize min_size) {
written = 0;
err = gcry_mpi_print(GCRYMPI_FMT_USG, NULL, 0, &written, a);
if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_print",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_print", err, NULL);
return(-1);
}
@@ -553,11 +529,8 @@ xmlSecGCryptAppendMpi(gcry_mpi_t a, xmlSecBufferPtr out, xmlSecSize min_size) {
/* allocate space */
ret = xmlSecBufferSetMaxSize(out, outSize + written + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)(outSize + written + 1));
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", NULL,
+ "size=%d", (int)(outSize + written + 1));
return(-1);
}
xmlSecAssert2(xmlSecBufferGetMaxSize(out) > outSize, -1);
@@ -579,23 +552,15 @@ xmlSecGCryptAppendMpi(gcry_mpi_t a, xmlSecBufferPtr out, xmlSecSize min_size) {
xmlSecBufferGetMaxSize(out) - outSize,
&written, a);
if((err != GPG_ERR_NO_ERROR) || (written == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_print",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_print", err, NULL);
return(-1);
}
/* reset size */
ret = xmlSecBufferSetSize(out, outSize + written);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d",
- (int)(outSize + written));
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", (int)(outSize + written));
return(-1);
}
@@ -654,11 +619,7 @@ xmlSecGCryptDsaPkSign(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
/* get the current digest, can't use "hash" :( */
err = gcry_mpi_scan(&m_hash, GCRYMPI_FMT_USG, dgst, dgstSize, NULL);
if((err != GPG_ERR_NO_ERROR) || (m_hash == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan(hash)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan(hash)", err, NULL);
goto done;
}
@@ -666,33 +627,22 @@ xmlSecGCryptDsaPkSign(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
"(data (flags raw)(value %m))",
m_hash);
if((err != GPG_ERR_NO_ERROR) || (s_data == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(data)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(data)", err, NULL);
goto done;
}
/* create signature */
err = gcry_pk_sign(&s_sig, s_data, xmlSecGCryptKeyDataDsaGetPrivateKey(key_data));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_pk_sign",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_pk_sign", err, NULL);
goto done;
}
/* find signature value */
s_tmp = gcry_sexp_find_token(s_sig, "sig-val", 0);
if(s_tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(sig-val)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(sig-val)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
gcry_sexp_release(s_sig);
@@ -700,11 +650,8 @@ xmlSecGCryptDsaPkSign(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
s_tmp = gcry_sexp_find_token(s_sig, "dsa", 0);
if(s_tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(rsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(dsa)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
gcry_sexp_release(s_sig);
@@ -713,63 +660,43 @@ xmlSecGCryptDsaPkSign(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
/* r */
s_r = gcry_sexp_find_token(s_sig, "r", 0);
if(s_r == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(r)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(r)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
m_r = gcry_sexp_nth_mpi(s_r, 1, GCRYMPI_FMT_USG);
if(m_r == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_nth_mpi(r)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_nth_mpi(r)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
/* s */
s_s = gcry_sexp_find_token(s_sig, "s", 0);
if(s_s == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(s)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
m_s = gcry_sexp_nth_mpi(s_s, 1, GCRYMPI_FMT_USG);
if(m_s == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_nth_mpi(s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_nth_mpi(s)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
/* write out: r + s */
ret = xmlSecGCryptAppendMpi(m_r, out, 20);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppendMpi",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAppendMpi", NULL);
goto done;
}
xmlSecAssert2(xmlSecBufferGetSize(out) == 20, -1);
ret = xmlSecGCryptAppendMpi(m_s, out, 20);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppendMpi",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAppendMpi", NULL);
goto done;
}
xmlSecAssert2(xmlSecBufferGetSize(out) == (20 + 20), -1);
@@ -826,11 +753,7 @@ xmlSecGCryptDsaPkVerify(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
/* get the current digest, can't use "hash" :( */
err = gcry_mpi_scan(&m_hash, GCRYMPI_FMT_USG, dgst, dgstSize, NULL);
if((err != GPG_ERR_NO_ERROR) || (m_hash == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan(hash)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan(hash)", err, NULL);
goto done;
}
@@ -838,31 +761,19 @@ xmlSecGCryptDsaPkVerify(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
"(data (flags raw)(value %m))",
m_hash);
if((err != GPG_ERR_NO_ERROR) || (s_data == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(data)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(data)", err, NULL);
goto done;
}
/* get the existing signature */
err = gcry_mpi_scan(&m_sig_r, GCRYMPI_FMT_USG, data, 20, NULL);
if((err != GPG_ERR_NO_ERROR) || (m_sig_r == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan(r)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan(r)", err, NULL);
goto done;
}
err = gcry_mpi_scan(&m_sig_s, GCRYMPI_FMT_USG, data + 20, 20, NULL);
if((err != GPG_ERR_NO_ERROR) || (m_sig_s == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan(s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan(s)", err, NULL);
goto done;
}
@@ -870,11 +781,7 @@ xmlSecGCryptDsaPkVerify(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
"(sig-val(dsa(r %m)(s %m)))",
m_sig_r, m_sig_s);
if((err != GPG_ERR_NO_ERROR) || (s_sig == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(sig-val)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(sig-val)", err, NULL);
goto done;
}
@@ -885,11 +792,7 @@ xmlSecGCryptDsaPkVerify(int digest ATTRIBUTE_UNUSED, xmlSecKeyDataPtr key_data,
} else if(err == GPG_ERR_BAD_SIGNATURE) {
res = 0; /* bad signature */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_pk_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_pk_verify", err, NULL);
goto done;
}
@@ -1020,33 +923,22 @@ xmlSecGCryptRsaPkcs1PkSign(int digest, xmlSecKeyDataPtr key_data,
gcry_md_algo_name(digest),
(int)dgstSize, dgst);
if((err != GPG_ERR_NO_ERROR) || (s_data == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(data)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(data)", err, NULL);
goto done;
}
/* create signature */
err = gcry_pk_sign(&s_sig, s_data, xmlSecGCryptKeyDataRsaGetPrivateKey(key_data));
if(err != GPG_ERR_NO_ERROR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_pk_sign",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_pk_sign", err, NULL);
goto done;
}
/* find signature value */
s_tmp = gcry_sexp_find_token(s_sig, "sig-val", 0);
if(s_tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(sig-val)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(sig-val)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
gcry_sexp_release(s_sig);
@@ -1054,11 +946,8 @@ xmlSecGCryptRsaPkcs1PkSign(int digest, xmlSecKeyDataPtr key_data,
s_tmp = gcry_sexp_find_token(s_sig, "rsa", 0);
if(s_tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(rsa)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(rsa)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
gcry_sexp_release(s_sig);
@@ -1066,11 +955,8 @@ xmlSecGCryptRsaPkcs1PkSign(int digest, xmlSecKeyDataPtr key_data,
s_tmp = gcry_sexp_find_token(s_sig, "s", 0);
if(s_tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_find_token(s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_find_token(s)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
gcry_sexp_release(s_sig);
@@ -1078,22 +964,15 @@ xmlSecGCryptRsaPkcs1PkSign(int digest, xmlSecKeyDataPtr key_data,
m_sig = gcry_sexp_nth_mpi(s_sig, 1, GCRYMPI_FMT_USG);
if(m_sig == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_nth_mpi(1)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGCryptError("gcry_sexp_nth_mpi(1)",
+ GPG_ERR_NO_ERROR, NULL);
goto done;
}
/* write out */
ret = xmlSecGCryptAppendMpi(m_sig, out, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptAppendMpi",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptAppendMpi", NULL);
goto done;
}
@@ -1138,22 +1017,14 @@ xmlSecGCryptRsaPkcs1PkVerify(int digest, xmlSecKeyDataPtr key_data,
gcry_md_algo_name(digest),
(int)dgstSize, dgst);
if((err != GPG_ERR_NO_ERROR) || (s_data == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(data)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(data)", err, NULL);
goto done;
}
/* get the existing signature */
err = gcry_mpi_scan(&m_sig, GCRYMPI_FMT_USG, data, dataSize, NULL);
if((err != GPG_ERR_NO_ERROR) || (m_sig == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_mpi_scan", err, NULL);
goto done;
}
@@ -1161,11 +1032,7 @@ xmlSecGCryptRsaPkcs1PkVerify(int digest, xmlSecKeyDataPtr key_data,
"(sig-val(rsa(s %m)))",
m_sig);
if((err != GPG_ERR_NO_ERROR) || (s_sig == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(sig-val)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_sexp_build(sig-val)", err, NULL);
goto done;
}
@@ -1176,11 +1043,7 @@ xmlSecGCryptRsaPkcs1PkVerify(int digest, xmlSecKeyDataPtr key_data,
} else if(err == GPG_ERR_BAD_SIGNATURE) {
res = 0; /* bad signature */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_pk_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GCRYPT_REPORT_ERROR(err));
+ xmlSecGCryptError("gcry_pk_verify", err, NULL);
goto done;
}
diff --git a/src/gcrypt/symkeys.c b/src/gcrypt/symkeys.c
index ecd8368b..8a83233a 100644
--- a/src/gcrypt/symkeys.c
+++ b/src/gcrypt/symkeys.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for GCrypt.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
diff --git a/src/globals.h b/src/globals.h
index 5cc7070f..b55443a3 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -22,4 +22,7 @@
#define IN_XMLSEC
#define XMLSEC_PRIVATE
+/* Include common error helper macros. */
+#include "errors_helpers.h"
+
#endif /* __XMLSEC_GLOBALS_H__ */
diff --git a/src/gnutls/Makefile.am b/src/gnutls/Makefile.am
index 84ce637a..370b7a0f 100644
--- a/src/gnutls/Makefile.am
+++ b/src/gnutls/Makefile.am
@@ -36,10 +36,6 @@ libxmlsec1_gnutls_la_SOURCES =\
globals.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_gnutls_la_SOURCES += ../strings.c
-endif
-
# xmlsec-gnutls library requires xmlsec-gcrypt
libxmlsec1_gnutls_la_LIBADD = \
$(GNUTLS_LIBS) \
diff --git a/src/gnutls/app.c b/src/gnutls/app.c
index 042f311c..a275a18b 100644
--- a/src/gnutls/app.c
+++ b/src/gnutls/app.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for GnuTLS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -51,11 +59,7 @@ xmlSecGnuTLSAppInit(const char* config) {
err = gnutls_global_init();
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_global_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_global_init", err, NULL);
return(-1);
}
@@ -180,22 +184,14 @@ xmlSecGnuTLSAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
ret = xmlSecBufferInitialize(&buffer, 4*1024);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(-1);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL) || (xmlSecBufferGetSize(&buffer) <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -205,12 +201,8 @@ xmlSecGnuTLSAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
xmlSecBufferGetSize(&buffer),
format);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSAppKeyCertLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecGnuTLSAppKeyCertLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -247,31 +239,19 @@ xmlSecGnuTLSAppKeyCertLoadMemory(xmlSecKeyPtr key,
keyData = xmlSecKeyEnsureData(key, xmlSecGnuTLSKeyDataX509Id);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData", NULL);
return(-1);
}
cert = xmlSecGnuTLSX509CertRead(data, dataSize, format);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertRead", NULL);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCert(keyData, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert", NULL);
gnutls_x509_crt_deinit(cert);
return(-1);
}
@@ -305,22 +285,14 @@ xmlSecGnuTLSAppPkcs12Load(const char *filename,
ret = xmlSecBufferInitialize(&buffer, 4*1024);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL) || (xmlSecBufferGetSize(&buffer) <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -329,12 +301,8 @@ xmlSecGnuTLSAppPkcs12Load(const char *filename,
xmlSecBufferGetSize(&buffer),
pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSAppPkcs12LoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecGnuTLSAppPkcs12LoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -380,56 +348,36 @@ xmlSecGnuTLSAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* prepare */
ret = xmlSecPtrListInitialize(&(certsList), xmlSecGnuTLSX509CrtListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "certsList");
+ xmlSecInternalError("xmlSecPtrListInitialize(certsListId)", NULL);
return(NULL);
}
/* load pkcs12 */
ret = xmlSecGnuTLSPkcs12LoadMemory(data, dataSize, pwd, &priv_key, &key_cert, &certsList);
if((ret < 0) || (priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSPkcs12LoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSPkcs12LoadMemory", NULL);
goto done;
}
/* create key */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
/* create key value data */
keyData = xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey(priv_key);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey", NULL);
goto done;
}
priv_key = NULL; /* owned by keyData now */
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
keyData = NULL; /* owned by key now */
@@ -442,11 +390,7 @@ xmlSecGnuTLSAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
x509Data = xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataX509Id)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataX509Id)", NULL);
goto done;
}
@@ -454,11 +398,7 @@ xmlSecGnuTLSAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
if(key_cert != NULL) {
ret = xmlSecGnuTLSKeyDataX509AdoptKeyCert(x509Data, key_cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptKeyCert", NULL);
goto done;
}
key_cert = NULL; /* owned by x509Data now */
@@ -473,11 +413,7 @@ xmlSecGnuTLSAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
ret = xmlSecGnuTLSKeyDataX509AdoptCert(x509Data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert", NULL);
gnutls_x509_crt_deinit(cert);
goto done;
}
@@ -486,12 +422,8 @@ xmlSecGnuTLSAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* set in the key */
ret = xmlSecKeyAdoptData(key, x509Data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
x509Data = NULL; /* owned by key now */
@@ -533,22 +465,14 @@ xmlSecGnuTLSAppKeyFromCertLoad(const char *filename,
ret = xmlSecBufferInitialize(&buffer, 4*1024);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL) || (xmlSecBufferGetSize(&buffer) <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -558,12 +482,8 @@ xmlSecGnuTLSAppKeyFromCertLoad(const char *filename,
xmlSecBufferGetSize(&buffer),
format);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSAppKeyFromCertLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecGnuTLSAppKeyFromCertLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -592,44 +512,28 @@ xmlSecGnuTLSAppKeyFromCertLoadMemory(const xmlSecByte* data,
/* read cert */
cert = xmlSecGnuTLSX509CertRead(data, dataSize, format);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertRead", NULL);
goto done;
}
/* create key */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
/* create key value data */
keyData = xmlSecGnuTLSX509CertGetKey(cert);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetKey", NULL);
goto done;
}
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
keyData = NULL; /* owned by key now */
@@ -637,20 +541,12 @@ xmlSecGnuTLSAppKeyFromCertLoadMemory(const xmlSecByte* data,
/* create x509 data */
x509Data = xmlSecKeyEnsureData(key, xmlSecGnuTLSKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData", NULL);
goto done;
}
ret = xmlSecGnuTLSKeyDataX509AdoptKeyCert(x509Data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptKeyCert", NULL);
goto done;
}
cert = NULL; /* owned by x509Data now */
@@ -699,22 +595,14 @@ xmlSecGnuTLSAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr,
ret = xmlSecBufferInitialize(&buffer, 4*1024);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(-1);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL) || (xmlSecBufferGetSize(&buffer) <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -725,12 +613,8 @@ xmlSecGnuTLSAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr,
format,
type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSAppKeysMngrCertLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecGnuTLSAppKeysMngrCertLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -770,31 +654,19 @@ xmlSecGnuTLSAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr,
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(StoreId)", NULL);
return(-1);
}
cert = xmlSecGnuTLSX509CertRead(data, dataSize, format);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertRead", NULL);
return(-1);
}
ret = xmlSecGnuTLSX509StoreAdoptCert(x509Store, cert, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509StoreAdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509StoreAdoptCert", NULL);
gnutls_x509_crt_deinit(cert);
return(-1);
}
@@ -825,21 +697,13 @@ xmlSecGnuTLSAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -847,11 +711,7 @@ xmlSecGnuTLSAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecGnuTLSKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeysMngrInit", NULL);
return(-1);
}
@@ -880,21 +740,13 @@ xmlSecGnuTLSAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key)
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSimpleKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -921,21 +773,14 @@ xmlSecGnuTLSAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -962,22 +807,14 @@ xmlSecGnuTLSAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename,
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreSave", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
diff --git a/src/gnutls/asymkeys.c b/src/gnutls/asymkeys.c
index de9d3fe6..220b98e2 100644
--- a/src/gnutls/asymkeys.c
+++ b/src/gnutls/asymkeys.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:asymkeys
+ * @Short_description: Asymmetric keys implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -60,13 +68,10 @@ static int xmlSecGnuTLSConvertParamsToMpis(gnutls_datum_t * params, xmlSecSize p
xmlSecAssert2(paramsNum == mpisNum, -1);
for(ii = 0; ii < paramsNum; ++ii) {
+ mpis[ii] = NULL;
rc = gcry_mpi_scan(&(mpis[ii]), GCRYMPI_FMT_USG, params[ii].data, params[ii].size, NULL);
if((rc != GPG_ERR_NO_ERROR) || (mpis[ii] == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_mpi_scan",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_mpi_scan", rc, NULL);
xmlSecGnuTLSDestroyMpis(mpis, ii); /* destroy up to now */
return(-1);
}
@@ -118,11 +123,7 @@ xmlSecGnuTLSKeyDataDsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
&(params[0]), &(params[1]), &(params[2]),
&(params[3]), &(params[4]));
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_export_dsa_raw",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_privkey_export_dsa_raw", err, NULL);
return(-1);
}
@@ -131,36 +132,30 @@ xmlSecGnuTLSKeyDataDsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
params, sizeof(params)/sizeof(params[0]),
mpis, sizeof(mpis)/sizeof(mpis[0]));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSConvertParamsToMpis",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSConvertParamsToMpis", NULL);
xmlSecGnuTLSDestroyParams(params, sizeof(params)/sizeof(params[0]));
return(-1);
}
xmlSecGnuTLSDestroyParams(params, sizeof(params)/sizeof(params[0]));
+ /* Convert from OpenSSL parameter ordering to the OpenPGP order. */
+ /* First check that x < y; if not swap x and y */
+ if (gcry_mpi_cmp (mpis[4], mpis[3]) > 0) {
+ gcry_mpi_swap (mpis[3], mpis[4]);
+ }
+
/* build expressions */
rc = gcry_sexp_build(&(priv_key), NULL, "(private-key(dsa(p%m)(q%m)(g%m)(y%m)(x%m)))",
mpis[0], mpis[1], mpis[2], mpis[3], mpis[4]);
if((rc != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/dsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(private/dsa)", rc, NULL);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
}
rc = gcry_sexp_build(&(pub_key), NULL, "(public-key(dsa(p%m)(q%m)(g%m)(y%m)))",
mpis[0], mpis[1], mpis[2], mpis[3]);
if((rc != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(public/dsa)", rc, NULL);
gcry_sexp_release(priv_key);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
@@ -169,11 +164,7 @@ xmlSecGnuTLSKeyDataDsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(data, pub_key, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataDsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaAdoptKeyPair", NULL);
gcry_sexp_release(pub_key);
gcry_sexp_release(priv_key);
return(-1);
@@ -224,11 +215,7 @@ xmlSecGnuTLSKeyDataDsaAdoptPublicKey(xmlSecKeyDataPtr data,
params, sizeof(params)/sizeof(params[0]),
mpis, sizeof(mpis)/sizeof(mpis[0]));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSConvertParamsToMpis",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSConvertParamsToMpis", NULL);
/* don't destroy params - we got them from outside !!! */
return(-1);
}
@@ -238,11 +225,7 @@ xmlSecGnuTLSKeyDataDsaAdoptPublicKey(xmlSecKeyDataPtr data,
rc = gcry_sexp_build(&(pub_key), NULL, "(public-key(dsa(p%m)(q%m)(g%m)(y%m)))",
mpis[0], mpis[1], mpis[2], mpis[3]);
if((rc != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(public/dsa)", rc, NULL);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
}
@@ -250,11 +233,7 @@ xmlSecGnuTLSKeyDataDsaAdoptPublicKey(xmlSecKeyDataPtr data,
ret = xmlSecGCryptKeyDataDsaAdoptKeyPair(data, pub_key, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataDsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataDsaAdoptKeyPair", NULL);
gcry_sexp_release(pub_key);
return(-1);
}
@@ -312,11 +291,7 @@ xmlSecGnuTLSKeyDataRsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
&(params[0]), &(params[1]), &(params[2]),
&(params[3]), &(params[4]), &(params[5]));
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_export_rsa_raw",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_privkey_export_rsa_raw", err, NULL);
return(-1);
}
@@ -325,37 +300,33 @@ xmlSecGnuTLSKeyDataRsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
params, sizeof(params)/sizeof(params[0]),
mpis, sizeof(mpis)/sizeof(mpis[0]));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSConvertParamsToMpis",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSConvertParamsToMpis", NULL);
xmlSecGnuTLSDestroyParams(params, sizeof(params)/sizeof(params[0]));
return(-1);
}
xmlSecGnuTLSDestroyParams(params, sizeof(params)/sizeof(params[0]));
+ /* Convert from OpenSSL parameter ordering to the OpenPGP order. */
+ /* (http://gnupg.10057.n7.nabble.com/RSA-PKCS-1-signing-differs-from-OpenSSL-s-td27920.html) */
+ /* First check that p < q; if not swap p and q and recompute u. */
+ if (gcry_mpi_cmp(mpis[3], mpis[4]) > 0) {
+ gcry_mpi_swap(mpis[3], mpis[4]);
+ gcry_mpi_invm(mpis[5], mpis[3], mpis[4]);
+ }
+
/* build expressions */
rc = gcry_sexp_build(&(priv_key), NULL, "(private-key(rsa((n%m)(e%m)(d%m)(p%m)(q%m)(u%m))))",
mpis[0], mpis[1], mpis[2],
mpis[3], mpis[4], mpis[5]);
if((rc != GPG_ERR_NO_ERROR) || (priv_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(private/rsa)", rc, NULL);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
}
rc = gcry_sexp_build(&(pub_key), NULL, "(public-key(rsa((n%m)(e%m))))",
mpis[0], mpis[1]);
if((rc != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(public/rsa)", rc, NULL);
gcry_sexp_release(priv_key);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
@@ -364,11 +335,7 @@ xmlSecGnuTLSKeyDataRsaAdoptPrivateKey(xmlSecKeyDataPtr data, gnutls_x509_privkey
ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(data, pub_key, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataRsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaAdoptKeyPair", NULL);
gcry_sexp_release(pub_key);
gcry_sexp_release(priv_key);
return(-1);
@@ -412,11 +379,7 @@ xmlSecGnuTLSKeyDataRsaAdoptPublicKey(xmlSecKeyDataPtr data,
params, sizeof(params)/sizeof(params[0]),
mpis, sizeof(mpis)/sizeof(mpis[0]));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSConvertParamsToMpis",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSConvertParamsToMpis", NULL);
/* don't destroy params - we got them from outside !!! */
return(-1);
}
@@ -426,11 +389,7 @@ xmlSecGnuTLSKeyDataRsaAdoptPublicKey(xmlSecKeyDataPtr data,
rc = gcry_sexp_build(&(pub_key), NULL, "(public-key(rsa((n%m)(e%m))))",
mpis[0], mpis[1]);
if((rc != GPG_ERR_NO_ERROR) || (pub_key == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gcry_sexp_build(private/rsa)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(rc));
+ xmlSecGnuTLSGCryptError("gcry_sexp_build(public/rsa)", rc, NULL);
xmlSecGnuTLSDestroyMpis(mpis, sizeof(mpis)/sizeof(mpis[0]));
return(-1);
}
@@ -438,11 +397,7 @@ xmlSecGnuTLSKeyDataRsaAdoptPublicKey(xmlSecKeyDataPtr data,
ret = xmlSecGCryptKeyDataRsaAdoptKeyPair(data, pub_key, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGCryptKeyDataRsaAdoptKeyPair",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGCryptKeyDataRsaAdoptKeyPair", NULL);
gcry_sexp_release(pub_key);
return(-1);
}
diff --git a/src/gnutls/ciphers.c b/src/gnutls/ciphers.c
index e38fa7db..abec7fa6 100644
--- a/src/gnutls/ciphers.c
+++ b/src/gnutls/ciphers.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
diff --git a/src/gnutls/crypto.c b/src/gnutls/crypto.c
index 0921f2c5..c8a0cb41 100644
--- a/src/gnutls/crypto.c
+++ b/src/gnutls/crypto.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for GnuTLS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -242,21 +250,13 @@ int
xmlSecGnuTLSInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_gnutls()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
@@ -296,21 +296,13 @@ xmlSecGnuTLSKeysMngrInit(xmlSecKeysMngrPtr mngr) {
x509Store = xmlSecKeyDataStoreCreate(xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSX509StoreId");
+ xmlSecInternalError("xmlSecKeyDataStoreCreate(StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptDataStore(mngr, x509Store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptDataStore", NULL);
xmlSecKeyDataStoreDestroy(x509Store);
return(-1);
}
@@ -337,11 +329,8 @@ xmlSecGnuTLSGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
ret = xmlSecBufferSetSize(buffer, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", size);
return(-1);
}
diff --git a/src/gnutls/digests.c b/src/gnutls/digests.c
index 94f3aa6a..9ad18436 100644
--- a/src/gnutls/digests.c
+++ b/src/gnutls/digests.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
diff --git a/src/gnutls/globals.h b/src/gnutls/globals.h
index 1f9f35c0..09cb251f 100644
--- a/src/gnutls/globals.h
+++ b/src/gnutls/globals.h
@@ -21,11 +21,74 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
-#define XMLSEC_GNUTLS_GCRYPT_REPORT_ERROR(err) \
- "error code=%d; error message='%s'", \
- (int)err, xmlSecErrorsSafeString(gcry_strerror((err)))
-#define XMLSEC_GNUTLS_REPORT_ERROR(err) \
- "error code=%d; error message='%s'", \
- (int)err, xmlSecErrorsSafeString(gnutls_strerror((err)))
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+/**
+ * xmlSecGnuTLSGCryptError:
+ * @errorFunction: the failed function name.
+ * @errCode: the GCrypt error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting GnuTLS-GCrypt errors.
+ */
+#define xmlSecGnuTLSGCryptError(errorFunction, errCode, errorObject) \
+ { \
+ const char* source = gcry_strsource((errCode)); \
+ const char* message = gcry_strerror((errCode)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "gcrypt error: %ld: %s: %s", \
+ (long)(errCode), \
+ xmlSecErrorsSafeString(source), \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecGnuTLSError:
+ * @errorFunction: the failed function name.
+ * @errCode: the GnuTLS error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting GnuTLS errors.
+ */
+#define xmlSecGnuTLSError(errorFunction, errCode, errorObject) \
+ { \
+ const char* message = gnutls_strerror((errCode)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "gnutls error: %ld: %s", \
+ (long)(errCode), \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
+
+/**
+ * xmlSecGnuTLSError2:
+ * @errorFunction: the failed function name.
+ * @errCode: the GnuTLS error code.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting GnuTLS errors.
+ */
+#define xmlSecGnuTLSError2(errorFunction, errCode, errorObject, msg, param) \
+ { \
+ const char* message = gnutls_strerror((errCode)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ msg "gnutls error: %ld: %s", \
+ (param), \
+ (long)(errCode), \
+ xmlSecErrorsSafeString(message) \
+ ); \
+ }
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/gnutls/hmac.c b/src/gnutls/hmac.c
index 76568052..510745b4 100644
--- a/src/gnutls/hmac.c
+++ b/src/gnutls/hmac.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_HMAC
#include "globals.h"
diff --git a/src/gnutls/kw_aes.c b/src/gnutls/kw_aes.c
index 4186374e..81646032 100644
--- a/src/gnutls/kw_aes.c
+++ b/src/gnutls/kw_aes.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * AES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_AES
#include "globals.h"
diff --git a/src/gnutls/kw_des.c b/src/gnutls/kw_des.c
index 79660bd5..0819943e 100644
--- a/src/gnutls/kw_des.c
+++ b/src/gnutls/kw_des.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
diff --git a/src/gnutls/signatures.c b/src/gnutls/signatures.c
index 136644c1..6e632cd4 100644
--- a/src/gnutls/signatures.c
+++ b/src/gnutls/signatures.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
diff --git a/src/gnutls/symkeys.c b/src/gnutls/symkeys.c
index 74727eeb..8775c090 100644
--- a/src/gnutls/symkeys.c
+++ b/src/gnutls/symkeys.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
diff --git a/src/gnutls/x509.c b/src/gnutls/x509.c
index d043bc72..d9503d34 100644
--- a/src/gnutls/x509.c
+++ b/src/gnutls/x509.c
@@ -1,7 +1,6 @@
-/**
- * XMLSec library
- *
- * X509 support
+
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +8,13 @@
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509
+ * @Short_description: X509 certificates implementation for GnuTLS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -328,11 +334,8 @@ xmlSecGnuTLSKeyDataX509AdoptCert(xmlSecKeyDataPtr data, gnutls_x509_crt_t cert)
ret = xmlSecPtrListAdd(&(ctx->certsList), cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -403,11 +406,8 @@ xmlSecGnuTLSKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, gnutls_x509_crl_t crl) {
ret = xmlSecPtrListAdd(&(ctx->crlsList), crl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -471,21 +471,15 @@ xmlSecGnuTLSKeyDataX509Initialize(xmlSecKeyDataPtr data) {
ret = xmlSecPtrListInitialize(&(ctx->certsList), xmlSecGnuTLSX509CrtListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "certsList");
+ xmlSecInternalError("xmlSecPtrListInitialize(certsList)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = xmlSecPtrListInitialize(&(ctx->crlsList), xmlSecGnuTLSX509CrlListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "crlsList");
+ xmlSecInternalError("xmlSecPtrListInitialize(crlsList)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -514,11 +508,8 @@ xmlSecGnuTLSKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(ctxSrc->keyCert != NULL) {
ctxDst->keyCert = xmlSecGnuTLSX509CertDup(ctxSrc->keyCert);
if(ctxDst->keyCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup",
+ xmlSecKeyDataGetName(src));
return(-1);
}
}
@@ -527,11 +518,8 @@ xmlSecGnuTLSKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecPtrListEmpty(&(ctxDst->certsList));
ret = xmlSecPtrListCopy(&(ctxDst->certsList), &(ctxSrc->certsList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "certsList");
+ xmlSecInternalError("xmlSecPtrListCopy(certsList)",
+ xmlSecKeyDataGetName(src));
return(-1);
}
@@ -539,13 +527,11 @@ xmlSecGnuTLSKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecPtrListEmpty(&(ctxDst->crlsList));
ret = xmlSecPtrListCopy(&(ctxDst->crlsList), &(ctxSrc->crlsList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "crlsList");
+ xmlSecInternalError("xmlSecPtrListCopy(crlsList)",
+ xmlSecKeyDataGetName(src));
return(-1);
}
+
/* done */
return(0);
}
@@ -580,34 +566,23 @@ xmlSecGnuTLSKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyEnsureData(key, id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecGnuTLSX509DataNodeRead(data, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509DataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509DataNodeRead",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
- if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
- ret = xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
+ ret = xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
}
return(0);
}
@@ -627,13 +602,11 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(node != NULL, -1);
xmlSecAssert2(keyInfoCtx != NULL, -1);
- content = xmlSecX509DataGetNodeContent (node, 1, keyInfoCtx);
+ content = xmlSecX509DataGetNodeContent (node, keyInfoCtx);
if (content < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecX509DataGetNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "content=%d", content);
+ xmlSecInternalError2("xmlSecX509DataGetNodeContent",
+ xmlSecKeyDataKlassGetName(id),
+ "content=%d", content);
return(-1);
} else if(content == 0) {
/* by default we are writing certificates and crls */
@@ -652,22 +625,18 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
cert = xmlSecGnuTLSKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCert",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
ret = xmlSecGnuTLSX509CertificateNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509CertificateNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertificateNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -675,11 +644,9 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
ret = xmlSecGnuTLSX509SubjectNameNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509SubjectNameNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSX509SubjectNameNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -687,11 +654,9 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
ret = xmlSecGnuTLSX509IssuerSerialNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509IssuerSerialNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSX509IssuerSerialNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -699,11 +664,9 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
ret = xmlSecGnuTLSX509SKINodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509SKINodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSX509SKINodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -715,21 +678,17 @@ xmlSecGnuTLSKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
crl = xmlSecGnuTLSKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCrl",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
ret = xmlSecGnuTLSX509CRLNodeWrite(crl, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSX509CRLNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSX509CRLNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -783,11 +742,9 @@ xmlSecGnuTLSKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
cert = xmlSecGnuTLSKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "==== Certificate:\n");
@@ -801,11 +758,9 @@ xmlSecGnuTLSKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
crl = xmlSecGnuTLSKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCrl",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "==== Crl:\n");
@@ -841,11 +796,9 @@ xmlSecGnuTLSKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
cert = xmlSecGnuTLSKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "<Certificate>\n");
@@ -860,11 +813,9 @@ xmlSecGnuTLSKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
crl = xmlSecGnuTLSKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecGnuTLSKeyDataX509GetCrl",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "<CRL>\n");
@@ -892,29 +843,42 @@ xmlSecGnuTLSX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
ret = 0;
if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
ret = xmlSecGnuTLSX509CertificateNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSX509CertificateNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
ret = xmlSecGnuTLSX509SubjectNameNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSX509SubjectNameNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
ret = xmlSecGnuTLSX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSX509IssuerSerialNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
ret = xmlSecGnuTLSX509SKINodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSX509SKINodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
ret = xmlSecGnuTLSX509CRLNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecGnuTLSX509CRLNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation: ignore unknown nodes */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "read node failed");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
return(-1);
}
}
@@ -937,11 +901,7 @@ xmlSecGnuTLSX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -949,22 +909,16 @@ xmlSecGnuTLSX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
cert = xmlSecGnuTLSX509CertBase64DerRead(content);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
gnutls_x509_crt_deinit(cert);
xmlFree(content);
return(-1);
@@ -986,29 +940,20 @@ xmlSecGnuTLSX509CertificateNodeWrite(gnutls_x509_crt_t cert, xmlNodePtr node, xm
/* set base64 lines size from context */
buf = xmlSecGnuTLSX509CertBase64DerWrite(cert, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509Certificate)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
return(0);
@@ -1027,7 +972,9 @@ xmlSecGnuTLSX509Trim(xmlChar * str) {
/* skip spaces from the beggining */
p = str;
- while(XMLSEC_GNUTLS_IS_SPACE(*p) && ((*p) != '\0')) ++p;
+ while(XMLSEC_GNUTLS_IS_SPACE(*p) && ((*p) != '\0')) {
+ ++p;
+ }
if(p != str) {
for(q = str; ; ++q, ++p) {
(*q) = (*p);
@@ -1038,8 +985,12 @@ xmlSecGnuTLSX509Trim(xmlChar * str) {
}
/* skip spaces from the end */
- for(p = str; (*p) != '\0'; ++p);
- while((p > str) && (XMLSEC_GNUTLS_IS_SPACE(*(p - 1)))) *(--p) = '\0';
+ for(p = str; (*p) != '\0'; ++p) {
+ ;
+ }
+ while((p > str) && (XMLSEC_GNUTLS_IS_SPACE(*(p - 1)))) {
+ *(--p) = '\0';
+ }
}
static int
@@ -1057,11 +1008,8 @@ xmlSecGnuTLSX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1071,11 +1019,7 @@ xmlSecGnuTLSX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
xmlFree(subject);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1086,12 +1030,8 @@ xmlSecGnuTLSX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "subject=%s",
- xmlSecErrorsSafeString(subject));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "subject=%s", xmlSecErrorsSafeString(subject));
xmlFree(subject);
return(-1);
}
@@ -1102,23 +1042,16 @@ xmlSecGnuTLSX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlS
cert2 = xmlSecGnuTLSX509CertDup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup",
+ xmlSecKeyDataGetName(data));
xmlFree(subject);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
gnutls_x509_crt_deinit(cert2);
xmlFree(subject);
return(-1);
@@ -1132,35 +1065,32 @@ static int
xmlSecGnuTLSX509SubjectNameNodeWrite(gnutls_x509_crt_t cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar* buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
/* add node */
- cur = xmlSecAddChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SubjectName)", NULL);
return(-1);
}
/* get subject */
buf = xmlSecGnuTLSX509CertGetSubjectDN(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSubjectDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetSubjectDN", NULL);
return(-1);
}
/* set value */
- xmlSecNodeEncodeAndSetContent(cur, buf);
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
/* done */
xmlFree(buf);
@@ -1184,23 +1114,16 @@ xmlSecGnuTLSX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
cur = xmlSecGetNextElementNode(node->children);
if(cur == NULL) {
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
return(-1);
}
return(0);
@@ -1208,56 +1131,32 @@ xmlSecGnuTLSX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
/* the first is required node X509IssuerName */
if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509IssuerName, xmlSecKeyDataGetName(data));
return(-1);
}
issuerName = xmlNodeGetContent(cur);
if(issuerName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is required node X509SerialNumber */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509SerialNumber, xmlSecKeyDataGetName(data));
xmlFree(issuerName);
return(-1);
}
issuerSerial = xmlNodeGetContent(cur);
if(issuerSerial == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
xmlFree(issuerName);
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1269,13 +1168,10 @@ xmlSecGnuTLSX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "issuerName=%s;issuerSerial=%s",
- xmlSecErrorsSafeString(issuerName),
- xmlSecErrorsSafeString(issuerSerial));
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "issuerName=%s;issuerSerial=%s",
+ xmlSecErrorsSafeString(issuerName),
+ xmlSecErrorsSafeString(issuerSerial));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1287,11 +1183,8 @@ xmlSecGnuTLSX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
cert2 = xmlSecGnuTLSX509CertDup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup",
+ xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1299,11 +1192,8 @@ xmlSecGnuTLSX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
ret = xmlSecGnuTLSKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
gnutls_x509_crt_deinit(cert2);
xmlFree(issuerSerial);
xmlFree(issuerName);
@@ -1321,69 +1211,60 @@ xmlSecGnuTLSX509IssuerSerialNodeWrite(gnutls_x509_crt_t cert, xmlNodePtr node, x
xmlNodePtr issuerNameNode;
xmlNodePtr issuerNumberNode;
xmlChar* buf;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
/* create xml nodes */
- cur = xmlSecAddChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerSerial)", NULL);
return(-1);
}
- issuerNameNode = xmlSecAddChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ issuerNameNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
if(issuerNameNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerName)", NULL);
return(-1);
}
- issuerNumberNode = xmlSecAddChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ issuerNumberNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
if(issuerNumberNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SerialNumber)", NULL);
return(-1);
}
/* write data */
buf = xmlSecGnuTLSX509CertGetIssuerDN(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetIssuerDN", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNameNode)", NULL);
+ xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
xmlFree(buf);
buf = xmlSecGnuTLSX509CertGetIssuerSerial(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerSerial",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetIssuerSerial", NULL);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNumberNode, buf);
- xmlFree(buf);
+ ret = xmlSecNodeEncodeAndSetContent(issuerNumberNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNumberNode)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1403,11 +1284,8 @@ xmlSecGnuTLSX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1417,12 +1295,7 @@ xmlSecGnuTLSX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
xmlFree(ski);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1434,12 +1307,9 @@ xmlSecGnuTLSX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
xmlFree(ski);
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "ski=%s",
+ xmlSecErrorsSafeString(ski));
return(-1);
}
return(0);
@@ -1447,22 +1317,16 @@ xmlSecGnuTLSX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
cert2 = xmlSecGnuTLSX509CertDup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup",
+ xmlSecKeyDataGetName(data));
xmlFree(ski);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
gnutls_x509_crt_deinit(cert2);
xmlFree(ski);
return(-1);
@@ -1476,36 +1340,34 @@ static int
xmlSecGnuTLSX509SKINodeWrite(gnutls_x509_crt_t cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar *buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
/* add node */
- cur = xmlSecAddChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SKI)", NULL);
return(-1);
}
/* write value */
buf = xmlSecGnuTLSX509CertGetSKI(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSKI",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetSKI", NULL);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
- xmlFree(buf);
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1525,11 +1387,7 @@ xmlSecGnuTLSX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1537,22 +1395,16 @@ xmlSecGnuTLSX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInf
crl = xmlSecGnuTLSX509CrlBase64DerRead(content);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CrlBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CrlBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCrl(data, crl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(data));
gnutls_x509_crl_deinit(crl);
xmlFree(content);
return(-1);
@@ -1574,28 +1426,19 @@ xmlSecGnuTLSX509CRLNodeWrite(gnutls_x509_crl_t crl, xmlNodePtr node, xmlSecKeyIn
/* set base64 lines size from context */
buf = xmlSecGnuTLSX509CrlBase64DerWrite(crl, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CrlBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CrlBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509CRL)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
@@ -1620,11 +1463,8 @@ xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr k
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecGnuTLSX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1637,42 +1477,30 @@ xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr k
ctx->keyCert = xmlSecGnuTLSX509CertDup(cert);
if(ctx->keyCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup",
+ xmlSecKeyDataGetName(data));
return(-1);
}
keyValue = xmlSecGnuTLSX509CertGetKey(ctx->keyCert);
if(keyValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecGnuTLSX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetKey",
+ xmlSecKeyDataGetName(data));
return(-1);
}
/* verify that the key matches our expectations */
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
ret = xmlSecKeySetValue(key, keyValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
@@ -1680,28 +1508,22 @@ xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr k
/* get expiration time */
key->notValidBefore = gnutls_x509_crt_get_activation_time(ctx->keyCert);
if(key->notValidBefore == (time_t)-1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gnutls_x509_crt_get_activation_time",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGnuTLSError2("gnutls_x509_crt_get_activation_time", GNUTLS_E_SUCCESS,
+ xmlSecKeyDataGetName(data),
+ "cert activation time is invalid: %ld",
+ (unsigned long)key->notValidBefore);
return(-1);
}
key->notValidAfter = gnutls_x509_crt_get_expiration_time(ctx->keyCert);
if(key->notValidAfter == (time_t)-1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "gnutls_x509_crt_get_expiration_time",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGnuTLSError2("gnutls_x509_crt_get_expiration_time", GNUTLS_E_SUCCESS,
+ xmlSecKeyDataGetName(data),
+ "cert expiration time is invalid: %ld",
+ (unsigned long)key->notValidAfter);
return(-1);
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data), NULL);
return(-1);
}
}
@@ -1728,11 +1550,7 @@ xmlSecGnuTLSX509CertGetKey(gnutls_x509_crt_t cert) {
alg = gnutls_x509_crt_get_pk_algorithm(cert, &bits);
if(alg < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_pk_algorithm",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(alg));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_pk_algorithm", alg, NULL);
return(NULL);
}
@@ -1744,31 +1562,19 @@ xmlSecGnuTLSX509CertGetKey(gnutls_x509_crt_t cert) {
data = xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataRsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataRsaId)", NULL);
return(NULL);
}
err = gnutls_x509_crt_get_pk_rsa_raw(cert, &m, &e);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_pk_rsa_raw",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_pk_rsa_raw", err, NULL);
return(NULL);
}
ret = xmlSecGnuTLSKeyDataRsaAdoptPublicKey(data, &m, &e);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataRsaAdoptPublicKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataRsaAdoptPublicKey", NULL);
gnutls_free(m.data);
gnutls_free(e.data);
return(NULL);
@@ -1785,31 +1591,19 @@ xmlSecGnuTLSX509CertGetKey(gnutls_x509_crt_t cert) {
data = xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataDsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataDsaId)", NULL);
return(NULL);
}
err = gnutls_x509_crt_get_pk_dsa_raw(cert, &p, &q, &g, &y);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_pk_dsa_raw",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_pk_dsa_raw", err, NULL);
return(NULL);
}
ret = xmlSecGnuTLSKeyDataDsaAdoptPublicKey(data, &p, &q, &g, &y);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataDsaAdoptPublicKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataDsaAdoptPublicKey", NULL);
gnutls_free(p.data);
gnutls_free(q.data);
gnutls_free(g.data);
@@ -1823,11 +1617,7 @@ xmlSecGnuTLSX509CertGetKey(gnutls_x509_crt_t cert) {
default:
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_pk_algorithm",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "Unsupported algorithm %d", (int)alg);
+ xmlSecInvalidIntegerTypeError("key_alg", alg, "supported algorithm", NULL);
return(NULL);
}
}
@@ -1915,43 +1705,30 @@ xmlSecGnuTLSKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
cert = xmlSecGnuTLSX509CertRead(buf, bufSize, xmlSecKeyDataFormatCertDer);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertRead", NULL);
return(-1);
}
data = xmlSecKeyEnsureData(key, xmlSecGnuTLSKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
gnutls_x509_crt_deinit(cert);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509AdoptCert",
+ xmlSecKeyDataKlassGetName(id));
gnutls_x509_crt_deinit(cert);
return(-1);
}
ret = xmlSecGnuTLSKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecGnuTLSKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
return(0);
diff --git a/src/gnutls/x509utils.c b/src/gnutls/x509utils.c
index 2ab4df23..7fb61a43 100644
--- a/src/gnutls/x509utils.c
+++ b/src/gnutls/x509utils.c
@@ -1,7 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * X509 support
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +8,13 @@
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509utils
+ * @Short_description: X509 certificates support functions for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -173,21 +179,13 @@ xmlSecGnuTLSX509CertDup(gnutls_x509_crt_t src) {
buf = xmlSecGnuTLSX509CertBase64DerWrite(src, 0);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertBase64DerWrite", NULL);
return (NULL);
}
res = xmlSecGnuTLSX509CertBase64DerRead(buf);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertBase64DerRead", NULL);
xmlFree(buf);
return (NULL);
}
@@ -208,33 +206,21 @@ xmlSecGnuTLSX509CertGetSubjectDN(gnutls_x509_crt_t cert) {
/* get subject size */
err = gnutls_x509_crt_get_dn(cert, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_dn", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (char *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* finally write it out */
err = gnutls_x509_crt_get_dn(cert, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_dn", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -254,33 +240,21 @@ xmlSecGnuTLSX509CertGetIssuerDN(gnutls_x509_crt_t cert) {
/* get issuer size */
err = gnutls_x509_crt_get_issuer_dn(cert, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_issuer_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_issuer_dn", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (char *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* finally write it out */
err = gnutls_x509_crt_get_issuer_dn(cert, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_issuer_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_issuer_dn", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -301,33 +275,21 @@ xmlSecGnuTLSX509CertGetIssuerSerial(gnutls_x509_crt_t cert) {
/* get issuer serial size */
err = gnutls_x509_crt_get_serial(cert, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_serial",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_serial", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (unsigned char *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* write it out */
err = gnutls_x509_crt_get_serial(cert, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_serial",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_serial", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -335,11 +297,7 @@ xmlSecGnuTLSX509CertGetIssuerSerial(gnutls_x509_crt_t cert) {
/* convert to string */
res = xmlSecGnuTLSASN1IntegerWrite(buf, bufSize);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSASN1IntegerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSASN1IntegerWrite", NULL);
xmlFree(buf);
return(NULL);
}
@@ -362,33 +320,21 @@ xmlSecGnuTLSX509CertGetSKI(gnutls_x509_crt_t cert) {
/* get ski size */
err = gnutls_x509_crt_get_subject_key_id(cert, NULL, &bufSize, &critical);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_subject_key_id",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_subject_key_id", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (xmlSecByte *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* write it out */
err = gnutls_x509_crt_get_subject_key_id(cert, buf, &bufSize, &critical);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_subject_key_id",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_subject_key_id", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -396,11 +342,7 @@ xmlSecGnuTLSX509CertGetSKI(gnutls_x509_crt_t cert) {
/* convert to string */
res = xmlSecBase64Encode(buf, bufSize, 0);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
xmlFree(buf);
return(NULL);
}
@@ -420,11 +362,7 @@ xmlSecGnuTLSX509CertBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -452,22 +390,15 @@ xmlSecGnuTLSX509CertRead(const xmlSecByte* buf, xmlSecSize size, xmlSecKeyDataFo
fmt = GNUTLS_X509_FMT_DER;
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
/* read cert */
err = gnutls_x509_crt_init(&cert);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_init", err, NULL);
return(NULL);
}
@@ -475,11 +406,7 @@ xmlSecGnuTLSX509CertRead(const xmlSecByte* buf, xmlSecSize size, xmlSecKeyDataFo
data.size = size;
err = gnutls_x509_crt_import(cert, &data, fmt);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_import",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_import", err, NULL);
gnutls_x509_crt_deinit(cert);
return(NULL);
}
@@ -499,33 +426,21 @@ xmlSecGnuTLSX509CertBase64DerWrite(gnutls_x509_crt_t cert, int base64LineWrap) {
/* get size */
err = gnutls_x509_crt_export(cert, GNUTLS_X509_FMT_DER, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_export(GNUTLS_X509_FMT_DER)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_export(GNUTLS_X509_FMT_DER)", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (xmlSecByte *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* write it out */
err = gnutls_x509_crt_export(cert, GNUTLS_X509_FMT_DER, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_export(GNUTLS_X509_FMT_DER)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_export(GNUTLS_X509_FMT_DER)", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -533,11 +448,7 @@ xmlSecGnuTLSX509CertBase64DerWrite(gnutls_x509_crt_t cert, int base64LineWrap) {
/* convert to string */
res = xmlSecBase64Encode(buf, bufSize, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
xmlFree(buf);
return(NULL);
}
@@ -628,21 +539,13 @@ xmlSecGnuTLSX509CrlDup(gnutls_x509_crl_t src) {
buf = xmlSecGnuTLSX509CrlBase64DerWrite(src, 0);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CrlBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CrlBase64DerWrite", NULL);
return (NULL);
}
res = xmlSecGnuTLSX509CrlBase64DerRead(buf);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CrlBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CrlBase64DerRead", NULL);
xmlFree(buf);
return (NULL);
}
@@ -663,33 +566,21 @@ xmlSecGnuTLSX509CrlGetIssuerDN(gnutls_x509_crl_t crl) {
/* get issuer size */
err = gnutls_x509_crl_get_issuer_dn(crl, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_get_issuer_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_get_issuer_dn", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (char *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* finally write it out */
err = gnutls_x509_crl_get_issuer_dn(crl, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_get_issuer_dn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_get_issuer_dn", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -707,11 +598,7 @@ xmlSecGnuTLSX509CrlBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -739,22 +626,15 @@ xmlSecGnuTLSX509CrlRead(const xmlSecByte* buf, xmlSecSize size, xmlSecKeyDataFor
fmt = GNUTLS_X509_FMT_DER;
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
/* read crl */
err = gnutls_x509_crl_init(&crl);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_init", err, NULL);
return(NULL);
}
@@ -762,11 +642,7 @@ xmlSecGnuTLSX509CrlRead(const xmlSecByte* buf, xmlSecSize size, xmlSecKeyDataFor
data.size = size;
err = gnutls_x509_crl_import(crl, &data, fmt);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_import",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_import", err, NULL);
gnutls_x509_crl_deinit(crl);
return(NULL);
}
@@ -786,33 +662,21 @@ xmlSecGnuTLSX509CrlBase64DerWrite(gnutls_x509_crl_t crl, int base64LineWrap) {
/* get size */
err = gnutls_x509_crl_export(crl, GNUTLS_X509_FMT_DER, NULL, &bufSize);
if((err != GNUTLS_E_SHORT_MEMORY_BUFFER) || (bufSize <= 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_export(GNUTLS_X509_FMT_DER)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_export(GNUTLS_X509_FMT_DER)", err, NULL);
return(NULL);
}
/* allocate buffer */
buf = (xmlSecByte *)xmlMalloc(bufSize + 1);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)bufSize);
+ xmlSecMallocError(bufSize + 1, NULL);
return(NULL);
}
/* write it out */
err = gnutls_x509_crl_export(crl, GNUTLS_X509_FMT_DER, buf, &bufSize);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crl_export(GNUTLS_X509_FMT_DER)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crl_export(GNUTLS_X509_FMT_DER)", err, NULL);
xmlFree(buf);
return(NULL);
}
@@ -820,11 +684,7 @@ xmlSecGnuTLSX509CrlBase64DerWrite(gnutls_x509_crl_t crl, int base64LineWrap) {
/* convert to string */
res = xmlSecBase64Encode(buf, bufSize, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
xmlFree(buf);
return(NULL);
}
@@ -878,6 +738,7 @@ xmlSecGnuTLSASN1IntegerWrite(const unsigned char * data, size_t len) {
unsigned long long int val = 0;
size_t ii = 0;
int shift = 0;
+ int ret;
xmlSecAssert2(data != NULL, NULL);
xmlSecAssert2(len <= 9, NULL);
@@ -889,15 +750,17 @@ xmlSecGnuTLSASN1IntegerWrite(const unsigned char * data, size_t len) {
res = (xmlChar*)xmlMalloc(resLen + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)resLen);
- return (NULL);
+ xmlSecMallocError(resLen + 1, NULL);
+ return(NULL);
+ }
+
+ ret = xmlStrPrintf(res, resLen, "%llu", val);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ xmlFree(res);
+ return(NULL);
}
- xmlSecStrPrintf(res, resLen, BAD_CAST "%llu", val);
return(res);
}
@@ -934,11 +797,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* read pkcs12 in internal structure */
err = gnutls_pkcs12_init(&pkcs12);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_init", err, NULL);
goto done;
}
@@ -946,22 +805,14 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
datum.size = dataSize;
err = gnutls_pkcs12_import(pkcs12, &datum, GNUTLS_X509_FMT_DER, 0);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_import",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_import", err, NULL);
goto done;
}
/* verify */
err = gnutls_pkcs12_verify_mac(pkcs12, pwd);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_verify_mac",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_verify_mac", err, NULL);
goto done;
}
@@ -973,11 +824,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
err = gnutls_pkcs12_bag_init(&bag);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_init", err, NULL);
goto done;
}
@@ -986,32 +833,20 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* scanned the whole pkcs12, stop */
break;
} else if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_get_bag",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_get_bag", err, NULL);
goto done;
}
/* check if we need to decrypt the bag */
bag_type = gnutls_pkcs12_bag_get_type(bag, 0);
if(bag_type < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_get_type",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(bag_type));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_get_type", bag_type, NULL);
goto done;
}
if(bag_type == GNUTLS_BAG_ENCRYPTED) {
err = gnutls_pkcs12_bag_decrypt(bag, pwd);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_decrypt", err, NULL);
goto done;
}
}
@@ -1019,31 +854,19 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* scan elements in bag */
elements_in_bag = gnutls_pkcs12_bag_get_count(bag);
if(elements_in_bag < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_get_count",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(bag_type));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_get_count", elements_in_bag, NULL);
goto done;
}
for(ii = 0; ii < elements_in_bag; ++ii) {
bag_type = gnutls_pkcs12_bag_get_type(bag, ii);
if(bag_type < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_get_type",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(bag_type));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_get_type", bag_type, NULL);
goto done;
}
err = gnutls_pkcs12_bag_get_data(bag, ii, &datum);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_pkcs12_bag_get_data",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_pkcs12_bag_get_data", err, NULL);
goto done;
}
@@ -1054,11 +877,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
if((*priv_key) == NULL) {
err = gnutls_x509_privkey_init(priv_key);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_privkey_init", err, NULL);
goto done;
}
@@ -1067,11 +886,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
pwd,
(bag_type == GNUTLS_BAG_PKCS8_KEY) ? GNUTLS_PKCS_PLAIN : 0);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_import_pkcs8",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_privkey_import_pkcs8", err, NULL);
goto done;
}
}
@@ -1079,31 +894,19 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
case GNUTLS_BAG_CERTIFICATE:
err = gnutls_x509_crt_init(&cert);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_init", err, NULL);
goto done;
}
err = gnutls_x509_crt_import(cert, &datum, GNUTLS_X509_FMT_DER);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_import",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_import", err, NULL);
goto done;
}
ret = xmlSecPtrListAdd(certsList, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd(certsList)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd(certsList)", NULL);
goto done;
}
cert = NULL; /* owned by certsList now */
@@ -1121,11 +924,8 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* check we have private key */
if((*priv_key) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Private key was not found in pkcs12 object");
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL,
+ "Private key was not found in pkcs12 object");
goto done;
}
@@ -1141,11 +941,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
key_id_size = sizeof(key_id);
err = gnutls_x509_privkey_get_key_id((*priv_key), 0, key_id, &key_id_size);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_get_key_id",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_privkey_get_key_id", err, NULL);
goto done;
}
for(ii = 0; ii < certsSize; ++ii) {
@@ -1159,11 +955,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
cert_id_size = sizeof(cert_id);
err = gnutls_x509_crt_get_key_id(tmp, 0, cert_id, &cert_id_size);
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_key_id",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_get_key_id", err, NULL);
goto done;
}
@@ -1171,11 +963,7 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
if((key_id_size == cert_id_size) && (memcmp(key_id, cert_id, key_id_size) == 0)) {
(*key_cert) = xmlSecGnuTLSX509CertDup(tmp);
if((*key_cert) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertDup", NULL);
goto done;
}
@@ -1185,11 +973,8 @@ xmlSecGnuTLSPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* check we have key cert */
if((*key_cert) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Certificate for the private key was not found in pkcs12 object");
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND, NULL,
+ "Certificate for the private key was not found in pkcs12 object");
goto done;
}
}
@@ -1222,11 +1007,7 @@ xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey(gnutls_x509_privkey_t priv_key) {
/* create key value data */
key_alg = gnutls_x509_privkey_get_pk_algorithm(priv_key);
if(key_alg < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_get_pk_algorithm",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(key_alg));
+ xmlSecGnuTLSError("gnutls_x509_privkey_get_pk_algorithm", key_alg < 0, NULL);
return (NULL);
}
switch(key_alg) {
@@ -1234,21 +1015,13 @@ xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey(gnutls_x509_privkey_t priv_key) {
case GNUTLS_PK_RSA:
res = xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataRsaId);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataRsaId)", NULL);
return(NULL);
}
ret = xmlSecGnuTLSKeyDataRsaAdoptPrivateKey(res, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataRsaAdoptPrivateKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataRsaId");
+ xmlSecInternalError("xmlSecGnuTLSKeyDataRsaAdoptPrivateKey(KeyDataRsaId)", NULL);
xmlSecKeyDataDestroy(res);
return(NULL);
}
@@ -1259,32 +1032,20 @@ xmlSecGnuTLSCreateKeyDataAndAdoptPrivKey(gnutls_x509_privkey_t priv_key) {
case GNUTLS_PK_DSA:
res = xmlSecKeyDataCreate(xmlSecGnuTLSKeyDataDsaId);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataDsaId)", NULL);
return(NULL);
}
ret = xmlSecGnuTLSKeyDataDsaAdoptPrivateKey(res, priv_key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSKeyDataDsaAdoptPrivateKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecGnuTLSKeyDataDsaId");
+ xmlSecInternalError("xmlSecGnuTLSKeyDataDsaAdoptPrivateKey(KeyDataDsaId)", NULL);
xmlSecKeyDataDestroy(res);
return(NULL);
}
break;
#endif /* XMLSEC_NO_DSA */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_privkey_get_pk_algorithm",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "Unsupported algorithm %d", (int)key_alg);
+ xmlSecInvalidIntegerTypeError("key_alg", key_alg, "supported algorithm", NULL);
return(NULL);
}
@@ -1493,11 +1254,7 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
/* allocate buffer, we don't need more than string */
tmp = (xmlChar *)xmlMalloc(xmlStrlen(dn) + 1);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(xmlStrlen(dn) + 1));
+ xmlSecMallocError(xmlStrlen(dn) + 1, NULL);
goto done;
}
@@ -1532,20 +1289,13 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
/* insert into the attrs */
if(pos >= attrsSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Not enough space: size=%d", (int)attrsSize);
+ xmlSecInvalidSizeLessThanError("Attributes",
+ attrsSize, pos, NULL);
goto done;
}
attrs[pos].key = xmlStrdup(tmp);
if(attrs[pos].key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(xmlStrlen(tmp) + 1));
+ xmlSecStrdupError(tmp, NULL);
goto done;
}
@@ -1583,11 +1333,7 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
attrs[pos].value = xmlStrdup(tmp);
if(attrs[pos].value == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(xmlStrlen(tmp) + 1));
+ xmlSecStrdupError(tmp, NULL);
goto done;
}
state = xmlSecGnuTLSDnParseState_BeforeNameComponent;
@@ -1609,11 +1355,7 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
attrs[pos].value = xmlStrdup(tmp);
if(attrs[pos].value == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(xmlStrlen(tmp) + 1));
+ xmlSecStrdupError(tmp, NULL);
goto done;
}
state = xmlSecGnuTLSDnParseState_AfterQuotedString;
@@ -1628,12 +1370,7 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
if((ch == ',') || (ch == ';') || (ch == '\0')) {
state = xmlSecGnuTLSDnParseState_BeforeNameComponent;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Unexpected character %c (expected space or ',' or ';')",
- ch);
+ xmlSecInvalidIntegerDataError("ch", ch, "space,',',';','\\0'", NULL);
goto done;
}
} else {
@@ -1650,12 +1387,7 @@ xmlSecGnuTLSDnAttrsParse(const xmlChar * dn,
/* check end state */
if(state != xmlSecGnuTLSDnParseState_BeforeNameComponent) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Unexpected state %d at the end of parsing",
- (int)state);
+ xmlSecInvalidIntegerDataError("state", state, "xmlSecGnuTLSDnParseState_BeforeNameComponent", NULL);
goto done;
}
diff --git a/src/gnutls/x509vfy.c b/src/gnutls/x509vfy.c
index f302d8fc..4c753344 100644
--- a/src/gnutls/x509vfy.c
+++ b/src/gnutls/x509vfy.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +7,13 @@
*
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509vfy
+ * @Short_description: X509 certificates verification support functions for GnuTLS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -159,38 +164,28 @@ xmlSecGnuTLSX509CheckTime(const gnutls_x509_crt_t * cert_list,
/* get expiration times */
notValidBefore = gnutls_x509_crt_get_activation_time(cert);
if(notValidBefore == (time_t)-1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_activation_time",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGnuTLSError2("gnutls_x509_crt_get_activation_time", GNUTLS_E_SUCCESS,
+ NULL,
+ "cert activation time is invalid: %ld",
+ (unsigned long)notValidBefore);
return(-1);
}
notValidAfter = gnutls_x509_crt_get_expiration_time(cert);
if(notValidAfter == (time_t)-1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_get_expiration_time",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecGnuTLSError2("gnutls_x509_crt_get_expiration_time", GNUTLS_E_SUCCESS,
+ NULL,
+ "cert expiration time is invalid: %ld",
+ (unsigned long)notValidAfter);
return(-1);
}
/* check */
if(ts < notValidBefore) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_YET_VALID,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_YET_VALID, NULL, NULL);
return(0);
}
if(ts > notValidAfter) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_HAS_EXPIRED, NULL, NULL);
return(0);
}
}
@@ -249,11 +244,8 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
if(cert_list_length > 0) {
cert_list = (gnutls_x509_crt_t *)xmlMalloc(sizeof(gnutls_x509_crt_t) * cert_list_length);
if(cert_list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(sizeof(gnutls_x509_crt_t) * cert_list_length));
+ xmlSecMallocError(sizeof(gnutls_x509_crt_t) * cert_list_length,
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -261,21 +253,15 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
if(crl_list_length > 0) {
crl_list = (gnutls_x509_crl_t *)xmlMalloc(sizeof(gnutls_x509_crl_t) * crl_list_length);
if(crl_list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(sizeof(gnutls_x509_crl_t) * crl_list_length));
+ xmlSecMallocError(sizeof(gnutls_x509_crl_t) * crl_list_length,
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
for(ii = 0; ii < crl_list_length; ++ii) {
crl_list[ii] = xmlSecPtrListGetItem(crls, ii);
if(crl_list[ii] == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListGetItem(crls)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListGetItem(crls)",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -285,21 +271,15 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
if(ca_list_length > 0) {
ca_list = (gnutls_x509_crt_t *)xmlMalloc(sizeof(gnutls_x509_crt_t) * ca_list_length);
if(ca_list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)(sizeof(gnutls_x509_crt_t) * ca_list_length));
+ xmlSecMallocError(sizeof(gnutls_x509_crt_t) * ca_list_length,
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
for(ii = 0; ii < ca_list_length; ++ii) {
ca_list[ii] = xmlSecPtrListGetItem(&(ctx->certsTrusted), ii);
if(ca_list[ii] == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListGetItem(certsTrusted)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListGetItem(certsTrusted)",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -315,6 +295,9 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS) != 0) {
flags |= GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD2;
flags |= GNUTLS_VERIFY_ALLOW_SIGN_RSA_MD5;
+#if GNUTLS_VERSION_NUMBER >= 0x030600
+ flags |= GNUTLS_VERIFY_ALLOW_SIGN_WITH_SHA1;
+#endif
}
/* We are going to build all possible cert chains and try to verify them */
@@ -325,11 +308,8 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
cert = xmlSecPtrListGetItem(certs, ii);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListGetItem(certs)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListGetItem(certs)",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
@@ -357,26 +337,24 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
}
/* try to verify */
- err = gnutls_x509_crt_list_verify(
- cert_list, (int)cert_list_cur_length, /* certs chain */
- ca_list, (int)ca_list_length, /* trusted cas */
- crl_list, (int)crl_list_length, /* crls */
- flags, /* flags */
- &verify);
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
+ err = gnutls_x509_crt_list_verify(
+ cert_list, (int)cert_list_cur_length, /* certs chain */
+ ca_list, (int)ca_list_length, /* trusted cas */
+ crl_list, (int)crl_list_length, /* crls */
+ flags, /* flags */
+ &verify);
+ } else {
+ err = GNUTLS_E_SUCCESS;
+ }
if(err != GNUTLS_E_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_list_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_GNUTLS_REPORT_ERROR(err));
+ xmlSecGnuTLSError("gnutls_x509_crt_list_verify", err, NULL);
/* don't stop, continue! */
continue;
- } else if(verify != 0){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "gnutls_x509_crt_list_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "Verification failed: verify=%u", verify);
+ } else if(verify != 0) {
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED, NULL,
+ "gnutls_x509_crt_list_verify: verification failed: status=%du",
+ verify);
/* don't stop, continue! */
continue;
}
@@ -385,11 +363,7 @@ xmlSecGnuTLSX509StoreVerify(xmlSecKeyDataStorePtr store,
we have to do it ourselves */
ret = xmlSecGnuTLSX509CheckTime(cert_list, cert_list_cur_length, verification_time);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "Time verification failed");
+ xmlSecInternalError("xmlSecGnuTLSX509CheckTime", NULL);
/* don't stop, continue! */
continue;
}
@@ -437,21 +411,15 @@ xmlSecGnuTLSX509StoreAdoptCert(xmlSecKeyDataStorePtr store, gnutls_x509_crt_t ce
if((type & xmlSecKeyDataTypeTrusted) != 0) {
ret = xmlSecPtrListAdd(&(ctx->certsTrusted), cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListAdd(trusted)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd(trusted)",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
} else {
ret = xmlSecPtrListAdd(&(ctx->certsUntrusted), cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListAdd(untrusted)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd(untrusted)",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
}
@@ -474,21 +442,15 @@ xmlSecGnuTLSX509StoreInitialize(xmlSecKeyDataStorePtr store) {
ret = xmlSecPtrListInitialize(&(ctx->certsTrusted), xmlSecGnuTLSX509CrtListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListInitialize(trusted)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize(trusted)",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
ret = xmlSecPtrListInitialize(&(ctx->certsUntrusted), xmlSecGnuTLSX509CrtListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecPtrListInitialize(untrusted)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize(untrusted)",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -516,6 +478,7 @@ xmlSecGnuTLSX509StoreFinalize(xmlSecKeyDataStorePtr store) {
*
*****************************************************************************/
#define XMLSEC_GNUTLS_DN_ATTRS_SIZE 1024
+
static int
xmlSecGnuTLSX509DnsEqual(const xmlChar * ll, const xmlChar * rr) {
xmlSecGnuTLSDnAttr ll_attrs[XMLSEC_GNUTLS_DN_ATTRS_SIZE];
@@ -538,21 +501,13 @@ xmlSecGnuTLSX509DnsEqual(const xmlChar * ll, const xmlChar * rr) {
/* parse */
ret = xmlSecGnuTLSDnAttrsParse(ll, ll_attrs, XMLSEC_GNUTLS_DN_ATTRS_SIZE);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSDnAttrsParse(ll)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSDnAttrsParse(ll)", NULL);
goto done;
}
ret = xmlSecGnuTLSDnAttrsParse(rr, rr_attrs, XMLSEC_GNUTLS_DN_ATTRS_SIZE);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSDnAttrsParse(rr)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSDnAttrsParse(rr)", NULL);
goto done;
}
@@ -564,11 +519,7 @@ xmlSecGnuTLSX509DnsEqual(const xmlChar * ll, const xmlChar * rr) {
} else if(ret == 0) {
res = 0;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSDnAttrsEqual",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSDnAttrsEqual", NULL);
goto done;
}
@@ -593,11 +544,8 @@ xmlSecGnuTLSX509FindCert(xmlSecPtrListPtr certs,
for(ii = 0; (ii < sz); ++ii) {
gnutls_x509_crt_t cert = xmlSecPtrListGetItem(certs, ii);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListGetItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecPtrListGetItem", NULL,
+ "pos=%i", (int)ii);
return(NULL);
}
@@ -606,11 +554,8 @@ xmlSecGnuTLSX509FindCert(xmlSecPtrListPtr certs,
tmp = xmlSecGnuTLSX509CertGetSubjectDN(cert);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSubjectDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetSubjectDN", NULL,
+ "pos=%i", (int)ii);
return(NULL);
}
@@ -625,21 +570,15 @@ xmlSecGnuTLSX509FindCert(xmlSecPtrListPtr certs,
tmp1 = xmlSecGnuTLSX509CertGetIssuerDN(cert);
if(tmp1 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetIssuerDN", NULL,
+ "pos=%i", (int)ii);
return(NULL);
}
tmp2 = xmlSecGnuTLSX509CertGetIssuerSerial(cert);
if(tmp2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerSerial",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetIssuerSerial", NULL,
+ "pos=%i", (int)ii);
xmlFree(tmp1);
return(NULL);
}
@@ -656,11 +595,8 @@ xmlSecGnuTLSX509FindCert(xmlSecPtrListPtr certs,
tmp = xmlSecGnuTLSX509CertGetSKI(cert);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSKI",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetSKI", NULL,
+ "pos=%i", (int)ii);
return(NULL);
}
@@ -688,11 +624,7 @@ xmlSecGnuTLSX509FindSignedCert(xmlSecPtrListPtr certs, gnutls_x509_crt_t cert) {
/* get subject */
subject = xmlSecGnuTLSX509CertGetSubjectDN(cert);
if(subject == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSubjectDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetSubjectDN", NULL);
goto done;
}
@@ -704,21 +636,15 @@ xmlSecGnuTLSX509FindSignedCert(xmlSecPtrListPtr certs, gnutls_x509_crt_t cert) {
tmp = xmlSecPtrListGetItem(certs, ii);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListGetItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecPtrListGetItem", NULL,
+ "pos=%i", (int)ii);
goto done;
}
issuer = xmlSecGnuTLSX509CertGetIssuerDN(tmp);
if(issuer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetIssuerDN", NULL,
+ "pos=%i", (int)ii);
goto done;
}
@@ -749,11 +675,7 @@ xmlSecGnuTLSX509FindSignerCert(xmlSecPtrListPtr certs, gnutls_x509_crt_t cert) {
/* get issuer */
issuer = xmlSecGnuTLSX509CertGetIssuerDN(cert);
if(issuer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetIssuerDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecGnuTLSX509CertGetIssuerDN", NULL);
goto done;
}
@@ -765,21 +687,15 @@ xmlSecGnuTLSX509FindSignerCert(xmlSecPtrListPtr certs, gnutls_x509_crt_t cert) {
tmp = xmlSecPtrListGetItem(certs, ii);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListGetItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecPtrListGetItem", NULL,
+ "pos=%i", (int)ii);
goto done;
}
subject = xmlSecGnuTLSX509CertGetSubjectDN(tmp);
if(subject == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGnuTLSX509CertGetSubjectDN",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%i", (int)ii);
+ xmlSecInternalError2("xmlSecGnuTLSX509CertGetSubjectDN", NULL,
+ "pos=%i", (int)ii);
goto done;
}
diff --git a/src/io.c b/src/io.c
index 7531a7d9..a6d593c9 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1,4 +1,4 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Input uri transform and utility functions.
@@ -8,11 +8,17 @@
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:io
+ * @Short_description: Input/output functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
#include <string.h>
-#include <errno.h>
#include <libxml/uri.h>
#include <libxml/tree.h>
@@ -33,7 +39,6 @@
#include <xmlsec/io.h>
#include <xmlsec/errors.h>
-#define ERR_BUF_SIZE 1024
/*******************************************************************
*
@@ -63,12 +68,7 @@ xmlSecIOCallbackCreate(xmlInputMatchCallback matchFunc, xmlInputOpenCallback ope
/* Allocate a new xmlSecIOCallback and fill the fields. */
callbacks = (xmlSecIOCallbackPtr)xmlMalloc(sizeof(xmlSecIOCallback));
if(callbacks == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecIOCallback)=%d",
- (int)sizeof(xmlSecIOCallback));
+ xmlSecMallocError(sizeof(xmlSecIOCallback), NULL);
return(NULL);
}
memset(callbacks, 0, sizeof(xmlSecIOCallback));
@@ -127,9 +127,10 @@ xmlSecIOCallbackPtrListFind(xmlSecPtrListPtr list, const char* uri) {
xmlSecAssert2(xmlSecPtrListCheckId(list, xmlSecIOCallbackPtrListId), NULL);
xmlSecAssert2(uri != NULL, NULL);
+ /* Search from the end of the list to ensure the newly added entries are picked up first */
size = xmlSecPtrListGetSize(list);
- for(i = 0; i < size; ++i) {
- callbacks = (xmlSecIOCallbackPtr)xmlSecPtrListGetItem(list, i);
+ for(i = size; i > 0; --i) {
+ callbacks = (xmlSecIOCallbackPtr)xmlSecPtrListGetItem(list, i - 1);
xmlSecAssert2(callbacks != NULL, NULL);
xmlSecAssert2(callbacks->matchcallback != NULL, NULL);
@@ -156,29 +157,31 @@ xmlSecIOInit(void) {
ret = xmlSecPtrListInitialize(&xmlSecAllIOCallbacks, xmlSecIOCallbackPtrListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListPtrInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize", NULL);
return(-1);
}
+#ifdef LIBXML_FTP_ENABLED
+ xmlNanoFTPInit();
+#endif /* LIBXML_FTP_ENABLED */
+
#ifdef LIBXML_HTTP_ENABLED
xmlNanoHTTPInit();
#endif /* LIBXML_HTTP_ENABLED */
-#ifdef LIBXML_FTP_ENABLED
- xmlNanoFTPInit();
-#endif /* LIBXML_FTP_ENABLED */
+ ret = xmlSecIORegisterDefaultCallbacks();
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecIORegisterDefaultCallbacks", NULL);
+ return(-1);
+ }
- return(xmlSecIORegisterDefaultCallbacks());
+ return(0);
}
/**
* xmlSecIOShutdown:
*
- * The IO clenaup (called from #xmlSecShutdown function).
+ * The IO cleanup (called from #xmlSecShutdown function).
* Applications should not call this function directly.
*/
void
@@ -228,21 +231,13 @@ xmlSecIORegisterCallbacks(xmlInputMatchCallback matchFunc,
callbacks = xmlSecIOCallbackCreate(matchFunc, openFunc, readFunc, closeFunc);
if(callbacks == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecIOCallbackCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecIOCallbackCreate", NULL);
return(-1);
}
ret = xmlSecPtrListAdd(&xmlSecAllIOCallbacks, callbacks);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd", NULL);
xmlSecIOCallbackDestroy(callbacks);
return(-1);
}
@@ -261,15 +256,19 @@ int
xmlSecIORegisterDefaultCallbacks(void) {
int ret;
+ /* Callbacks added later are picked up first */
+ ret = xmlSecIORegisterCallbacks(xmlFileMatch, xmlFileOpen,
+ xmlFileRead, xmlFileClose);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecIORegisterCallbacks(file)", NULL);
+ return(-1);
+ }
+
#ifdef LIBXML_HTTP_ENABLED
ret = xmlSecIORegisterCallbacks(xmlIOHTTPMatch, xmlIOHTTPOpen,
xmlIOHTTPRead, xmlIOHTTPClose);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecIORegisterCallbacks",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "http");
+ xmlSecInternalError("xmlSecIORegisterCallbacks(http)", NULL);
return(-1);
}
#endif /* LIBXML_HTTP_ENABLED */
@@ -278,26 +277,12 @@ xmlSecIORegisterDefaultCallbacks(void) {
ret = xmlSecIORegisterCallbacks(xmlIOFTPMatch, xmlIOFTPOpen,
xmlIOFTPRead, xmlIOFTPClose);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecIORegisterCallbacks",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ftp");
+ xmlSecInternalError("xmlSecIORegisterCallbacks(ftp)", NULL);
return(-1);
}
#endif /* LIBXML_FTP_ENABLED */
- ret = xmlSecIORegisterCallbacks(xmlFileMatch, xmlFileOpen,
- xmlFileRead, xmlFileClose);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecIORegisterCallbacks",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "file");
- return(-1);
- }
-
+ /* done */
return(0);
}
@@ -421,16 +406,9 @@ xmlSecTransformInputURIOpen(xmlSecTransformPtr transform, const xmlChar *uri) {
}
}
- char buf[ERR_BUF_SIZE];
if((ctx->clbks == NULL) || (ctx->clbksCtx == NULL)) {
- strerror_r(errno, buf, sizeof(buf));
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "opencallback",
- XMLSEC_ERRORS_R_IO_FAILED,
- "uri=%s;error=%s",
- xmlSecErrorsSafeString(uri),
- buf);
+ xmlSecInternalError2("ctx->clbks->opencallback", xmlSecTransformGetName(transform),
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -442,7 +420,7 @@ xmlSecTransformInputURIOpen(xmlSecTransformPtr transform, const xmlChar *uri) {
* xmlSecTransformInputURIClose:
* @transform: the pointer to IO transform.
*
- * Closes the given @transform and frees up resourses.
+ * Closes the given @transform and frees up resources.
*
* Returns: 0 on success or a negative value otherwise.
*/
@@ -491,11 +469,9 @@ xmlSecTransformInputURIFinalize(xmlSecTransformPtr transform) {
ret = xmlSecTransformInputURIClose(transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformInputURIClose",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError2("xmlSecTransformInputURIClose",
+ xmlSecTransformGetName(transform),
+ "ret=%d", ret);
/* ignore the error */
/* return; */
}
@@ -523,13 +499,7 @@ xmlSecTransformInputURIPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
if((ctx->clbksCtx != NULL) && (ctx->clbks != NULL) && (ctx->clbks->readcallback != NULL)) {
ret = (ctx->clbks->readcallback)(ctx->clbksCtx, (char*)data, (int)maxDataSize);
if(ret < 0) {
- char buf[ERR_BUF_SIZE];
- strerror_r(errno, buf, sizeof(buf));
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "readcallback",
- XMLSEC_ERRORS_R_IO_FAILED,
- "error=%s", buf);
+ xmlSecInternalError("ctx->clbks->readcallback", xmlSecTransformGetName(transform));
return(-1);
}
(*dataSize) = ret;
diff --git a/src/keyinfo.c b/src/keyinfo.c
index 958492f1..98dabc10 100644
--- a/src/keyinfo.c
+++ b/src/keyinfo.c
@@ -1,18 +1,27 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * <dsig:KeyInfo/> element processing
- * (http://www.w3.org/TR/xmlSec-core/#sec-KeyInfo:
*
- * The KeyInfo Element
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
*
- * KeyInfo is an optional element that enables the recipient(s) to obtain
+ * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
+/**
+ * SECTION:keyinfo
+ * @Short_description: &lt;dsig:KeyInfo/&gt; node parser functions.
+ * @Stability: Stable
+ *
+ *
+ * [KeyInfo](https://www.w3.org/TR/xmldsig-core/#sec-KeyInfo) is an
+ * optional element that enables the recipient(s) to obtain
* the key needed to validate the signature. KeyInfo may contain keys,
* names, certificates and other public key management information, such as
* in-band key distribution or key agreement data.
*
- * Schema Definition:
+ * Schema Definition:
*
+ * |[<!-- language="XML" -->
* <element name="KeyInfo" type="ds:KeyInfoType"/>
* <complexType name="KeyInfoType" mixed="true">
* <choice maxOccurs="unbounded">
@@ -28,19 +37,17 @@
* </choice>
* <attribute name="Id" type="ID" use="optional"/>
* </complexType>
+ * ]|
*
* DTD:
*
+ * |[<!-- language="XML" -->
* <!ELEMENT KeyInfo (#PCDATA|KeyName|KeyValue|RetrievalMethod|
* X509Data|PGPData|SPKIData|MgmtData %KeyInfo.ANY;)* >
* <!ATTLIST KeyInfo Id ID #IMPLIED >
- *
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ * ]|
*/
+
#include "globals.h"
#include <stdlib.h>
@@ -111,22 +118,16 @@ xmlSecKeyInfoNodeRead(xmlNodePtr keyInfoNode, xmlSecKeyPtr key, xmlSecKeyInfoCtx
/* read data node */
ret = xmlSecKeyDataXmlRead(dataId, key, cur, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyDataXmlRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecKeyDataXmlRead",
+ xmlSecKeyDataKlassGetName(dataId),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD) != 0) {
/* there is a laxi schema validation but application may
* desire to disable unknown nodes*/
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
}
@@ -178,21 +179,15 @@ xmlSecKeyInfoNodeWrite(xmlNodePtr keyInfoNode, xmlSecKeyPtr key, xmlSecKeyInfoCt
if(dataId != xmlSecKeyDataIdUnknown) {
ret = xmlSecKeyDataXmlWrite(dataId, key, cur, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyDataXmlWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecKeyDataXmlWrite",
+ xmlSecKeyDataKlassGetName(dataId),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation but application can disable it*/
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
}
@@ -223,21 +218,13 @@ xmlSecKeyInfoCtxCreate(xmlSecKeysMngrPtr keysMngr) {
/* Allocate a new xmlSecKeyInfoCtx and fill the fields. */
keyInfoCtx = (xmlSecKeyInfoCtxPtr)xmlMalloc(sizeof(xmlSecKeyInfoCtx));
if(keyInfoCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)sizeof(xmlSecKeyInfoCtx));
+ xmlSecMallocError(sizeof(xmlSecKeyInfoCtx), NULL);
return(NULL);
}
ret = xmlSecKeyInfoCtxInitialize(keyInfoCtx, keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize", NULL);
xmlSecKeyInfoCtxDestroy(keyInfoCtx);
return(NULL);
}
@@ -280,22 +267,14 @@ xmlSecKeyInfoCtxInitialize(xmlSecKeyInfoCtxPtr keyInfoCtx, xmlSecKeysMngrPtr key
keyInfoCtx->base64LineSize = xmlSecBase64GetDefaultLineSize();
ret = xmlSecPtrListInitialize(&(keyInfoCtx->enabledKeyData), xmlSecKeyDataIdListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize", NULL);
return(-1);
}
keyInfoCtx->maxRetrievalMethodLevel = 1;
ret = xmlSecTransformCtxInitialize(&(keyInfoCtx->retrievalMethodCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxInitialize", NULL);
return(-1);
}
@@ -309,11 +288,7 @@ xmlSecKeyInfoCtxInitialize(xmlSecKeyInfoCtxPtr keyInfoCtx, xmlSecKeysMngrPtr key
ret = xmlSecKeyReqInitialize(&(keyInfoCtx->keyReq));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyReqInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqInitialize", NULL);
return(-1);
}
@@ -388,11 +363,7 @@ xmlSecKeyInfoCtxCreateEncCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
/* we have to use tmp variable to avoid a recursive loop */
tmp = xmlSecEncCtxCreate(keyInfoCtx->keysMngr);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxCreate", NULL);
return(-1);
}
tmp->mode = xmlEncCtxModeEncryptedKey;
@@ -402,11 +373,7 @@ xmlSecKeyInfoCtxCreateEncCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
case xmlSecKeyInfoModeRead:
ret = xmlSecKeyInfoCtxCopyUserPref(&(tmp->keyInfoReadCtx), keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCopyUserPref", NULL);
xmlSecEncCtxDestroy(tmp);
return(-1);
}
@@ -414,11 +381,7 @@ xmlSecKeyInfoCtxCreateEncCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
case xmlSecKeyInfoModeWrite:
ret = xmlSecKeyInfoCtxCopyUserPref(&(tmp->keyInfoWriteCtx), keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCopyUserPref", NULL);
xmlSecEncCtxDestroy(tmp);
return(-1);
}
@@ -428,11 +391,8 @@ xmlSecKeyInfoCtxCreateEncCtx(xmlSecKeyInfoCtxPtr keyInfoCtx) {
return(0);
#else /* XMLSEC_NO_XMLENC */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xml encryption",
- XMLSEC_ERRORS_R_DISABLED,
- XMLSEC_ERRORS_NO_MESSAGE);
+
+ xmlSecOtherError(XMLSEC_ERRORS_R_DISABLED, NULL, "xml encryption");
return(-1);
#endif /* XMLSEC_NO_XMLENC */
}
@@ -462,11 +422,7 @@ xmlSecKeyInfoCtxCopyUserPref(xmlSecKeyInfoCtxPtr dst, xmlSecKeyInfoCtxPtr src) {
ret = xmlSecPtrListCopy(&(dst->enabledKeyData), &(src->enabledKeyData));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "enabledKeyData");
+ xmlSecInternalError("xmlSecPtrListCopy(enabledKeyData)", NULL);
return(-1);
}
@@ -475,11 +431,7 @@ xmlSecKeyInfoCtxCopyUserPref(xmlSecKeyInfoCtxPtr dst, xmlSecKeyInfoCtxPtr src) {
ret = xmlSecTransformCtxCopyUserPref(&(dst->retrievalMethodCtx),
&(src->retrievalMethodCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "enabledKeyData");
+ xmlSecInternalError("xmlSecTransformCtxCopyUserPref(enabledKeyData)", NULL);
return(-1);
}
@@ -489,22 +441,14 @@ xmlSecKeyInfoCtxCopyUserPref(xmlSecKeyInfoCtxPtr dst, xmlSecKeyInfoCtxPtr src) {
if(src->encCtx != NULL) {
dst->encCtx = xmlSecEncCtxCreate(dst->keysMngr);
if(dst->encCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxCreate", NULL);
return(-1);
}
dst->encCtx->mode = xmlEncCtxModeEncryptedKey;
ret = xmlSecEncCtxCopyUserPref(dst->encCtx, src->encCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxCopyUserPref", NULL);
return(-1);
}
}
@@ -696,7 +640,6 @@ xmlSecKeyDataNameGetKlass(void) {
static int
xmlSecKeyDataNameXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
- const xmlChar* oldName;
xmlChar* newName;
int ret;
@@ -706,26 +649,10 @@ xmlSecKeyDataNameXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node,
xmlSecAssert2(keyInfoCtx != NULL, -1);
xmlSecAssert2(keyInfoCtx->mode == xmlSecKeyInfoModeRead, -1);
- oldName = xmlSecKeyGetName(key);
+ /* read key name */
newName = xmlNodeGetContent(node);
if(newName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- /* TODO: do we need to decode the name? */
-
- /* compare name values */
- if((oldName != NULL) && !xmlStrEqual(oldName, newName)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "key name is already specified",
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlFree(newName);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataKlassGetName(id), "empty");
return(-1);
}
@@ -746,32 +673,49 @@ xmlSecKeyDataNameXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node,
/* and copy what we've found */
ret = xmlSecKeyCopy(key, tmpKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCopy",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDestroy(tmpKey);
xmlFree(newName);
return(-1);
}
xmlSecKeyDestroy(tmpKey);
- }
- }
- /* finally set key name if it is not there */
- if(xmlSecKeyGetName(key) == NULL) {
- ret = xmlSecKeySetName(key, newName);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlFree(newName);
- return(-1);
+ /* and set the key name */
+ ret = xmlSecKeySetName(key, newName);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetName",
+ xmlSecKeyDataKlassGetName(id));
+ xmlFree(newName);
+ return(-1);
+ }
+ }
+ /* TODO: record the key names we tried */
+ } else {
+ const xmlChar* oldName;
+
+ /* if we already have a keyname, make sure that it matches or set it */
+ oldName = xmlSecKeyGetName(key);
+ if(oldName != NULL) {
+ if(!xmlStrEqual(oldName, newName)) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key name is already specified");
+ xmlFree(newName);
+ return(-1);
+ }
+ } else {
+ ret = xmlSecKeySetName(key, newName);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetName",
+ xmlSecKeyDataKlassGetName(id));
+ xmlFree(newName);
+ return(-1);
+ }
}
}
+
+ /* done */
xmlFree(newName);
return(0);
}
@@ -779,6 +723,7 @@ xmlSecKeyDataNameXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node,
static int
xmlSecKeyDataNameXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
const xmlChar* name;
+ int ret;
xmlSecAssert2(id == xmlSecKeyDataNameId, -1);
xmlSecAssert2(key != NULL, -1);
@@ -787,9 +732,21 @@ xmlSecKeyDataNameXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node,
xmlSecAssert2(keyInfoCtx->mode == xmlSecKeyInfoModeWrite, -1);
name = xmlSecKeyGetName(key);
- if(name != NULL) {
- xmlSecNodeEncodeAndSetContent(node, name);
+ if(name == NULL) {
+ return(8);
+ }
+
+ if(!xmlSecIsEmptyNode(node)) {
+ return(0);
}
+
+ ret = xmlSecNodeEncodeAndSetContent(node, name);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(-1);
+ }
+
+ /* done */
return(0);
}
@@ -896,32 +853,22 @@ xmlSecKeyDataValueXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node,
/* read data node */
ret = xmlSecKeyDataXmlRead(dataId, key, cur, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataXmlRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecKeyDataXmlRead",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation but application can disable it */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
return(-1);
}
/* <dsig:KeyValue/> might have only one node */
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
return(-1);
}
@@ -967,23 +914,19 @@ xmlSecKeyDataValueXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePtr node
/* create key node */
cur = xmlSecAddChild(node, nodeName, nodeNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
return(-1);
}
ret = xmlSecKeyDataXmlWrite(key->value->id, key, cur, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataXmlWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecKeyDataXmlWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
@@ -1090,13 +1033,11 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
/* check retrieval level */
if(keyInfoCtx->curRetrievalMethodLevel >= keyInfoCtx->maxRetrievalMethodLevel) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL,
- "cur=%d;max=%d",
- keyInfoCtx->curRetrievalMethodLevel,
- keyInfoCtx->maxRetrievalMethodLevel);
+ xmlSecOtherError3(XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL,
+ xmlSecKeyDataKlassGetName(id),
+ "cur=%d;max=%d",
+ keyInfoCtx->curRetrievalMethodLevel,
+ keyInfoCtx->maxRetrievalMethodLevel);
goto done;
}
++keyInfoCtx->curRetrievalMethodLevel;
@@ -1113,14 +1054,12 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
}
}
- /* laxi schema validation but aplication can disable it */
+ /* laxi schema validation but application can disable it */
if(dataId == xmlSecKeyDataIdUnknown) {
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecAttrType),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "value=%s", xmlSecErrorsSafeString(retrType));
+ xmlSecInvalidNodeAttributeError(node, xmlSecAttrType,
+ xmlSecKeyDataKlassGetName(id),
+ "retrieval type is unknown");
} else {
res = 0;
}
@@ -1134,12 +1073,9 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
uri = xmlGetProp(node, xmlSecAttrURI);
ret = xmlSecTransformCtxSetUri(&(keyInfoCtx->retrievalMethodCtx), uri, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecTransformCtxSetUri",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecTransformCtxSetUri",
+ xmlSecKeyDataKlassGetName(id),
+ "uri=%s", xmlSecErrorsSafeString(uri));
goto done;
}
@@ -1149,23 +1085,17 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
ret = xmlSecTransformCtxNodesListRead(&(keyInfoCtx->retrievalMethodCtx),
cur, xmlSecTransformUsageDSigTransform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecTransformCtxNodesListRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecTransformCtxNodesListRead",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1175,11 +1105,8 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
(keyInfoCtx->retrievalMethodCtx.result == NULL) ||
(xmlSecBufferGetData(keyInfoCtx->retrievalMethodCtx.result) == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecTransformCtxExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxExecute",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1193,11 +1120,8 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
xmlSecBufferGetSize(keyInfoCtx->retrievalMethodCtx.result),
keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataRetrievalMethodReadXmlResult",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataRetrievalMethodReadXmlResult",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
} else {
@@ -1206,11 +1130,8 @@ xmlSecKeyDataRetrievalMethodXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNod
xmlSecBufferGetSize(keyInfoCtx->retrievalMethodCtx.result),
keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataBinRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataBinRead",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
}
@@ -1258,21 +1179,13 @@ xmlSecKeyDataRetrievalMethodReadXmlResult(xmlSecKeyDataId typeId, xmlSecKeyPtr k
doc = xmlRecoverMemory((const char*)buffer, bufferSize);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)),
- "xmlRecoverMemory",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlRecoverMemory", xmlSecKeyDataKlassGetName(typeId));
return(-1);
}
cur = xmlDocGetRootElement(doc);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)),
- "xmlDocGetRootElement",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlDocGetRootElement", xmlSecKeyDataKlassGetName(typeId));
xmlFreeDoc(doc);
return(-1);
}
@@ -1293,22 +1206,16 @@ xmlSecKeyDataRetrievalMethodReadXmlResult(xmlSecKeyDataId typeId, xmlSecKeyPtr k
/* laxi schema validation but application can disable it */
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(typeId));
return(-1);
}
return(0);
} else if((typeId != xmlSecKeyDataIdUnknown) && (typeId != dataId) &&
((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)),
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH,
+ xmlSecKeyDataKlassGetName(dataId),
+ "typeId=%s", xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)));
xmlFreeDoc(doc);
return(-1);
}
@@ -1316,12 +1223,10 @@ xmlSecKeyDataRetrievalMethodReadXmlResult(xmlSecKeyDataId typeId, xmlSecKeyPtr k
/* read data node */
ret = xmlSecKeyDataXmlRead(dataId, key, cur, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(typeId)),
- "xmlSecKeyDataXmlRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecKeyDataXmlRead",
+ xmlSecKeyDataKlassGetName(typeId),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
xmlFreeDoc(doc);
return(-1);
}
@@ -1420,13 +1325,11 @@ xmlSecKeyDataEncryptedKeyXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePt
/* check the enc level */
if(keyInfoCtx->curEncryptedKeyLevel >= keyInfoCtx->maxEncryptedKeyLevel) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL,
- "cur=%d;max=%d",
- keyInfoCtx->curEncryptedKeyLevel,
- keyInfoCtx->maxEncryptedKeyLevel);
+ xmlSecOtherError3(XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL,
+ xmlSecKeyDataKlassGetName(id),
+ "cur=%d;max=%d",
+ (int)keyInfoCtx->curEncryptedKeyLevel,
+ (int)keyInfoCtx->maxEncryptedKeyLevel);
return(-1);
}
++keyInfoCtx->curEncryptedKeyLevel;
@@ -1437,11 +1340,8 @@ xmlSecKeyDataEncryptedKeyXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePt
} else {
ret = xmlSecKeyInfoCtxCreateEncCtx(keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyInfoCtxCreateEncCtx",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCreateEncCtx",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
}
@@ -1450,15 +1350,12 @@ xmlSecKeyDataEncryptedKeyXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePt
result = xmlSecEncCtxDecryptToBuffer(keyInfoCtx->encCtx, node);
if((result == NULL) || (xmlSecBufferGetData(result) == NULL)) {
/* We might have multiple EncryptedKey elements, encrypted
- * for different receipints but application can enforce
+ * for different recipients but application can enforce
* correct enc key.
*/
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecEncCtxDecryptToBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxDecryptToBuffer",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
return(0);
@@ -1469,11 +1366,8 @@ xmlSecKeyDataEncryptedKeyXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodePt
xmlSecBufferGetSize(result),
keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataBinRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataBinRead",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
--keyInfoCtx->curEncryptedKeyLevel;
@@ -1499,21 +1393,15 @@ xmlSecKeyDataEncryptedKeyXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodeP
/* dump key to a binary buffer */
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx2, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecKeyInfoCtxCopyUserPref(&keyInfoCtx2, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyInfoCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCopyUserPref",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx2);
goto done;
}
@@ -1521,11 +1409,8 @@ xmlSecKeyDataEncryptedKeyXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodeP
keyInfoCtx2.keyReq.keyType = xmlSecKeyDataTypeAny;
ret = xmlSecKeyDataBinWrite(key->value->id, key, &keyBuf, &keySize, &keyInfoCtx2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataBinWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataBinWrite",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx2);
goto done;
}
@@ -1537,11 +1422,8 @@ xmlSecKeyDataEncryptedKeyXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodeP
} else {
ret = xmlSecKeyInfoCtxCreateEncCtx(keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyInfoCtxCreateEncCtx",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCreateEncCtx",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
}
@@ -1549,11 +1431,8 @@ xmlSecKeyDataEncryptedKeyXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key, xmlNodeP
ret = xmlSecEncCtxBinaryEncrypt(keyInfoCtx->encCtx, node, keyBuf, keySize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecEncCtxBinaryEncrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxBinaryEncrypt",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
diff --git a/src/keys.c b/src/keys.c
index 456565b0..d2040c18 100644
--- a/src/keys.c
+++ b/src/keys.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Keys.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:keys
+ * @Short_description: Crypto key object functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -24,6 +30,7 @@
#include <xmlsec/keyinfo.h>
#include <xmlsec/errors.h>
+
/**************************************************************************
*
* xmlSecKeyUseWith
@@ -107,34 +114,21 @@ xmlSecKeyUseWithCreate(const xmlChar* application, const xmlChar* identifier) {
/* Allocate a new xmlSecKeyUseWith and fill the fields. */
keyUseWith = (xmlSecKeyUseWithPtr)xmlMalloc(sizeof(xmlSecKeyUseWith));
if(keyUseWith == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecKeyUseWith)=%d",
- (int)sizeof(xmlSecKeyUseWith));
+ xmlSecMallocError(sizeof(xmlSecKeyUseWith), NULL);
return(NULL);
}
memset(keyUseWith, 0, sizeof(xmlSecKeyUseWith));
ret = xmlSecKeyUseWithInitialize(keyUseWith);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyUseWithInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyUseWithInitialize", NULL);
xmlSecKeyUseWithDestroy(keyUseWith);
return(NULL);
}
ret = xmlSecKeyUseWithSet(keyUseWith, application, identifier);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyUseWithSet",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyUseWithSet", NULL);
xmlSecKeyUseWithDestroy(keyUseWith);
return(NULL);
}
@@ -161,21 +155,13 @@ xmlSecKeyUseWithDuplicate(xmlSecKeyUseWithPtr keyUseWith) {
newKeyUseWith = xmlSecKeyUseWithCreate(NULL, NULL);
if(newKeyUseWith == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyUseWithCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyUseWithCreate", NULL);
return(NULL);
}
ret = xmlSecKeyUseWithCopy(newKeyUseWith, keyUseWith);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyUseWithCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyUseWithCopy", NULL);
xmlSecKeyUseWithDestroy(keyUseWith);
return(NULL);
}
@@ -224,24 +210,14 @@ xmlSecKeyUseWithSet(xmlSecKeyUseWithPtr keyUseWith, const xmlChar* application,
if(application != NULL) {
keyUseWith->application = xmlStrdup(application);
if(keyUseWith->application == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "xmlStrlen(application)=%d",
- xmlStrlen(application));
+ xmlSecStrdupError(application, NULL);
return(-1);
}
}
if(identifier != NULL) {
keyUseWith->identifier = xmlStrdup(identifier);
if(keyUseWith->identifier == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "xmlStrlen(identifier)=%d",
- xmlStrlen(identifier));
+ xmlSecStrdupError(identifier, NULL);
return(-1);
}
}
@@ -341,11 +317,7 @@ xmlSecKeyReqInitialize(xmlSecKeyReqPtr keyReq) {
keyReq->keyUsage = xmlSecKeyUsageAny; /* by default you can do whatever you want with the key */
ret = xmlSecPtrListInitialize(&keyReq->keyUseWithList, xmlSecKeyUseWithPtrListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize", NULL);
return(-1);
}
@@ -408,11 +380,7 @@ xmlSecKeyReqCopy(xmlSecKeyReqPtr dst, xmlSecKeyReqPtr src) {
ret = xmlSecPtrListCopy(&dst->keyUseWithList, &src->keyUseWithList);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCopy", NULL);
return(-1);
}
@@ -543,12 +511,7 @@ xmlSecKeyCreate(void) {
/* Allocate a new xmlSecKey and fill the fields. */
key = (xmlSecKeyPtr)xmlMalloc(sizeof(xmlSecKey));
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecKey)=%d",
- (int)sizeof(xmlSecKey));
+ xmlSecMallocError(sizeof(xmlSecKey), NULL);
return(NULL);
}
memset(key, 0, sizeof(xmlSecKey));
@@ -614,11 +577,7 @@ xmlSecKeyCopy(xmlSecKeyPtr keyDst, xmlSecKeyPtr keySrc) {
if(keySrc->name != NULL) {
keyDst->name = xmlStrdup(keySrc->name);
if(keyDst->name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "len=%d", xmlStrlen(keySrc->name));
+ xmlSecStrdupError(keySrc->name, NULL);
return(-1);
}
}
@@ -626,11 +585,7 @@ xmlSecKeyCopy(xmlSecKeyPtr keyDst, xmlSecKeyPtr keySrc) {
if(keySrc->value != NULL) {
keyDst->value = xmlSecKeyDataDuplicate(keySrc->value);
if(keyDst->value == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataDuplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataDuplicate", NULL);
return(-1);
}
}
@@ -638,11 +593,7 @@ xmlSecKeyCopy(xmlSecKeyPtr keyDst, xmlSecKeyPtr keySrc) {
if(keySrc->dataList != NULL) {
keyDst->dataList = xmlSecPtrListDuplicate(keySrc->dataList);
if(keyDst->dataList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListDuplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListDuplicate", NULL);
return(-1);
}
}
@@ -671,21 +622,13 @@ xmlSecKeyDuplicate(xmlSecKeyPtr key) {
newKey = xmlSecKeyCreate();
if(newKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
return(NULL);
}
ret = xmlSecKeyCopy(newKey, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCopy", NULL);
xmlSecKeyDestroy(newKey);
return(NULL);
}
@@ -771,11 +714,7 @@ xmlSecKeySetName(xmlSecKeyPtr key, const xmlChar* name) {
if(name != NULL) {
key->name = xmlStrdup(name);
if(key->name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "len=%d", xmlStrlen(name));
+ xmlSecStrdupError(name, NULL);
return(-1);
}
}
@@ -878,23 +817,17 @@ xmlSecKeyEnsureData(xmlSecKeyPtr key, xmlSecKeyDataId dataId) {
data = xmlSecKeyDataCreate(dataId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataId=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)));
+ xmlSecInternalError2("xmlSecKeyDataCreate", NULL,
+ "dataId=%s",
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)));
return(NULL);
}
ret = xmlSecKeyAdoptData(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataId=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)));
+ xmlSecInternalError2("xmlSecKeyAdoptData", NULL,
+ "dataId=%s",
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)));
xmlSecKeyDataDestroy(data);
return(NULL);
}
@@ -932,11 +865,7 @@ xmlSecKeyAdoptData(xmlSecKeyPtr key, xmlSecKeyDataPtr data) {
if(key->dataList == NULL) {
key->dataList = xmlSecPtrListCreate(xmlSecKeyDataListId);
if(key->dataList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCreate", NULL);
return(-1);
}
}
@@ -1067,43 +996,32 @@ xmlSecKeyGenerate(xmlSecKeyDataId dataId, xmlSecSize sizeBits, xmlSecKeyDataType
data = xmlSecKeyDataCreate(dataId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(dataId));
return(NULL);
}
ret = xmlSecKeyDataGenerate(data, sizeBits, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyDataGenerate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d;type=%d", sizeBits, type);
+ xmlSecInternalError3("xmlSecKeyDataGenerate",
+ xmlSecKeyDataKlassGetName(dataId),
+ "size=%d;type=%d", sizeBits, type);
xmlSecKeyDataDestroy(data);
return(NULL);
}
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecKeyDataDestroy(data);
return(NULL);
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecKeyDataDestroy(data);
xmlSecKeyDestroy(key);
return(NULL);
@@ -1130,11 +1048,7 @@ xmlSecKeyGenerateByName(const xmlChar* name, xmlSecSize sizeBits, xmlSecKeyDataT
dataId = xmlSecKeyDataIdListFindByName(xmlSecKeyDataIdsGet(), name, xmlSecKeyDataUsageAny);
if(dataId == xmlSecKeyDataIdUnknown) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(name),
- XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND, name, NULL);
return(NULL);
}
@@ -1162,21 +1076,15 @@ xmlSecKeyReadBuffer(xmlSecKeyDataId dataId, xmlSecBuffer* buffer) {
/* create key data */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataKlassGetName(dataId));
return(NULL);
}
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecKeyDestroy(key);
return(NULL);
}
@@ -1187,11 +1095,8 @@ xmlSecKeyReadBuffer(xmlSecKeyDataId dataId, xmlSecBuffer* buffer) {
xmlSecBufferGetSize(buffer),
&keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyDataBinRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataBinRead",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
xmlSecKeyDestroy(key);
return(NULL);
@@ -1222,34 +1127,27 @@ xmlSecKeyReadBinaryFile(xmlSecKeyDataId dataId, const char* filename) {
/* read file to buffer */
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(dataId));
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile",
+ xmlSecKeyDataKlassGetName(dataId),
+ "filename=%s",
+ xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
key = xmlSecKeyReadBuffer(dataId, &buffer);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyReadBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecKeyReadBuffer",
+ xmlSecKeyDataKlassGetName(dataId),
+ "filename=%s",
+ xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -1281,31 +1179,22 @@ xmlSecKeyReadMemory(xmlSecKeyDataId dataId, const xmlSecByte* data, xmlSecSize d
/* read file to buffer */
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(dataId));
return(NULL);
}
if (xmlSecBufferAppend(&buffer, data, dataSize) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferAppend",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
key = xmlSecKeyReadBuffer(dataId, &buffer);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(dataId)),
- "xmlSecKeyReadBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReadBuffer",
+ xmlSecKeyDataKlassGetName(dataId));
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -1335,23 +1224,17 @@ xmlSecKeysMngrGetKey(xmlNodePtr keyInfoNode, xmlSecKeyInfoCtxPtr keyInfoCtx) {
/* first try to read data from <dsig:KeyInfo/> node */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
return(NULL);
}
if(keyInfoNode != NULL) {
ret = xmlSecKeyInfoNodeRead(keyInfoNode, key, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(keyInfoNode)));
+ xmlSecInternalError2("xmlSecKeyInfoNodeRead",
+ NULL,
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeGetName(keyInfoNode)));
xmlSecKeyDestroy(key);
return(NULL);
}
@@ -1367,11 +1250,7 @@ xmlSecKeysMngrGetKey(xmlNodePtr keyInfoNode, xmlSecKeyInfoCtxPtr keyInfoCtx) {
if(keyInfoCtx->keysMngr != NULL) {
key = xmlSecKeysMngrFindKey(keyInfoCtx->keysMngr, NULL, keyInfoCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrFindKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrFindKey", NULL);
return(NULL);
}
if(xmlSecKeyGetValue(key) != NULL) {
@@ -1380,11 +1259,7 @@ xmlSecKeysMngrGetKey(xmlNodePtr keyInfoNode, xmlSecKeyInfoCtxPtr keyInfoCtx) {
xmlSecKeyDestroy(key);
}
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_KEY_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL, NULL);
return(NULL);
}
diff --git a/src/keysdata.c b/src/keysdata.c
index 30c800df..925521fc 100644
--- a/src/keysdata.c
+++ b/src/keysdata.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Key data.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:keysdata
+ * @Short_description: Crypto key data object functions.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
@@ -25,13 +30,13 @@
#include <xmlsec/keyinfo.h>
#include <xmlsec/errors.h>
-
/**************************************************************************
*
* Global xmlSecKeyDataIds list functions
*
*************************************************************************/
static xmlSecPtrList xmlSecAllKeyDataIds;
+static int xmlSecImportPersistKey = 0;
/**
* xmlSecKeyDataIdsGet:
@@ -59,21 +64,13 @@ xmlSecKeyDataIdsInit(void) {
ret = xmlSecPtrListInitialize(xmlSecKeyDataIdsGet(), xmlSecKeyDataIdListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListPtrInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataIdListId");
+ xmlSecInternalError("xmlSecPtrListInitialize(xmlSecKeyDataIdListId)", NULL);
return(-1);
}
ret = xmlSecKeyDataIdsRegisterDefault();
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsRegisterDefault",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsRegisterDefault", NULL);
return(-1);
}
@@ -107,12 +104,8 @@ xmlSecKeyDataIdsRegister(xmlSecKeyDataId id) {
ret = xmlSecPtrListAdd(xmlSecKeyDataIdsGet(), (xmlSecPtr)id);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataId=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)));
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
@@ -131,39 +124,23 @@ xmlSecKeyDataIdsRegister(xmlSecKeyDataId id) {
int
xmlSecKeyDataIdsRegisterDefault(void) {
if(xmlSecKeyDataIdsRegister(xmlSecKeyDataNameId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataNameId");
+ xmlSecInternalError("xmlSecKeyDataIdsRegister(xmlSecKeyDataNameId)", NULL);
return(-1);
}
if(xmlSecKeyDataIdsRegister(xmlSecKeyDataValueId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataValueId");
+ xmlSecInternalError("xmlSecKeyDataIdsRegister(xmlSecKeyDataValueId)", NULL);
return(-1);
}
if(xmlSecKeyDataIdsRegister(xmlSecKeyDataRetrievalMethodId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataRetrievalMethodId");
+ xmlSecInternalError("xmlSecKeyDataIdsRegister(xmlSecKeyDataRetrievalMethodId", NULL);
return(-1);
}
#ifndef XMLSEC_NO_XMLENC
if(xmlSecKeyDataIdsRegister(xmlSecKeyDataEncryptedKeyId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataEncryptedKeyId");
+ xmlSecInternalError("xmlSecKeyDataIdsRegister(xmlSecKeyDataEncryptedKeyId)", NULL);
return(-1);
}
#endif /* XMLSEC_NO_XMLENC */
@@ -200,11 +177,8 @@ xmlSecKeyDataCreate(xmlSecKeyDataId id) {
/* Allocate a new xmlSecKeyData and fill the fields. */
data = (xmlSecKeyDataPtr)xmlMalloc(id->objSize);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", id->objSize);
+ xmlSecMallocError(id->objSize,
+ xmlSecKeyDataKlassGetName(id));
return(NULL);
}
memset(data, 0, id->objSize);
@@ -213,11 +187,8 @@ xmlSecKeyDataCreate(xmlSecKeyDataId id) {
if(id->initialize != NULL) {
ret = (id->initialize)(data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "id->initialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("id->initialize",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
return(NULL);
}
@@ -246,21 +217,15 @@ xmlSecKeyDataDuplicate(xmlSecKeyDataPtr data) {
newData = xmlSecKeyDataCreate(data->id);
if(newData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataGetName(data));
return(NULL);
}
ret = (data->id->duplicate)(newData, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "id->duplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("id->duplicate",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(newData);
return(NULL);
}
@@ -398,11 +363,9 @@ xmlSecKeyDataGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
/* write data */
ret = data->id->generate(data, sizeBits, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "id->generate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", sizeBits);
+ xmlSecInternalError2("id->generate",
+ xmlSecKeyDataGetName(data),
+ "size=%d", sizeBits);
return(-1);
}
return(0);
@@ -517,11 +480,8 @@ xmlSecKeyDataBinaryValueInitialize(xmlSecKeyDataPtr data) {
ret = xmlSecBufferInitialize(buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -555,11 +515,8 @@ xmlSecKeyDataBinaryValueDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecBufferGetData(buffer),
xmlSecBufferGetSize(buffer));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecKeyDataBinaryValueSetBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataBinaryValueSetBuffer",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
@@ -612,22 +569,15 @@ xmlSecKeyDataBinaryValueXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
str = xmlNodeGetContent(node);
if(str == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataKlassGetName(id), "empty");
return(-1);
}
/* usual trick: decode into the same buffer */
ret = xmlSecBase64Decode(str, (xmlSecByte*)str, xmlStrlen(str));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode",
+ xmlSecKeyDataKlassGetName(id));
xmlFree(str);
return(-1);
}
@@ -639,32 +589,28 @@ xmlSecKeyDataBinaryValueXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecBufferPtr buffer;
if(!xmlSecKeyDataCheckId(data, id)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "id=%s",
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)));
xmlFree(str);
return(-1);
}
buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
- if((buffer != NULL) && ((xmlSecSize)xmlSecBufferGetSize(buffer) != len)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- "cur-data-size=%d;new-data-size=%d",
- xmlSecBufferGetSize(buffer), len);
+ if((buffer != NULL) && (xmlSecBufferGetSize(buffer) != len)) {
+ xmlSecOtherError3(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "cur-data-size=%lu;new-data-size=%lu",
+ (unsigned long)xmlSecBufferGetSize(buffer),
+ (unsigned long)len);
xmlFree(str);
return(-1);
}
if((buffer != NULL) && (len > 0) && (memcmp(xmlSecBufferGetData(buffer), str, len) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- "key already has a different value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "key already has a different value");
xmlFree(str);
return(-1);
}
@@ -680,22 +626,17 @@ xmlSecKeyDataBinaryValueXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
xmlFree(str);
return(-1);
}
ret = xmlSecKeyDataBinaryValueSetBuffer(data, (xmlSecByte*)str, len);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataBinaryValueSetBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", len);
+ xmlSecInternalError2("xmlSecKeyDataBinaryValueSetBuffer",
+ xmlSecKeyDataKlassGetName(id),
+ "size=%d", len);
xmlSecKeyDataDestroy(data);
xmlFree(str);
return(-1);
@@ -703,22 +644,16 @@ xmlSecKeyDataBinaryValueXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlFree(str);
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), data) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
return(0);
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
return(-1);
}
@@ -765,11 +700,8 @@ xmlSecKeyDataBinaryValueXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecBufferGetSize(buffer),
keyInfoCtx->base64LineSize);
if(str == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
xmlNodeSetContent(node, str);
@@ -808,30 +740,26 @@ xmlSecKeyDataBinaryValueBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecBufferPtr buffer;
if(!xmlSecKeyDataCheckId(data, id)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "id=%s",
+ xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)));
return(-1);
}
buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
- if((buffer != NULL) && ((xmlSecSize)xmlSecBufferGetSize(buffer) != bufSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- "cur-data-size=%d;new-data-size=%d",
- xmlSecBufferGetSize(buffer), bufSize);
+ if((buffer != NULL) && (xmlSecBufferGetSize(buffer) != bufSize)) {
+ xmlSecOtherError3(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "cur-data-size=%lu;new-data-size=%lu",
+ (unsigned long)xmlSecBufferGetSize(buffer),
+ (unsigned long)bufSize);
return(-1);
}
if((buffer != NULL) && (bufSize > 0) && (memcmp(xmlSecBufferGetData(buffer), buf, bufSize) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
- "key already has a different value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST,
+ xmlSecKeyDataGetName(data),
+ "key already has a different value");
return(-1);
}
if(buffer != NULL) {
@@ -844,42 +772,31 @@ xmlSecKeyDataBinaryValueBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecKeyDataBinaryValueSetBuffer(data, buf, bufSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataBinaryValueSetBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", bufSize);
+ xmlSecInternalError2("xmlSecKeyDataBinaryValueSetBuffer",
+ xmlSecKeyDataKlassGetName(id),
+ "size=%d", bufSize);
xmlSecKeyDataDestroy(data);
return(-1);
}
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), data) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
return(0);
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
return(-1);
}
@@ -926,11 +843,8 @@ xmlSecKeyDataBinaryValueBinWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
(*bufSize) = xmlSecBufferGetSize(buffer);
(*buf) = (xmlSecByte*) xmlMalloc((*bufSize));
if((*buf) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError((*bufSize),
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
memcpy((*buf), xmlSecBufferGetData(buffer), (*bufSize));
@@ -1314,11 +1228,8 @@ xmlSecKeyDataStoreCreate(xmlSecKeyDataStoreId id) {
/* Allocate a new xmlSecKeyDataStore and fill the fields. */
store = (xmlSecKeyDataStorePtr)xmlMalloc(id->objSize);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", id->objSize);
+ xmlSecMallocError(id->objSize,
+ xmlSecKeyDataStoreKlassGetName(id));
return(NULL);
}
memset(store, 0, id->objSize);
@@ -1327,11 +1238,8 @@ xmlSecKeyDataStoreCreate(xmlSecKeyDataStoreId id) {
if(id->initialize != NULL) {
ret = (id->initialize)(store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreKlassGetName(id)),
- "id->initialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("id->initialize",
+ xmlSecKeyDataStoreKlassGetName(id));
xmlSecKeyDataStoreDestroy(store);
return(NULL);
}
@@ -1384,4 +1292,11 @@ xmlSecKeyDataStorePtrListGetKlass(void) {
return(&xmlSecKeyDataStorePtrListKlass);
}
+void xmlSecImportSetPersistKey(void) {
+ xmlSecImportPersistKey = 1;
+}
+
+int xmlSecImportGetPersistKey(void) {
+ return xmlSecImportPersistKey;
+}
diff --git a/src/keysmngr.c b/src/keysmngr.c
index 5315203a..61dc9c7b 100644
--- a/src/keysmngr.c
+++ b/src/keysmngr.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Keys Manager.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:keysmngr
+ * @Short_description: Keys manager object functions.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
#include <stdlib.h>
@@ -25,6 +30,8 @@
#include <xmlsec/transforms.h>
#include <xmlsec/keysmngr.h>
#include <xmlsec/errors.h>
+#include <xmlsec/private.h>
+
/****************************************************************************
*
@@ -48,23 +55,14 @@ xmlSecKeysMngrCreate(void) {
/* Allocate a new xmlSecKeysMngr and fill the fields. */
mngr = (xmlSecKeysMngrPtr)xmlMalloc(sizeof(xmlSecKeysMngr));
if(mngr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecKeysMngr)=%d",
- (int)sizeof(xmlSecKeysMngr));
+ xmlSecMallocError(sizeof(xmlSecKeysMngr), NULL);
return(NULL);
}
memset(mngr, 0, sizeof(xmlSecKeysMngr));
ret = xmlSecPtrListInitialize(&(mngr->storesList), xmlSecKeyDataStorePtrListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyDataStorePtrListId");
+ xmlSecInternalError("xmlSecPtrListInitialize(xmlSecKeyDataStorePtrListId)", NULL);
return(NULL);
}
@@ -241,11 +239,8 @@ xmlSecKeyStoreCreate(xmlSecKeyStoreId id) {
/* Allocate a new xmlSecKeyStore and fill the fields. */
store = (xmlSecKeyStorePtr)xmlMalloc(id->objSize);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", id->objSize);
+ xmlSecMallocError(id->objSize,
+ xmlSecKeyStoreKlassGetName(id));
return(NULL);
}
memset(store, 0, id->objSize);
@@ -254,11 +249,8 @@ xmlSecKeyStoreCreate(xmlSecKeyStoreId id) {
if(id->initialize != NULL) {
ret = (id->initialize)(store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreKlassGetName(id)),
- "id->initialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("id->initialize",
+ xmlSecKeyStoreKlassGetName(id));
xmlSecKeyStoreDestroy(store);
return(NULL);
}
@@ -376,11 +368,8 @@ xmlSecSimpleKeysStoreAdoptKey(xmlSecKeyStorePtr store, xmlSecKeyPtr key) {
ret = xmlSecPtrListAdd(list, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecKeyStoreGetName(store));
return(-1);
}
@@ -399,7 +388,7 @@ xmlSecSimpleKeysStoreAdoptKey(xmlSecKeyStorePtr store, xmlSecKeyPtr key) {
*/
int
xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
- xmlSecKeysMngrPtr keysMngr) {
+ xmlSecKeysMngrPtr keysMngr ATTRIBUTE_UNUSED) {
xmlDocPtr doc;
xmlNodePtr root;
xmlNodePtr cur;
@@ -409,25 +398,19 @@ xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecSimpleKeysStoreId), -1);
xmlSecAssert2(uri != NULL, -1);
+ UNREFERENCED_PARAMETER(keysMngr);
doc = xmlParseFile(uri);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlParseFile",
- XMLSEC_ERRORS_R_XML_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecXmlError2("xmlParseFile", xmlSecKeyStoreGetName(store),
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
root = xmlDocGetRootElement(doc);
if(!xmlSecCheckNodeName(root, BAD_CAST "Keys", xmlSecNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(root)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=<xmlsec:Keys>");
+ xmlSecInvalidNodeError(root, BAD_CAST "Keys",
+ xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -436,30 +419,23 @@ xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeKeyInfo, xmlSecDSigNs)) {
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
}
keyInfoCtx.mode = xmlSecKeyInfoModeRead;
- keyInfoCtx.keysMngr = keysMngr;
+ keyInfoCtx.keysMngr = NULL;
keyInfoCtx.flags = XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND |
XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
keyInfoCtx.keyReq.keyId = xmlSecKeyDataIdUnknown;
@@ -468,11 +444,8 @@ xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
ret = xmlSecKeyInfoNodeRead(cur, key, &keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeRead",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
@@ -483,11 +456,8 @@ xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
if(xmlSecKeyIsValid(key)) {
ret = xmlSecSimpleKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecSimpleKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSimpleKeysStoreAdoptKey",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
@@ -500,11 +470,7 @@ xmlSecSimpleKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -547,11 +513,8 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
/* create doc */
doc = xmlSecCreateTree(BAD_CAST "Keys", xmlSecNs);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecCreateTree",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCreateTree",
+ xmlSecKeyStoreGetName(store));
return(-1);
}
@@ -566,12 +529,10 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
cur = xmlSecAddChild(xmlDocGetRootElement(doc), xmlSecNodeKeyInfo, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyStoreGetName(store),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
xmlFreeDoc(doc);
return(-1);
}
@@ -579,12 +540,10 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
/* special data key name */
if(xmlSecKeyGetName(key) != NULL) {
if(xmlSecAddChild(cur, xmlSecNodeKeyName, xmlSecDSigNs) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyName));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyStoreGetName(store),
+ "node=%s",
+ xmlSecErrorsSafeString(xmlSecNodeKeyName));
xmlFreeDoc(doc);
return(-1);
}
@@ -605,12 +564,9 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
}
if(xmlSecAddChild(cur, dataId->dataNodeName, dataId->dataNodeNs) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(dataId->dataNodeName));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyStoreGetName(store),
+ "node=%s", xmlSecErrorsSafeString(dataId->dataNodeName));
xmlFreeDoc(doc);
return(-1);
}
@@ -618,11 +574,8 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -635,11 +588,8 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
/* finally write key in the node */
ret = xmlSecKeyInfoNodeWrite(cur, key, &keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeWrite",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
xmlFreeDoc(doc);
return(-1);
@@ -650,12 +600,8 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
/* now write result */
ret = xmlSaveFormatFile(filename, doc, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSaveFormatFile",
- XMLSEC_ERRORS_R_XML_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecXmlError2("xmlSaveFormatFile", xmlSecKeyStoreGetName(store),
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlFreeDoc(doc);
return(-1);
}
@@ -697,11 +643,8 @@ xmlSecSimpleKeysStoreInitialize(xmlSecKeyStorePtr store) {
ret = xmlSecPtrListInitialize(list, xmlSecKeyPtrListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecKeyPtrListId");
+ xmlSecInternalError("xmlSecPtrListInitialize(xmlSecKeyPtrListId)",
+ xmlSecKeyStoreGetName(store));
return(-1);
}
diff --git a/src/kw_aes_des.c b/src/kw_aes_des.c
index 7eb74b05..b51c006e 100644
--- a/src/kw_aes_des.c
+++ b/src/kw_aes_des.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Implementation of AES/DES Key Transport algorithm
- *
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes_des
+ * @Short_description: AES/DES Key Transport implementation.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -16,6 +21,7 @@
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#include <xmlsec/buffer.h>
#include <xmlsec/errors.h>
#include "kw_aes_des.h"
@@ -93,11 +99,7 @@ xmlSecKWDes3Encode(xmlSecKWDes3Id kwDes3Id, void *context,
/* step 2: calculate sha1 and CMS */
ret = kwDes3Id->sha1(context, in, inSize, sha1, sizeof(sha1));
if((ret < 0) || (ret != sizeof(sha1))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->sha1",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->sha1", NULL);
return(-1);
}
@@ -108,11 +110,7 @@ xmlSecKWDes3Encode(xmlSecKWDes3Id kwDes3Id, void *context,
/* step 4: generate random iv */
ret = kwDes3Id->generateRandom(context, iv, sizeof(iv));
if((ret < 0) || (ret != sizeof(iv))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->generateRandom",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->generateRandom", NULL);
return(-1);
}
@@ -122,11 +120,7 @@ xmlSecKWDes3Encode(xmlSecKWDes3Id kwDes3Id, void *context,
out, inSize + XMLSEC_KW_DES3_BLOCK_LENGTH,
out, outSize);
if((ret < 0) || ((xmlSecSize)ret != inSize + XMLSEC_KW_DES3_BLOCK_LENGTH)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->encrypt", NULL);
return(-1);
}
@@ -138,11 +132,7 @@ xmlSecKWDes3Encode(xmlSecKWDes3Id kwDes3Id, void *context,
/* step 7: reverse octets order, result is TEMP3 */
ret = xmlSecKWDes3BufferReverse(out, s);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKWDes3BufferReverse",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("xmlSecKWDes3BufferReverse", NULL);
return(-1);
}
@@ -152,11 +142,7 @@ xmlSecKWDes3Encode(xmlSecKWDes3Id kwDes3Id, void *context,
out, s,
out, outSize);
if((ret < 0) || ((xmlSecSize)ret != s)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->encrypt", NULL);
return(-1);
}
@@ -170,6 +156,7 @@ xmlSecKWDes3Decode(xmlSecKWDes3Id kwDes3Id, void *context,
xmlSecByte *out, xmlSecSize outSize)
{
xmlSecByte sha1[XMLSEC_KW_DES3_SHA_DIGEST_LENGTH];
+ xmlSecBufferPtr tmp;
xmlSecSize s;
int ret;
@@ -182,42 +169,39 @@ xmlSecKWDes3Decode(xmlSecKWDes3Id kwDes3Id, void *context,
/* step 2: first decryption with static IV, result is TEMP3 */
+ tmp = xmlSecBufferCreate(inSize);
+ if(tmp == NULL) {
+ xmlSecInternalError2("xmlSecBufferCreate", NULL, "inSize=%d", (int)inSize);
+ return(-1);
+ }
+
ret = kwDes3Id->decrypt(context,
xmlSecKWDes3Iv, sizeof(xmlSecKWDes3Iv),
in, inSize,
- out, outSize);
+ xmlSecBufferGetData(tmp), xmlSecBufferGetMaxSize(tmp));
if((ret < 0) || (ret < XMLSEC_KW_DES3_IV_LENGTH)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->decrypt", NULL);
+ xmlSecBufferDestroy(tmp);
return(-1);
}
s = ret;
/* step 3: reverse octets order in TEMP3, result is TEMP2 */
- ret = xmlSecKWDes3BufferReverse(out, s);
+ ret = xmlSecKWDes3BufferReverse(xmlSecBufferGetData(tmp), s);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKWDes3BufferReverse",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("xmlSecKWDes3BufferReverse", NULL);
+ xmlSecBufferDestroy(tmp);
return(-1);
}
/* steps 4 and 5: get IV and decrypt second time, result is WKCKS */
ret = kwDes3Id->decrypt(context,
- out, XMLSEC_KW_DES3_IV_LENGTH,
- out + XMLSEC_KW_DES3_IV_LENGTH, s - XMLSEC_KW_DES3_IV_LENGTH,
+ xmlSecBufferGetData(tmp), XMLSEC_KW_DES3_IV_LENGTH,
+ xmlSecBufferGetData(tmp) + XMLSEC_KW_DES3_IV_LENGTH, s - XMLSEC_KW_DES3_IV_LENGTH,
out, outSize);
if((ret < 0) || (ret < XMLSEC_KW_DES3_BLOCK_LENGTH)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->decrypt", NULL);
+ xmlSecBufferDestroy(tmp);
return(-1);
}
s = ret - XMLSEC_KW_DES3_BLOCK_LENGTH;
@@ -227,26 +211,21 @@ xmlSecKWDes3Decode(xmlSecKWDes3Id kwDes3Id, void *context,
out, s,
sha1, sizeof(sha1));
if((ret < 0) || (ret != sizeof(sha1))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwDes3Id->sha1",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
+ xmlSecInternalError("kwDes3Id->sha1", NULL);
+ xmlSecBufferDestroy(tmp);
return(-1);
}
/* check sha1 */
xmlSecAssert2(XMLSEC_KW_DES3_BLOCK_LENGTH <= sizeof(sha1), -1);
if(memcmp(sha1, out + s, XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "SHA1 does not match");
+ xmlSecInvalidDataError("SHA1 does not match", NULL);
+ xmlSecBufferDestroy(tmp);
return(-1);
}
/* done */
+ xmlSecBufferDestroy(tmp);
return(s);
}
@@ -285,11 +264,11 @@ xmlSecKWDes3BufferReverse(xmlSecByte *buf, xmlSecSize size)
* 64-bit register A, 128-bit register B, and array of 64-bit quantities
* R(1) through R(N).
*
- * "|" represents concatentation so x|y, where x and y and 64-bit quantities,
+ * "|" represents concatenation so x|y, where x and y and 64-bit quantities,
* is the 128-bit quantity with x in the most significant bits and y in the
* least significant bits. AES(K)enc(x) is the operation of AES encrypting
* the 128-bit quantity x under the key K. AES(K)dec(x) is the corresponding
- * decryption opteration. XOR(x,y) is the bitwise exclusive or of x and y.
+ * decryption operation. XOR(x,y) is the bitwise exclusive or of x and y.
* MSB(x) and LSB(y) are the most significant 64 bits and least significant
* 64 bits of x and y respectively.
*
@@ -378,11 +357,7 @@ xmlSecKWAesEncode(xmlSecKWAesId kwAesId, void *context,
if(N == 1) {
ret = kwAesId->encrypt(out, inSize + XMLSEC_KW_AES_MAGIC_BLOCK_SIZE, out, outSize, context);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwAesId->encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("kwAesId->encrypt", NULL);
return(-1);
}
} else {
@@ -396,11 +371,7 @@ xmlSecKWAesEncode(xmlSecKWAesId kwAesId, void *context,
ret = kwAesId->encrypt(block, sizeof(block), block, sizeof(block), context);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwAesId->encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("kwAesId->encrypt", NULL);
return(-1);
}
block[7] ^= t;
@@ -440,11 +411,7 @@ xmlSecKWAesDecode(xmlSecKWAesId kwAesId, void *context,
if(N == 1) {
ret = kwAesId->decrypt(out, inSize, out, outSize, context);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwAesId->decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("kwAesId->decrypt", NULL);
return(-1);
}
} else {
@@ -459,11 +426,7 @@ xmlSecKWAesDecode(xmlSecKWAesId kwAesId, void *context,
ret = kwAesId->decrypt(block, sizeof(block), block, sizeof(block), context);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "kwAesId->decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("kwAesId->decrypt", NULL);
return(-1);
}
memcpy(out, block, 8);
@@ -476,11 +439,7 @@ xmlSecKWAesDecode(xmlSecKWAesId kwAesId, void *context,
/* check the output */
if(memcmp(xmlSecKWAesMagicBlock, out, XMLSEC_KW_AES_MAGIC_BLOCK_SIZE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "bad magic block");
+ xmlSecInvalidDataError("bad magic block", NULL);
return(-1);
}
diff --git a/src/kw_aes_des.h b/src/kw_aes_des.h
index 19c98513..58eba886 100644
--- a/src/kw_aes_des.h
+++ b/src/kw_aes_des.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* THIS IS A PRIVATE XMLSEC HEADER FILE
* DON'T USE IT IN YOUR APPLICATION
diff --git a/src/list.c b/src/list.c
index 40650caf..03208bba 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * List of pointers.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
- *
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:list
+ * @Short_description: Generic list structure functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -19,7 +24,6 @@
#include <xmlsec/list.h>
#include <xmlsec/errors.h>
-
static int xmlSecPtrListEnsureSize (xmlSecPtrListPtr list,
xmlSecSize size);
@@ -60,22 +64,15 @@ xmlSecPtrListCreate(xmlSecPtrListId id) {
/* Allocate a new xmlSecPtrList and fill the fields. */
list = (xmlSecPtrListPtr)xmlMalloc(sizeof(xmlSecPtrList));
if(list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecPtrList)=%d",
- (int)sizeof(xmlSecPtrList));
+ xmlSecMallocError(sizeof(xmlSecPtrList),
+ xmlSecPtrListKlassGetName(id));
return(NULL);
}
ret = xmlSecPtrListInitialize(list, id);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListKlassGetName(id)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize",
+ xmlSecPtrListKlassGetName(id));
xmlFree(list);
return(NULL);
}
@@ -186,11 +183,9 @@ xmlSecPtrListCopy(xmlSecPtrListPtr dst, xmlSecPtrListPtr src) {
/* allocate memory */
ret = xmlSecPtrListEnsureSize(dst, dst->use + src->use);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(src)),
- "xmlSecPtrListEnsureSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", src->use);
+ xmlSecInternalError2("xmlSecPtrListEnsureSize",
+ xmlSecPtrListGetName(src),
+ "size=%d", src->use);
return(-1);
}
@@ -202,11 +197,8 @@ xmlSecPtrListCopy(xmlSecPtrListPtr dst, xmlSecPtrListPtr src) {
if((dst->id->duplicateItem != NULL) && (src->data[i] != NULL)) {
dst->data[dst->use] = dst->id->duplicateItem(src->data[i]);
if(dst->data[dst->use] == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(src)),
- "duplicateItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("duplicateItem",
+ xmlSecPtrListGetName(src));
return(-1);
}
} else {
@@ -234,21 +226,15 @@ xmlSecPtrListDuplicate(xmlSecPtrListPtr list) {
newList = xmlSecPtrListCreate(list->id);
if(newList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(list)),
- "xmlSecPtrListCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCreate",
+ xmlSecPtrListGetName(list));
return(NULL);
}
ret = xmlSecPtrListCopy(newList, list);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(list)),
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCopy",
+ xmlSecPtrListGetName(list));
xmlSecPtrListDestroy(newList);
return(NULL);
}
@@ -261,7 +247,7 @@ xmlSecPtrListDuplicate(xmlSecPtrListPtr list) {
*
* Gets list size.
*
- * Returns: the number of itmes in @list.
+ * Returns: the number of items in @list.
*/
xmlSecSize
xmlSecPtrListGetSize(xmlSecPtrListPtr list) {
@@ -306,11 +292,9 @@ xmlSecPtrListAdd(xmlSecPtrListPtr list, xmlSecPtr item) {
ret = xmlSecPtrListEnsureSize(list, list->use + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(list)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", list->use + 1);
+ xmlSecInternalError2("xmlSecPtrListEnsureSize",
+ xmlSecPtrListGetName(list),
+ "size=%d", list->use + 1);
return(-1);
}
@@ -474,12 +458,8 @@ xmlSecPtrListEnsureSize(xmlSecPtrListPtr list, xmlSecSize size) {
newData = (xmlSecPtr*)xmlMalloc(sizeof(xmlSecPtr) * newSize);
}
if(newData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecPtrListGetName(list)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecPtr)*%d=%d",
- newSize, (int)(sizeof(xmlSecPtr) * newSize));
+ xmlSecMallocError(sizeof(xmlSecPtr) * newSize,
+ xmlSecPtrListGetName(list));
return(-1);
}
@@ -508,7 +488,7 @@ static xmlSecPtrListKlass xmlSecStringListKlass = {
/**
* xmlSecStringListGetKlass:
*
- * The strins list class.
+ * The strings list class.
*
* Returns: strings list klass.
*/
diff --git a/src/membuf.c b/src/membuf.c
index 24cca3da..41568c60 100644
--- a/src/membuf.c
+++ b/src/membuf.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Memory buffer transform
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:membuf
+ * @Short_description: Memory buffer transform functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -24,7 +30,6 @@
#include <xmlsec/membuf.h>
#include <xmlsec/errors.h>
-
/*****************************************************************************
*
* Memory Buffer Transform
@@ -74,7 +79,7 @@ static xmlSecTransformKlass xmlSecTransformMemBufKlass = {
/**
* xmlSecTransformMemBufGetKlass:
*
- * The memory buffer transorm (used to store the data that go through it).
+ * The memory buffer transform (used to store the data that go through it).
*
* Returns: memory buffer transform klass.
*/
@@ -115,11 +120,8 @@ xmlSecTransformMemBufInitialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -162,31 +164,25 @@ xmlSecTransformMemBufExecute(xmlSecTransformPtr transform, int last, xmlSecTrans
/* just copy everything from in to our buffer and out */
ret = xmlSecBufferAppend(buffer, xmlSecBufferGetData(in), inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
ret = xmlSecBufferAppend(out, xmlSecBufferGetData(in), inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -197,11 +193,7 @@ xmlSecTransformMemBufExecute(xmlSecTransformPtr transform, int last, xmlSecTrans
/* the only way we can get here is if there is no input */
xmlSecAssert2(inSize == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
diff --git a/src/mscng/Makefile.am b/src/mscng/Makefile.am
new file mode 100644
index 00000000..4d9daf3b
--- /dev/null
+++ b/src/mscng/Makefile.am
@@ -0,0 +1,49 @@
+NULL =
+
+EXTRA_DIST = \
+ README \
+ $(NULL)
+
+lib_LTLIBRARIES = \
+ libxmlsec1-mscng.la \
+ $(NULL)
+
+libxmlsec1_mscng_la_CPPFLAGS = \
+ -DPACKAGE=\"@PACKAGE@\" \
+ -I../../include \
+ -I$(top_srcdir)/include \
+ $(XMLSEC_DEFINES) \
+ $(MSCNG_CFLAGS) \
+ $(LIBXSLT_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(NULL)
+
+libxmlsec1_mscng_la_SOURCES =\
+ app.c \
+ certkeys.c \
+ ciphers.c \
+ crypto.c \
+ digests.c \
+ globals.h \
+ hmac.c \
+ keysstore.c \
+ kt_rsa.c \
+ kw_aes.c \
+ kw_des.c \
+ signatures.c \
+ symkeys.c \
+ x509.c \
+ x509vfy.c \
+ $(NULL)
+
+libxmlsec1_mscng_la_LIBADD = \
+ $(MSCNG_LIBS) \
+ $(LIBXSLT_LIBS) \
+ $(LIBXML_LIBS) \
+ ../libxmlsec1.la \
+ $(NULL)
+
+libxmlsec1_mscng_la_LDFLAGS = \
+ @XMLSEC_CRYPTO_EXTRA_LDFLAGS@ \
+ -version-info @XMLSEC_VERSION_INFO@ \
+ $(NULL)
diff --git a/src/mscng/README b/src/mscng/README
new file mode 100644
index 00000000..72b37baf
--- /dev/null
+++ b/src/mscng/README
@@ -0,0 +1,16 @@
+What version of Windows?
+------------------------------------------------------------------------
+
+The Microsoft CNG API is a set of BCrypt* and NCrypt* functions. Taking
+BCryptOpenAlgorithmProvider() as a representative example, the minimum
+supported client is Windows Vista and the minimum supported server is Windows
+Server 2008.
+
+Keys manager with MS Certificate store support.
+------------------------------------------------------------------------
+
+Similarly to the nss and mscrypto backends, the xmlsec-mscng keys manager is
+based on the simple keys store from xmlsec core. If keys are not found in the
+simple keys store, then the MS Certificate store (the "MY" store by default,
+visible as Personal -> Certificates in certmgr.msc) is used to look up keys.
+The certificate store from the OS is a read-only store.
diff --git a/src/mscng/app.c b/src/mscng/app.c
new file mode 100644
index 00000000..8a54f598
--- /dev/null
+++ b/src/mscng/app.c
@@ -0,0 +1,824 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Stable
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/xmltree.h>
+
+#include <xmlsec/mscng/app.h>
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/symbols.h>
+#include <xmlsec/mscng/x509.h>
+#include <xmlsec/mscng/certkeys.h>
+#include <xmlsec/mscng/keysstore.h>
+
+/* config info for the mscng keysstore */
+static LPTSTR gXmlSecMSCngAppCertStoreName = NULL;
+
+/**
+ * xmlSecMSCngAppInit:
+ * @config: the path to MSCng configuration (unused).
+ *
+ * General crypto engine initialization. This function is used
+ * by XMLSec command line utility and called before
+ * @xmlSecInit function.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppInit(const char* config) {
+ /* initialize MSCng crypto engine */
+
+ /* config parameter is an ms cert store name */
+ if(config != NULL && strlen(config) > 0) {
+ if(gXmlSecMSCngAppCertStoreName != NULL) {
+ /* deny double initialization */
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_CONFIG, NULL,
+ "config=%s, config already set",
+ xmlSecErrorsSafeString(config));
+ return(-1);
+ }
+
+ gXmlSecMSCngAppCertStoreName = xmlSecWin32ConvertUtf8ToTstr((const xmlChar*)config);
+ if(gXmlSecMSCngAppCertStoreName == NULL) {
+ xmlSecInternalError2("xmlSecWin32ConvertUtf8ToTstr", NULL,
+ "config=%s", xmlSecErrorsSafeString(config));
+ return(-1);
+ }
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppShutdown:
+ *
+ * General crypto engine shutdown. This function is used
+ * by XMLSec command line utility and called after
+ * @xmlSecShutdown function.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppShutdown(void) {
+ /* shutdown MSCng crypto engine */
+ if(gXmlSecMSCngAppCertStoreName != NULL) {
+ xmlFree(gXmlSecMSCngAppCertStoreName);
+ gXmlSecMSCngAppCertStoreName = NULL;
+ }
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppGetCertStoreName:
+ *
+ * Gets the MS Cng certs store name set by @xmlSecMSCngAppInit function.
+ *
+ * Returns: the MS Cng certs name used by xmlsec-mscng.
+ */
+LPCTSTR
+xmlSecMSCngAppGetCertStoreName(void) {
+ return(gXmlSecMSCngAppCertStoreName);
+}
+
+/**
+ * xmlSecMSCngAppKeyLoad:
+ * @filename: the key filename.
+ * @format: the key file format.
+ * @pwd: the key file password.
+ * @pwdCallback: the key password callback.
+ * @pwdCallbackCtx: the user context for password callback.
+ *
+ * Reads key from the a file (not implemented yet).
+ *
+ * Returns: pointer to the key or NULL if an error occurs.
+ */
+xmlSecKeyPtr
+xmlSecMSCngAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
+ const char *pwd,
+ void* pwdCallback,
+ void* pwdCallbackCtx) {
+ xmlSecBuffer buffer;
+ xmlSecKeyPtr key = NULL;
+ int ret;
+
+ xmlSecAssert2(filename != NULL, NULL);
+ xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, NULL);
+
+ switch(format) {
+ case xmlSecKeyDataFormatPkcs12:
+ key = xmlSecMSCngAppPkcs12Load(filename, pwd, pwdCallback,
+ pwdCallbackCtx);
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecMSCngAppPkcs12Load", NULL);
+ return(NULL);
+ }
+ break;
+ case xmlSecKeyDataFormatCertDer:
+ ret = xmlSecBufferInitialize(&buffer, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ return(NULL);
+ }
+
+ ret = xmlSecBufferReadFile(&buffer, filename);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
+ xmlSecBufferFinalize(&buffer);
+ return (NULL);
+ }
+
+ key = xmlSecMSCngAppKeyLoadMemory(xmlSecBufferGetData(&buffer),
+ xmlSecBufferGetSize(&buffer), format,
+ pwd, pwdCallback, pwdCallbackCtx);
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecMSCngAppKeyLoadMemory", NULL);
+ xmlSecBufferFinalize(&buffer);
+ return(NULL);
+ }
+ xmlSecBufferFinalize(&buffer);
+ break;
+ default:
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL, "format=%d",
+ (int)format);
+ return(NULL);
+ break;
+ }
+
+ return(key);
+}
+
+/**
+ * xmlSecMSCngAppKeyLoadMemory:
+ * @data: the key binary data.
+ * @dataSize: the key binary data size.
+ * @format: the key data format.
+ * @pwd: the key data2 password.
+ * @pwdCallback: the key password callback.
+ * @pwdCallbackCtx: the user context for password callback.
+ *
+ * Reads key from a binary @data.
+ *
+ * Returns: pointer to the key or NULL if an error occurs.
+ */
+xmlSecKeyPtr
+xmlSecMSCngAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlSecKeyDataFormat format,
+ const char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
+ PCCERT_CONTEXT pCert = NULL;
+ PCCERT_CONTEXT tmpcert = NULL;
+ xmlSecKeyDataPtr x509Data = NULL;
+ xmlSecKeyDataPtr keyData = NULL;
+ xmlSecKeyPtr key = NULL;
+ xmlSecKeyPtr res = NULL;
+ int ret;
+
+ xmlSecAssert2(data != NULL, NULL);
+ xmlSecAssert2(dataSize > 0, NULL);
+ xmlSecAssert2(format == xmlSecKeyDataFormatCertDer, NULL);
+ UNREFERENCED_PARAMETER(pwd);
+ UNREFERENCED_PARAMETER(pwdCallback);
+ UNREFERENCED_PARAMETER(pwdCallbackCtx);
+
+ pCert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, data, dataSize);
+ if(pCert == NULL) {
+ xmlSecMSCngLastError("CertCreateCertificateContext", NULL);
+ goto done;
+ }
+
+ x509Data = xmlSecKeyDataCreate(xmlSecMSCngKeyDataX509Id);
+ if(x509Data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate", NULL);
+ goto done;
+ }
+
+ tmpcert = CertDuplicateCertificateContext(pCert);
+ if(tmpcert == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptKeyCert(x509Data, tmpcert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ tmpcert = NULL;
+
+ keyData = xmlSecMSCngCertAdopt(pCert, xmlSecKeyDataTypePublic);
+ if(keyData == NULL) {
+ xmlSecInternalError("xmlSecMSCngCertAdopt",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ pCert = NULL;
+
+ key = xmlSecKeyCreate();
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+
+ ret = xmlSecKeySetValue(key, keyData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ keyData = NULL;
+
+ ret = xmlSecKeyAdoptData(key, x509Data);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ x509Data = NULL;
+
+ /* success */
+ res = key;
+ key = NULL;
+done:
+ if(pCert != NULL) {
+ CertFreeCertificateContext(pCert);
+ }
+ if(tmpcert != NULL) {
+ CertFreeCertificateContext(tmpcert);
+ }
+ if(x509Data != NULL) {
+ xmlSecKeyDataDestroy(x509Data);
+ }
+ if(keyData != NULL) {
+ xmlSecKeyDataDestroy(keyData);
+ }
+ if(key != NULL) {
+ xmlSecKeyDestroy(key);
+ }
+
+ return(res);
+}
+
+
+#ifndef XMLSEC_NO_X509
+/**
+ * xmlSecMSCngAppKeyCertLoad:
+ * @key: the pointer to key.
+ * @filename: the certificate filename.
+ * @format: the certificate file format.
+ *
+ * Reads the certificate from $@filename and adds it to key
+ * (not implemented yet).
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
+ xmlSecKeyDataFormat format) {
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(filename != NULL, -1);
+ xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
+
+ /* TODO */
+ xmlSecNotImplementedError(NULL);
+ return(-1);
+}
+
+/**
+ * xmlSecMSCngAppKeyCertLoadMemory:
+ * @key: the pointer to key.
+ * @data: the certificate binary data.
+ * @dataSize: the certificate binary data size.
+ * @format: the certificate file format.
+ *
+ * Reads the certificate from memory buffer and adds it to key.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlSecSize dataSize,
+ xmlSecKeyDataFormat format) {
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(data != NULL, -1);
+ xmlSecAssert2(dataSize > 0, -1);
+ xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
+
+ /* TODO */
+ xmlSecNotImplementedError(NULL);
+ return(-1);
+}
+
+/**
+ * xmlSecMSCngAppPkcs12Load:
+ * @filename: the PKCS12 key filename.
+ * @pwd: the PKCS12 file password.
+ * @pwdCallback: the password callback.
+ * @pwdCallbackCtx: the user context for password callback.
+ *
+ * Reads key and all associated certificates from the PKCS12 file
+ * (not implemented yet).
+ * For uniformity, call xmlSecMSCngAppKeyLoad instead of this function. Pass
+ * in format=xmlSecKeyDataFormatPkcs12.
+ *
+ *
+ * Returns: pointer to the key or NULL if an error occurs.
+ */
+xmlSecKeyPtr
+xmlSecMSCngAppPkcs12Load(const char *filename,
+ const char *pwd,
+ void* pwdCallback,
+ void* pwdCallbackCtx) {
+ xmlSecBuffer buffer;
+ xmlSecByte* data;
+ xmlSecKeyPtr key;
+ int ret;
+
+ xmlSecAssert2(filename != NULL, NULL);
+ xmlSecAssert2(pwd != NULL, NULL);
+
+ ret = xmlSecBufferInitialize(&buffer, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ return(NULL);
+ }
+
+ ret = xmlSecBufferReadFile(&buffer, filename);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL, "filename=%s",
+ xmlSecErrorsSafeString(filename));
+ return(NULL);
+ }
+
+ data = xmlSecBufferGetData(&buffer);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecBufferGetData", NULL);
+ xmlSecBufferFinalize(&buffer);
+ return(NULL);
+ }
+
+ key = xmlSecMSCngAppPkcs12LoadMemory(data, xmlSecBufferGetSize(&buffer),
+ pwd, pwdCallback, pwdCallbackCtx);
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecMSCngAppPkcs12LoadMemory", NULL);
+ xmlSecBufferFinalize(&buffer);
+ return(NULL);
+ }
+
+ xmlSecBufferFinalize(&buffer);
+ return(key);
+}
+
+/**
+ * xmlSecMSCngAppPkcs12LoadMemory:
+ * @data: the key binary data.
+ * @dataSize: the key binary data size.
+ * @pwd: the PKCS12 password.
+ * @pwdCallback: the password callback.
+ * @pwdCallbackCtx: the user context for password callback.
+ *
+ * Reads key and all associated certificates from the PKCS12 binary data.
+ * For uniformity, call xmlSecMSCngAppKeyLoad instead of this function. Pass
+ * in format=xmlSecKeyDataFormatPkcs12.
+ *
+ * Returns: pointer to the key or NULL if an error occurs.
+ */
+xmlSecKeyPtr
+xmlSecMSCngAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize, const char *pwd,
+ void *pwdCallback,
+ void* pwdCallbackCtx) {
+ UNREFERENCED_PARAMETER(pwdCallback);
+ UNREFERENCED_PARAMETER(pwdCallbackCtx);
+ CRYPT_DATA_BLOB pfx;
+ xmlSecKeyPtr key = NULL;
+ WCHAR* pwdWideChar = NULL;
+ HCERTSTORE certStore = NULL;
+ xmlSecKeyDataPtr keyData = NULL;
+ xmlSecKeyDataPtr privKeyData = NULL;
+ PCCERT_CONTEXT cert = NULL;
+ PCCERT_CONTEXT certDuplicate = NULL;
+ int ret;
+
+ xmlSecAssert2(data != NULL, NULL);
+ xmlSecAssert2(dataSize > 1, NULL);
+ xmlSecAssert2(pwd != NULL, NULL);
+
+ memset(&pfx, 0, sizeof(pfx));
+ pfx.pbData = (BYTE *)data;
+ pfx.cbData = dataSize;
+ ret = PFXIsPFXBlob(&pfx);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("PFXIsPFXBlob", NULL);
+ return(NULL);
+ }
+
+ pwdWideChar = xmlSecWin32ConvertLocaleToUnicode(pwd);
+ if(pwdWideChar == NULL) {
+ xmlSecInternalError("xmlSecWin32ConvertLocaleToUnicode", NULL);
+ goto cleanup;
+ }
+
+ ret = PFXVerifyPassword(&pfx, pwdWideChar, 0);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("PFXVerifyPassword", NULL);
+ goto cleanup;
+ }
+
+ DWORD flags = CRYPT_EXPORTABLE;
+ if (!xmlSecImportGetPersistKey()) {
+ flags |= PKCS12_NO_PERSIST_KEY;
+ }
+ certStore = PFXImportCertStore(&pfx, pwdWideChar, flags);
+ if(certStore == NULL) {
+ xmlSecMSCngLastError("PFXImportCertStore", NULL);
+ goto cleanup;
+ }
+
+ keyData = xmlSecKeyDataCreate(xmlSecMSCngKeyDataX509Id);
+ if(keyData == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate", NULL);
+ goto cleanup;
+ }
+
+ /* enumerate over certifiates in the store */
+ while((cert = CertEnumCertificatesInStore(certStore, cert)) != NULL) {
+ DWORD dwData = 0;
+ DWORD dwDataLen = sizeof(DWORD);
+
+ ret = CertGetCertificateContextProperty(cert, CERT_KEY_SPEC_PROP_ID,
+ &dwData, &dwDataLen);
+ if(ret == TRUE) {
+ /* adopt private key */
+ certDuplicate = CertDuplicateCertificateContext(cert);
+ if(certDuplicate == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext", NULL);
+ goto cleanup;
+ }
+
+ privKeyData = xmlSecMSCngCertAdopt(certDuplicate,
+ xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+ if(privKeyData == NULL) {
+ xmlSecInternalError("xmlSecMSCngCertAdopt", NULL);
+ goto cleanup;
+ }
+ certDuplicate = NULL;
+ }
+
+ /* adopt certificate */
+ certDuplicate = CertDuplicateCertificateContext(cert);
+ if(certDuplicate == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext", NULL);
+ goto cleanup;
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(keyData, certDuplicate);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptKeyCert", NULL);
+ goto cleanup;
+ }
+ certDuplicate = NULL;
+ }
+
+ /* at this point we should have a private key */
+ if(privKeyData == NULL) {
+ xmlSecInternalError2("xmlSecMSCngAppPkcs12LoadMemory",
+ xmlSecKeyDataGetName(keyData), "privKeyData is NULL", NULL);
+ goto cleanup;
+ }
+
+ key = xmlSecKeyCreate();
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
+ goto cleanup;
+ }
+
+ ret = xmlSecKeySetValue(key, privKeyData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue", NULL);
+ xmlSecKeyDestroy(key);
+ key = NULL;
+ goto cleanup;
+ }
+ privKeyData = NULL;
+
+ ret = xmlSecKeyAdoptData(key, keyData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeyAdoptData", NULL);
+ xmlSecKeyDestroy(key);
+ key = NULL;
+ goto cleanup;
+ }
+ keyData = NULL;
+
+cleanup:
+ if(certStore != NULL) {
+ CertCloseStore(certStore, 0);
+ }
+ if(pwdWideChar != NULL) {
+ xmlFree(pwdWideChar);
+ }
+ if(keyData != NULL) {
+ xmlSecKeyDataDestroy(keyData);
+ }
+ if(privKeyData != NULL) {
+ xmlSecKeyDataDestroy(privKeyData);
+ }
+ if(certDuplicate != NULL) {
+ CertFreeCertificateContext(certDuplicate);
+ }
+ return(key);
+}
+
+/**
+ * xmlSecMSCngAppKeysMngrCertLoad:
+ * @mngr: the keys manager.
+ * @filename: the certificate file.
+ * @format: the certificate file format.
+ * @type: the flag that indicates is the certificate in @filename
+ * trusted or not.
+ *
+ * Reads cert from @filename and adds to the list of trusted or known
+ * untrusted certs in @store (not implemented yet).
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
+ xmlSecKeyDataFormat format,
+ xmlSecKeyDataType type ATTRIBUTE_UNUSED) {
+ xmlSecBuffer buffer;
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+ xmlSecAssert2(filename != NULL, -1);
+ xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
+
+ ret = xmlSecBufferInitialize(&buffer, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecBufferReadFile(&buffer, filename);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
+ xmlSecBufferFinalize(&buffer);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngAppKeysMngrCertLoadMemory(mngr, xmlSecBufferGetData(&buffer),
+ xmlSecBufferGetSize(&buffer), format, type);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecMSCngAppKeysMngrCertLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
+ xmlSecBufferFinalize(&buffer);
+ return(-1);
+ }
+
+ xmlSecBufferFinalize(&buffer);
+ return(ret);
+}
+
+/**
+ * xmlSecMSCngAppKeysMngrCertLoadMemory:
+ * @mngr: the pointer to keys manager.
+ * @data: the key binary data.
+ * @dataSize: the key binary data size.
+ * @format: the certificate format (PEM or DER).
+ * @type: the certificate type (trusted/untrusted).
+ *
+ * Reads cert from @data and adds to the list of trusted or known
+ * untrusted certs in @store
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte* data,
+ xmlSecSize dataSize, xmlSecKeyDataFormat format,
+ xmlSecKeyDataType type) {
+ xmlSecKeyDataStorePtr x509Store;
+ PCCERT_CONTEXT pCert = NULL;
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+ xmlSecAssert2(data != NULL, -1);
+ xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
+
+ x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecMSCngX509StoreId);
+ if(x509Store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecMSCngX509StoreId)", NULL);
+ return(-1);
+ }
+
+ switch (format) {
+ case xmlSecKeyDataFormatDer:
+ pCert = CertCreateCertificateContext(
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ data,
+ dataSize);
+ if(pCert == NULL) {
+ xmlSecMSCngLastError("CertCreateCertificateContext", NULL)
+ return(-1);
+ }
+ break;
+ default:
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
+ return(-1);
+ break;
+ }
+
+ xmlSecAssert2(pCert != NULL, -1);
+ ret = xmlSecMSCngX509StoreAdoptCert(x509Store, pCert, type);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509StoreAdoptCert", NULL);
+ CertFreeCertificateContext(pCert);
+ return(-1);
+ }
+
+ return(0);
+}
+
+#endif /* XMLSEC_NO_X509 */
+
+/**
+ * xmlSecMSCngAppDefaultKeysMngrInit:
+ * @mngr: the pointer to keys manager.
+ *
+ * Initializes @mngr with simple keys store #xmlSecSimpleKeysStoreId
+ * and a default MSCng crypto key data stores.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+
+ /* create MSCng keys store if needed */
+ if(xmlSecKeysMngrGetKeysStore(mngr) == NULL) {
+ xmlSecKeyStorePtr keysStore;
+
+ keysStore = xmlSecKeyStoreCreate(xmlSecMSCngKeysStoreId);
+ if(keysStore == NULL) {
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecMSCngKeysStoreId)", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
+ xmlSecKeyStoreDestroy(keysStore);
+ return(-1);
+ }
+ }
+
+ ret = xmlSecMSCngKeysMngrInit(mngr);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeysMngrInit", NULL);
+ return(-1);
+ }
+
+ mngr->getKey = xmlSecKeysMngrGetKey;
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppDefaultKeysMngrAdoptKey:
+ * @mngr: the pointer to keys manager.
+ * @key: the pointer to key.
+ *
+ * Adds @key to the keys manager @mngr created with #xmlSecMSCngAppDefaultKeysMngrInit
+ * function.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key) {
+ xmlSecKeyStorePtr store;
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ store = xmlSecKeysMngrGetKeysStore(mngr);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeysStoreAdoptKey(store, key);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeysStoreAdoptKey", NULL);
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppDefaultKeysMngrLoad:
+ * @mngr: the pointer to keys manager.
+ * @uri: the uri.
+ *
+ * Loads XML keys file from @uri to the keys manager @mngr created
+ * with #xmlSecMSCngAppDefaultKeysMngrInit function.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
+ xmlSecKeyStorePtr store;
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+ xmlSecAssert2(uri != NULL, -1);
+
+ store = xmlSecKeysMngrGetKeysStore(mngr);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeysStoreLoad(store, uri, mngr);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecMSCngKeysStoreLoad", NULL, "uri=%s",
+ xmlSecErrorsSafeString(uri));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppDefaultKeysMngrSave:
+ * @mngr: the pointer to keys manager.
+ * @filename: the destination filename.
+ * @type: the type of keys to save (public/private/symmetric).
+ *
+ * Saves keys from @mngr to XML keys file.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename, xmlSecKeyDataType type) {
+ xmlSecKeyStorePtr store;
+ int ret;
+
+ xmlSecAssert2(mngr != NULL, -1);
+ xmlSecAssert2(filename != NULL, -1);
+
+ store = xmlSecKeysMngrGetKeysStore(mngr);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeysStoreSave(store, filename, type);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecMSCngKeysStoreSave", NULL, "filename%s",
+ xmlSecErrorsSafeString(filename));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngAppGetDefaultPwdCallback:
+ *
+ * Gets default password callback.
+ *
+ * Returns: default password callback.
+ */
+void*
+xmlSecMSCngAppGetDefaultPwdCallback(void) {
+ /* TODO */
+ return(NULL);
+}
+
diff --git a/src/mscng/certkeys.c b/src/mscng/certkeys.c
new file mode 100644
index 00000000..55cfde26
--- /dev/null
+++ b/src/mscng/certkeys.c
@@ -0,0 +1,1649 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:certkeys
+ * @Short_description: Certificate keys support functions for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Stable
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <wincrypt.h>
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+typedef struct _xmlSecMSCngKeyDataCtx xmlSecMSCngKeyDataCtx,
+ *xmlSecMSCngKeyDataCtxPtr;
+
+struct _xmlSecMSCngKeyDataCtx {
+ PCCERT_CONTEXT cert;
+ NCRYPT_KEY_HANDLE privkey;
+ BCRYPT_KEY_HANDLE pubkey;
+};
+
+#define xmlSecMSCngKeyDataSize \
+ (sizeof(xmlSecKeyData) + sizeof(xmlSecMSCngKeyDataCtx))
+#define xmlSecMSCngKeyDataGetCtx(data) \
+ ((xmlSecMSCngKeyDataCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecKeyData)))
+
+static int xmlSecMSCngKeyDataGetSize(xmlSecKeyDataPtr data);
+
+static int
+xmlSecMSCngKeyDataCertGetPubkey(PCCERT_CONTEXT cert, BCRYPT_KEY_HANDLE* key) {
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ if(!CryptImportPublicKeyInfoEx2(X509_ASN_ENCODING,
+ &cert->pCertInfo->SubjectPublicKeyInfo,
+ 0,
+ NULL,
+ key)) {
+ xmlSecMSCngLastError("CryptImportPublicKeyInfoEx2", NULL);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataCertGetPrivkey(PCCERT_CONTEXT cert, NCRYPT_KEY_HANDLE* key) {
+ int ret;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ DWORD keySpec = 0;
+ BOOL callerFree = FALSE;
+
+ ret = CryptAcquireCertificatePrivateKey(
+ cert,
+ CRYPT_ACQUIRE_COMPARE_KEY_FLAG | CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG,
+ NULL,
+ key,
+ &keySpec,
+ &callerFree);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CryptAcquireCertificatePrivateKey", NULL);
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngKeyDataAdoptCert:
+ * @data: the pointer to MSCng pccert data.
+ * @cert: the pointer to PCCERT key.
+ *
+ * Sets the value of key data.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+static int
+xmlSecMSCngKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT cert, xmlSecKeyDataType type) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ BCRYPT_KEY_HANDLE hPubKey;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), -1);
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(cert->pCertInfo != NULL, -1);
+ xmlSecAssert2((type & (xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate)) != 0, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pubkey == NULL, -1);
+ xmlSecAssert2(ctx->cert == NULL, -1);
+
+ /* acquire the CNG key handle from the certificate */
+ if((type & xmlSecKeyDataTypePrivate) != 0) {
+ NCRYPT_KEY_HANDLE hPrivKey;
+
+ ret = xmlSecMSCngKeyDataCertGetPrivkey(cert, &hPrivKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataCertGetPrivkey", NULL);
+ return(-1);
+ }
+
+ ctx->privkey = hPrivKey;
+ }
+
+ ret = xmlSecMSCngKeyDataCertGetPubkey(cert, &hPubKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataCertGetPubkey", NULL);
+ return(-1);
+ }
+
+ ctx->pubkey = hPubKey;
+ ctx->cert = cert;
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataAdoptKey(xmlSecKeyDataPtr data, BCRYPT_KEY_HANDLE hPubKey) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), -1);
+ xmlSecAssert2(hPubKey != NULL, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pubkey == NULL, -1);
+
+ ctx->pubkey = hPubKey;
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngCertAdopt:
+ * @pCert: the pointer to cert.
+ * @type: the expected key type.
+ *
+ * Creates key data value from the cert.
+ *
+ * Returns: pointer to newly created xmlsec key or NULL if an error occurs.
+ */
+xmlSecKeyDataPtr
+xmlSecMSCngCertAdopt(PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
+ xmlSecKeyDataPtr data = NULL;
+ int ret;
+
+ xmlSecAssert2(pCert != NULL, NULL);
+ xmlSecAssert2(pCert->pCertInfo != NULL, NULL);
+ xmlSecAssert2(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId != NULL, NULL);
+
+#ifndef XMLSEC_NO_DSA
+ if(!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_X957_DSA)) {
+ data = xmlSecKeyDataCreate(xmlSecMSCngKeyDataDsaId);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataDsaId)", NULL);
+ return(NULL);
+ }
+ }
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_RSA
+ if(!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_RSA_RSA)) {
+ data = xmlSecKeyDataCreate(xmlSecMSCngKeyDataRsaId);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataRsaId)", NULL);
+ return(NULL);
+ }
+ }
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_ECDSA
+ if(!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_ECC_PUBLIC_KEY)) {
+ data = xmlSecKeyDataCreate(xmlSecMSCngKeyDataEcdsaId);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataEcdsaId)", NULL);
+ return(NULL);
+ }
+ }
+#endif /* XMLSEC_NO_ECDSA */
+
+ if(data == NULL) {
+ xmlSecInvalidStringTypeError("PCCERT_CONTEXT key type",
+ pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId,
+ "unsupported keytype",
+ NULL);
+ return(NULL);
+ }
+
+ ret = xmlSecMSCngKeyDataAdoptCert(data, pCert, type);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataAdoptCert", NULL);
+ xmlSecKeyDataDestroy(data);
+ return(NULL);
+ }
+
+ return(data);
+}
+
+/**
+ * xmlSecMSCngKeyDataGetPubKey:
+ * @data: the key data to retrieve certificate from.
+ *
+ * Native MSCng public key retrieval from xmlsec keydata. The returned key must
+ * not be destroyed by the caller.
+ *
+ * Returns: key on success or 0 otherwise.
+ */
+BCRYPT_KEY_HANDLE
+xmlSecMSCngKeyDataGetPubKey(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), 0);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), 0);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, 0);
+
+ return(ctx->pubkey);
+}
+
+/**
+ * xmlSecMSCngKeyDataGetPrivKey:
+ * @data: the key data to retrieve certificate from.
+ *
+ * Native MSCng private key retrieval from xmlsec keydata. The returned key
+ * must not be destroyed by the caller.
+ *
+ * Returns: key on success or 0 otherwise.
+ */
+NCRYPT_KEY_HANDLE
+xmlSecMSCngKeyDataGetPrivKey(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), 0);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), 0);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, 0);
+
+ return(ctx->privkey);
+}
+
+static int
+xmlSecMSCngKeyDataInitialize(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKeyDataCtx));
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKeyDataFinalize(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ NTSTATUS status;
+
+ xmlSecAssert(xmlSecKeyDataIsValid(data));
+ xmlSecAssert(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize));
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->privkey != 0) {
+ status = NCryptFreeObject(ctx->privkey);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDestroyKey", NULL, status);
+ }
+ }
+
+ if(ctx->pubkey != 0) {
+ status = BCryptDestroyKey(ctx->pubkey);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDestroyKey", NULL, status);
+ }
+ }
+
+ if(ctx->cert != NULL) {
+ CertFreeCertificateContext(ctx->cert);
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKeyDataCtx));
+}
+
+static int
+xmlSecMSCngKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecMSCngKeyDataCtxPtr dstCtx;
+ xmlSecMSCngKeyDataCtxPtr srcCtx;
+ NTSTATUS status;
+ DWORD cbBlob = 0;
+ PUCHAR pbBlob;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ LPCWSTR pszAlgId;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(dst), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(dst, xmlSecMSCngKeyDataSize), -1);
+ xmlSecAssert2(xmlSecKeyDataIsValid(src), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(src, xmlSecMSCngKeyDataSize), -1);
+
+ dstCtx = xmlSecMSCngKeyDataGetCtx(dst);
+ xmlSecAssert2(dstCtx != NULL, -1);
+ xmlSecAssert2(dstCtx->cert == NULL, -1);
+ xmlSecAssert2(dstCtx->privkey == 0, -1);
+ xmlSecAssert2(dstCtx->pubkey == NULL, -1);
+
+ srcCtx = xmlSecMSCngKeyDataGetCtx(src);
+ xmlSecAssert2(srcCtx != NULL, -1);
+
+ if(srcCtx->cert != NULL) {
+ dstCtx->cert = CertDuplicateCertificateContext(srcCtx->cert);
+ if(dstCtx->cert == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext", NULL);
+ return(-1);
+ }
+ }
+
+ if(srcCtx->privkey != 0) {
+ ret = xmlSecMSCngKeyDataCertGetPrivkey(dstCtx->cert, &dstCtx->privkey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataCertGetPrivkey", NULL);
+ return(-1);
+ }
+ }
+
+ if(dstCtx->cert != NULL) {
+ /* avoid BCryptDuplicateKey() here as that works for symmetric keys only */
+ ret = xmlSecMSCngKeyDataCertGetPubkey(dstCtx->cert, &dstCtx->pubkey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataCertGetPubkey", NULL);
+ return(-1);
+ }
+ } else if(srcCtx->pubkey != NULL) {
+ /* BCryptDuplicateKey() works with symmetric keys only, so go with
+ * export + import instead */
+ status = BCryptExportKey(srcCtx->pubkey,
+ NULL,
+ BCRYPT_PUBLIC_KEY_BLOB,
+ NULL,
+ 0,
+ &cbBlob,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", NULL, status);
+ return(-1);
+ }
+
+ pbBlob = (PUCHAR)xmlMalloc(cbBlob);
+ if(pbBlob == NULL) {
+ xmlSecMallocError(cbBlob, NULL);
+ return(-1);
+ }
+
+ status = BCryptExportKey(srcCtx->pubkey,
+ NULL,
+ BCRYPT_PUBLIC_KEY_BLOB,
+ pbBlob,
+ cbBlob,
+ &cbBlob,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", NULL, status);
+ xmlFree(pbBlob);
+ return(-1);
+ }
+
+ switch(((BCRYPT_KEY_BLOB*)pbBlob)->Magic) {
+#ifndef XMLSEC_NO_DSA
+ case BCRYPT_DSA_PUBLIC_MAGIC:
+ pszAlgId = BCRYPT_DSA_ALGORITHM;
+ break;
+#endif
+#ifndef XMLSEC_NO_RSA
+ case BCRYPT_RSAPUBLIC_MAGIC:
+ pszAlgId = BCRYPT_RSA_ALGORITHM;
+ break;
+#endif
+ default:
+ xmlSecNotImplementedError(NULL);
+ xmlFree(pbBlob);
+ return(-1);
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ pszAlgId,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ NULL, status);
+ xmlFree(pbBlob);
+ return(-1);
+ }
+
+ status = BCryptImportKeyPair(hAlg, NULL, BCRYPT_PUBLIC_KEY_BLOB, &dstCtx->pubkey, pbBlob,
+ cbBlob, 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKeyPair",
+ NULL, status);
+ xmlFree(pbBlob);
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ return(-1);
+ }
+
+ xmlFree(pbBlob);
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(0);
+}
+
+#ifndef XMLSEC_NO_DSA
+static int
+xmlSecMSCngKeyDataDsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCngKeyDataDsaId), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCngKeyDataDsaId), -1);
+
+ return(xmlSecMSCngKeyDataDuplicate(dst, src));
+}
+
+static xmlSecKeyDataType
+xmlSecMSCngKeyDataDsaGetType(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataDsaId), xmlSecKeyDataTypeUnknown);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, xmlSecKeyDataTypeUnknown);
+
+ if(ctx->privkey != 0) {
+ return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+ }
+
+ return(xmlSecKeyDataTypePublic);
+}
+
+static xmlSecSize
+xmlSecMSCngKeyDataDsaGetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataDsaId), 0);
+
+ return(xmlSecMSCngKeyDataGetSize(data));
+}
+
+static int
+xmlSecMSCngKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecBn p;
+ xmlSecBn q;
+ xmlSecBn g;
+ xmlSecBn y;
+ xmlSecBuffer blob;
+ xmlNodePtr cur;
+ xmlSecSize length;
+ xmlSecSize offset;
+ xmlSecSize blobLen;
+ unsigned char* blobData;
+ BCRYPT_DSA_KEY_BLOB* dsakey;
+ LPCWSTR lpszBlobType;
+ BCRYPT_KEY_HANDLE hKey = NULL;
+ NTSTATUS status;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ xmlSecKeyDataPtr keyData = NULL;
+ int res = -1;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataDsaId, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ if(xmlSecKeyGetValue(key) != NULL) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id), "key already has a value");
+ return(-1);
+ }
+
+ /* initialize buffers */
+ ret = xmlSecBnInitialize(&p, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize(p)",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ ret = xmlSecBnInitialize(&q, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize(q)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&p);
+ return(-1);
+ }
+
+ ret = xmlSecBnInitialize(&g, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize(g)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&p);
+ xmlSecBnFinalize(&q);
+ return(-1);
+ }
+
+ ret = xmlSecBnInitialize(&y, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize(g)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&p);
+ xmlSecBnFinalize(&q);
+ xmlSecBnFinalize(&g);
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&p);
+ xmlSecBnFinalize(&q);
+ xmlSecBnFinalize(&g);
+ xmlSecBnFinalize(&y);
+ return(-1);
+ }
+
+ /* read xml */
+ cur = xmlSecGetNextElementNode(node->children);
+
+ /* P node */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAP,
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ /* 0 as both the XML and CNG works with big-endian */
+ ret = xmlSecBnGetNodeValue(&p, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&p) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(p)",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* Q node */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAQ,
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecBnGetNodeValue(&q, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&q) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(q)",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* G node */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAG,
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecBnGetNodeValue(&g, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&q) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(g)",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* TODO X node */
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAX, xmlSecNs))) {
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ /* Y node */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAY,
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecBnGetNodeValue(&y, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&y) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(y)",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* TODO J node */
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAJ, xmlSecDSigNs))) {
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ /* TODO Seed node */
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSASeed, xmlSecDSigNs))) {
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ /* TODO PgenCounter node */
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAPgenCounter, xmlSecDSigNs))) {
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ if(cur != NULL) {
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ /* turn the read data into a public key blob, as documented at
+ * <https://msdn.microsoft.com/library/windows/desktop/aa833126.aspx>: Q is
+ * part of the struct, need to write P, G, Y after it */
+ length = xmlSecBnGetSize(&p);
+ offset = sizeof(BCRYPT_DSA_KEY_BLOB);
+ blobLen = offset + length * 3;
+
+ ret = xmlSecBufferSetSize(&blob, blobLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", blobLen);
+ goto done;
+ }
+
+ blobData = xmlSecBufferGetData(&blob);
+ dsakey = (BCRYPT_DSA_KEY_BLOB *)blobData;
+ dsakey->cbKey = length;
+
+ memset(dsakey->Count, -1, sizeof(dsakey->Count));
+ memset(dsakey->Seed, -1, sizeof(dsakey->Seed));
+
+ if(xmlSecBnGetSize(&q) != 20) {
+ xmlSecInternalError("assumed sizeof(q) == 20", xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ memcpy(dsakey->q, xmlSecBnGetData(&q), 20);
+
+ memcpy(blobData + offset, xmlSecBnGetData(&p), length);
+ offset += length;
+
+ if(xmlSecBnGetSize(&g) != xmlSecBnGetSize(&p)) {
+ xmlSecInternalError("assumed sizeof(g) == sizeof(p)", xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ memcpy(blobData + offset, xmlSecBnGetData(&g), length);
+ offset += length;
+
+ if(xmlSecBnGetSize(&y) != xmlSecBnGetSize(&p)) {
+ xmlSecInternalError("assumed sizeof(y) == sizeof(p)", xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ memcpy(blobData + offset, xmlSecBnGetData(&y), length);
+
+ lpszBlobType = BCRYPT_DSA_PUBLIC_BLOB;
+ dsakey->dwMagic = BCRYPT_DSA_PUBLIC_MAGIC;
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_DSA_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecKeyDataKlassGetName(id), status);
+ goto done;
+ }
+
+ status = BCryptImportKeyPair(hAlg, NULL, lpszBlobType, &hKey, blobData,
+ blobLen, 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKeyPair",
+ xmlSecKeyDataKlassGetName(id), status);
+ goto done;
+ }
+
+ keyData = xmlSecKeyDataCreate(id);
+ if(keyData == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataAdoptKey(keyData, hKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataAdoptKey",
+ xmlSecKeyDataGetName(keyData));
+ goto done;
+ }
+
+ hKey = 0;
+ ret = xmlSecKeySetValue(key, keyData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(keyData));
+ goto done;
+ }
+
+ keyData = NULL;
+ res = 0;
+
+done:
+ xmlSecBnFinalize(&p);
+ xmlSecBnFinalize(&q);
+ xmlSecBnFinalize(&g);
+ xmlSecBnFinalize(&y);
+ xmlSecBufferFinalize(&blob);
+
+ if(hAlg != 0) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ if(hKey != 0) {
+ BCryptDestroyKey(hKey);
+ }
+
+ return(res);
+}
+
+static int
+xmlSecMSCngKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ NTSTATUS status;
+ xmlSecBuffer buf;
+ xmlSecByte* bufData;
+ DWORD bufLen;
+ BCRYPT_DSA_KEY_BLOB* dsakey;
+ xmlNodePtr cur;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataDsaId, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key),
+ xmlSecMSCngKeyDataDsaId), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(xmlSecKeyGetValue(key));
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pubkey, -1);
+
+ /* turn ctx->pubkey into dsakey */
+ status = BCryptExportKey(ctx->pubkey,
+ NULL,
+ BCRYPT_DSA_PUBLIC_BLOB,
+ NULL,
+ 0,
+ &bufLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", xmlSecKeyDataKlassGetName(id),
+ status);
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&buf, bufLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id), "size=%ld", bufLen);
+ return(-1);
+ }
+
+ bufData = xmlSecBufferGetData(&buf);
+ dsakey = (BCRYPT_DSA_KEY_BLOB*)bufData;
+
+ status = BCryptExportKey(ctx->pubkey,
+ NULL,
+ BCRYPT_DSA_PUBLIC_BLOB,
+ (PUCHAR)dsakey,
+ bufLen,
+ &bufLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", xmlSecKeyDataKlassGetName(id),
+ status);
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* write dsaykey in XML format, see xmlSecMSCngKeyDataDsaXmlRead() on the
+ * memory layout of bufData: the struct contains Q, and P, G, Y follows it */
+
+ /* P node */
+ cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild(p)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* reverse is 0, both CNG and XML is big-endian */
+ bufData += sizeof(BCRYPT_DSA_KEY_BLOB);
+ ret = xmlSecBnBlobSetNodeValue(bufData, dsakey->cbKey, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(p)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* Q node */
+ cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild(q)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* 20 is the documented size of BCRYPT_DSA_KEY_BLOB.q */
+ ret = xmlSecBnBlobSetNodeValue((xmlSecByte*)dsakey->q, 20, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(q)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* G node */
+ cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild(g)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ bufData += dsakey->cbKey;
+ ret = xmlSecBnBlobSetNodeValue(bufData, dsakey->cbKey, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(g)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* Y node */
+ cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild(y)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ bufData += dsakey->cbKey;
+ ret = xmlSecBnBlobSetNodeValue(bufData, dsakey->cbKey, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(y)",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ xmlSecBufferFinalize(&buf);
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKeyDataDsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataDsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== rsa key: size = %d\n",
+ (int)xmlSecMSCngKeyDataDsaGetSize(data));
+}
+
+static void xmlSecMSCngKeyDataDsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataDsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<DSAKeyValue size=\"%d\" />\n",
+ (int)xmlSecMSCngKeyDataDsaGetSize(data));
+}
+
+static int
+xmlSecMSCngKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
+ xmlSecKeyDataType type) {
+ UNREFERENCED_PARAMETER(type);
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ BCRYPT_ALG_HANDLE hAlg = 0;
+ BCRYPT_KEY_HANDLE hKey = 0;
+ int res = -1;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), xmlSecKeyDataTypeUnknown);
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataDsaId), -1);
+ xmlSecAssert2(sizeBits > 0, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_DSA_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecKeyDataGetName(data), status);
+ goto done;
+ }
+
+ status = BCryptGenerateKeyPair(
+ hAlg,
+ &hKey,
+ sizeBits,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenerateKeyPair", xmlSecKeyDataGetName(data),
+ status);
+ goto done;
+ }
+
+ /* need to finalize the key before it can be used */
+ status = BCryptFinalizeKeyPair(hKey, 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinalizeKeyPair", xmlSecKeyDataGetName(data),
+ status);
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataAdoptKey(data, hKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
+ goto done;
+ }
+ hKey = 0;
+
+ /* success */
+ res = 0;
+
+done:
+ if (hKey != 0) {
+ BCryptDestroyKey(hKey);
+ }
+
+ if (hAlg != 0) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataDsaKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCngKeyDataSize,
+
+ /* data */
+ xmlSecNameDSAKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefDSAKeyValue, /* const xmlChar* href; */
+ xmlSecNodeDSAKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngKeyDataDsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ xmlSecMSCngKeyDataDsaGenerate, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngKeyDataDsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngKeyDataDsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngKeyDataDsaXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngKeyDataDsaXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngKeyDataDsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngKeyDataDsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataDsaGetKlass:
+ *
+ * The MSCng DSA CertKey data klass.
+ *
+ * Returns: pointer to MSCng DSA key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataDsaGetKlass(void) {
+ return(&xmlSecMSCngKeyDataDsaKlass);
+}
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_RSA
+static int
+xmlSecMSCngKeyDataRsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCngKeyDataRsaId), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCngKeyDataRsaId), -1);
+
+ return(xmlSecMSCngKeyDataDuplicate(dst, src));
+}
+
+static xmlSecKeyDataType
+xmlSecMSCngKeyDataRsaGetType(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataRsaId), xmlSecKeyDataTypeUnknown);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, xmlSecKeyDataTypeUnknown);
+
+ if(ctx->privkey != 0) {
+ return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+ }
+
+ return(xmlSecKeyDataTypePublic);
+}
+
+static int
+xmlSecMSCngKeyDataGetSize(xmlSecKeyDataPtr data) {
+ NTSTATUS status;
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), 0);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), 0);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, 0);
+
+ if(ctx->cert != NULL) {
+ xmlSecAssert2(ctx->cert->pCertInfo != NULL, 0);
+ return(CertGetPublicKeyLength(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ &ctx->cert->pCertInfo->SubjectPublicKeyInfo));
+ } else if(ctx->pubkey != 0) {
+ DWORD length = 0;
+ DWORD lenlen = sizeof(DWORD);
+
+ status = BCryptGetProperty(ctx->pubkey,
+ BCRYPT_KEY_STRENGTH,
+ (PUCHAR)&length,
+ lenlen,
+ &lenlen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetproperty", NULL, status);
+ return(0);
+ }
+
+ return(length);
+ } else if(ctx->privkey != 0) {
+ xmlSecNotImplementedError(NULL);
+ return(0);
+ }
+
+ return(0);
+}
+
+static xmlSecSize
+xmlSecMSCngKeyDataRsaGetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataRsaId), 0);
+
+ return(xmlSecMSCngKeyDataGetSize(data));
+}
+
+
+static void
+xmlSecMSCngKeyDataRsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataRsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== rsa key: size = %d\n",
+ (int)xmlSecMSCngKeyDataRsaGetSize(data));
+}
+
+static void xmlSecMSCngKeyDataRsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataRsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<RSAKeyValue size=\"%d\" />\n",
+ (int)xmlSecMSCngKeyDataRsaGetSize(data));
+}
+
+static int
+xmlSecMSCngKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecBn modulus, exponent;
+ xmlSecBuffer blob;
+ xmlSecSize blobBufferLen;
+ xmlSecSize offset;
+ BCRYPT_RSAKEY_BLOB* rsakey;
+ LPCWSTR lpszBlobType;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ xmlSecKeyDataPtr keyData = NULL;
+ BCRYPT_KEY_HANDLE hKey = 0;
+ xmlNodePtr cur;
+ int res = -1;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataRsaId, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ if(xmlSecKeyGetValue(key) != NULL) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
+ return(-1);
+ }
+
+ /* initialize buffers */
+ ret = xmlSecBnInitialize(&modulus, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ ret = xmlSecBnInitialize(&exponent, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&modulus);
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBnFinalize(&modulus);
+ xmlSecBnFinalize(&exponent);
+ return(-1);
+ }
+
+ /* read xml */
+ cur = xmlSecGetNextElementNode(node->children);
+
+ /* first is Modulus node, it is required because we do not support Seed and PgenCounter */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAModulus,
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ /* 0 as both the XML and CNG works with big-endian */
+ ret = xmlSecBnGetNodeValue(&modulus, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&modulus) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* next is Exponent node, it is required because we do not support Seed and PgenCounter */
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAExponent, xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecBnGetNodeValue(&exponent, cur, xmlSecBnBase64, 0);
+ if((ret < 0) || (xmlSecBnGetSize(&exponent) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+ cur = xmlSecGetNextElementNode(cur->next);
+
+ /* TODO X node */
+ if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeRSAPrivateExponent, xmlSecNs))) {
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ if(cur != NULL) {
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ /* turn the read data into a public key blob, as documented at
+ * <https://msdn.microsoft.com/en-us/library/windows/desktop/aa375531(v=vs.85).aspx>:
+ * need to write exponent and modulus after the struct */
+ blobBufferLen = sizeof(BCRYPT_RSAKEY_BLOB) + xmlSecBnGetSize(&exponent) +
+ xmlSecBnGetSize(&modulus);
+ ret = xmlSecBufferSetSize(&blob, blobBufferLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecKeyDataKlassGetName(id), "size=%d", blobBufferLen);
+ goto done;
+ }
+
+ rsakey = (BCRYPT_RSAKEY_BLOB *)xmlSecBufferGetData(&blob);
+ rsakey->Magic = BCRYPT_RSAPUBLIC_MAGIC;
+ rsakey->BitLength = xmlSecBnGetSize(&modulus) * 8;
+ rsakey->cbPublicExp = xmlSecBnGetSize(&exponent);
+ rsakey->cbModulus = xmlSecBnGetSize(&modulus);
+ offset = sizeof(BCRYPT_RSAKEY_BLOB);
+
+ memcpy(xmlSecBufferGetData(&blob) + offset, xmlSecBnGetData(&exponent),
+ xmlSecBnGetSize(&exponent));
+ offset += xmlSecBnGetSize(&exponent);
+
+ memcpy(xmlSecBufferGetData(&blob) + offset, xmlSecBnGetData(&modulus),
+ xmlSecBnGetSize(&modulus));
+
+ lpszBlobType = BCRYPT_RSAPUBLIC_BLOB;
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_RSA_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecKeyDataKlassGetName(id), status);
+ goto done;
+ }
+
+ status = BCryptImportKeyPair(hAlg, NULL, lpszBlobType, &hKey,
+ xmlSecBufferGetData(&blob), xmlSecBufferGetSize(&blob), 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKeyPair",
+ xmlSecKeyDataKlassGetName(id), status);
+ goto done;
+ }
+
+ keyData = xmlSecKeyDataCreate(id);
+ if(keyData == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataAdoptKey(keyData, hKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataAdoptKey",
+ xmlSecKeyDataGetName(keyData));
+ goto done;
+ }
+
+ hKey = 0;
+ ret = xmlSecKeySetValue(key, keyData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(keyData));
+ goto done;
+ }
+
+ keyData = NULL;
+ res = 0;
+
+done:
+ xmlSecBnFinalize(&exponent);
+ xmlSecBnFinalize(&modulus);
+ xmlSecBufferFinalize(&blob);
+
+ if(hKey != 0) {
+ BCryptDestroyKey(hKey);
+ }
+
+ if(hAlg != 0) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static int
+xmlSecMSCngKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ NTSTATUS status;
+ xmlSecBuffer buf;
+ xmlSecByte* bufData;
+ DWORD bufLen;
+ BCRYPT_RSAKEY_BLOB* rsakey;
+ xmlNodePtr cur;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataRsaId, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key),
+ xmlSecMSCngKeyDataRsaId), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(xmlSecKeyGetValue(key));
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pubkey, -1);
+
+ /* turn ctx->pubkey into rsakey */
+ status = BCryptExportKey(ctx->pubkey,
+ NULL,
+ BCRYPT_RSAPUBLIC_BLOB,
+ NULL,
+ 0,
+ &bufLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", xmlSecKeyDataKlassGetName(id),
+ status);
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&buf, bufLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id), "size=%ld", bufLen);
+ return(-1);
+ }
+
+ bufData = xmlSecBufferGetData(&buf);
+ rsakey = (BCRYPT_RSAKEY_BLOB*)bufData;
+
+ status = BCryptExportKey(ctx->pubkey,
+ NULL,
+ BCRYPT_RSAPUBLIC_BLOB,
+ (PUCHAR)rsakey,
+ bufLen,
+ &bufLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptExportKey", xmlSecKeyDataKlassGetName(id),
+ status);
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* write rsaykey in XML format, see xmlSecMSCngKeyDataRsaXmlRead() on the
+ * memory layout of bufData: the struct is followed by Exponent and Modulus */
+
+ /* Modulus node */
+ cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ bufData += sizeof(BCRYPT_RSAKEY_BLOB) + rsakey->cbPublicExp;
+ ret = xmlSecBnBlobSetNodeValue(bufData, rsakey->cbModulus, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ /* Exponent node */
+ cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ bufData = xmlSecBufferGetData(&buf);
+ bufData += sizeof(BCRYPT_RSAKEY_BLOB);
+ ret = xmlSecBnBlobSetNodeValue(bufData, rsakey->cbPublicExp, cur, xmlSecBnBase64, 0, 1);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue",
+ xmlSecKeyDataKlassGetName(id));
+ xmlSecBufferFinalize(&buf);
+ return(-1);
+ }
+
+ xmlSecBufferFinalize(&buf);
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
+ xmlSecKeyDataType type) {
+ UNREFERENCED_PARAMETER(type);
+ xmlSecMSCngKeyDataCtxPtr ctx;
+ BCRYPT_ALG_HANDLE hAlg = 0;
+ BCRYPT_KEY_HANDLE hKey = 0;
+ int res = -1;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCngKeyDataSize), xmlSecKeyDataTypeUnknown);
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataRsaId), -1);
+ xmlSecAssert2(sizeBits > 0, -1);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_RSA_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecKeyDataGetName(data), status);
+ goto done;
+ }
+
+ status = BCryptGenerateKeyPair(
+ hAlg,
+ &hKey,
+ sizeBits,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenerateKeyPair", xmlSecKeyDataGetName(data),
+ status);
+ goto done;
+ }
+
+ /* need to finalize the key before it can be used */
+ status = BCryptFinalizeKeyPair(hKey, 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinalizeKeyPair", xmlSecKeyDataGetName(data),
+ status);
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataAdoptKey(data, hKey);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
+ goto done;
+ }
+ hKey = 0;
+
+ /* success */
+ res = 0;
+
+done:
+ if (hKey != 0) {
+ BCryptDestroyKey(hKey);
+ }
+
+ if (hAlg != 0) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataRsaKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCngKeyDataSize,
+
+ /* data */
+ xmlSecNameRSAKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefRSAKeyValue, /* const xmlChar* href; */
+ xmlSecNodeRSAKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngKeyDataRsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ xmlSecMSCngKeyDataRsaGenerate, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngKeyDataRsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngKeyDataRsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngKeyDataRsaXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngKeyDataRsaXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngKeyDataRsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngKeyDataRsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataRsaGetKlass:
+ *
+ * The MSCng RSA CertKey data klass.
+ *
+ * Returns: pointer to MSCng RSA key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataRsaGetKlass(void) {
+ return(&xmlSecMSCngKeyDataRsaKlass);
+}
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_ECDSA
+static int
+xmlSecMSCngKeyDataEcdsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCngKeyDataEcdsaId), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCngKeyDataEcdsaId), -1);
+
+ return(xmlSecMSCngKeyDataDuplicate(dst, src));
+}
+
+static xmlSecKeyDataType
+xmlSecMSCngKeyDataEcdsaGetType(xmlSecKeyDataPtr data) {
+ xmlSecMSCngKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataEcdsaId), xmlSecKeyDataTypeUnknown);
+
+ ctx = xmlSecMSCngKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, xmlSecKeyDataTypeUnknown);
+
+ if(ctx->privkey != 0) {
+ return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+ }
+
+ return(xmlSecKeyDataTypePublic);
+}
+
+static xmlSecSize
+xmlSecMSCngKeyDataEcdsaGetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataEcdsaId), 0);
+
+ return(xmlSecMSCngKeyDataGetSize(data));
+}
+
+
+static void
+xmlSecMSCngKeyDataEcdsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataEcdsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== rsa key: size = %d\n",
+ (int)xmlSecMSCngKeyDataEcdsaGetSize(data));
+}
+
+static void xmlSecMSCngKeyDataEcdsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataEcdsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<ECDSAKeyValue size=\"%d\" />\n",
+ (int)xmlSecMSCngKeyDataEcdsaGetSize(data));
+}
+
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataEcdsaKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCngKeyDataSize,
+
+ /* data */
+ xmlSecNameECDSAKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefECDSAKeyValue, /* const xmlChar* href; */
+ xmlSecNodeECDSAKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngKeyDataEcdsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngKeyDataEcdsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngKeyDataEcdsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngKeyDataEcdsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngKeyDataEcdsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataEcdsaGetKlass:
+ *
+ * The MSCng ECDSA CertKey data klass.
+ *
+ * Returns: pointer to MSCng ECDSA key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataEcdsaGetKlass(void) {
+ return(&xmlSecMSCngKeyDataEcdsaKlass);
+}
+#endif /* XMLSEC_NO_ECDSA */
diff --git a/src/mscng/ciphers.c b/src/mscng/ciphers.c
new file mode 100644
index 00000000..a4bef208
--- /dev/null
+++ b/src/mscng/ciphers.c
@@ -0,0 +1,1529 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+/**************************************************************************
+ *
+ * Internal MSCng Block cipher CTX
+ *
+ *****************************************************************************/
+typedef struct _xmlSecMSCngBlockCipherCtx xmlSecMSCngBlockCipherCtx, *xmlSecMSCngBlockCipherCtxPtr;
+
+struct _xmlSecMSCngBlockCipherCtx {
+ LPCWSTR pszAlgId;
+ BCRYPT_ALG_HANDLE hAlg;
+ BCRYPT_KEY_HANDLE hKey;
+ BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO authInfo;
+ PBYTE pbIV;
+ ULONG cbIV;
+ PBYTE pbKeyObject;
+ DWORD dwBlockLen;
+ xmlSecKeyDataId keyId;
+ xmlSecSize keySize;
+ int cbcMode;
+ int ctxInitialized;
+};
+
+#define xmlSecMSCngBlockCipherSize \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngBlockCipherCtx))
+#define xmlSecMSCngBlockCipherGetCtx(transform) \
+ ((xmlSecMSCngBlockCipherCtxPtr)(((unsigned char*)(transform)) + sizeof(xmlSecTransform)))
+
+#define xmlSecMSCngAesGcmNonceLengthInBytes 12
+#define xmlSecMSCngAesGcmTagLengthInBytes 16
+
+static int
+xmlSecMSCngBlockCipherCheckId(xmlSecTransformPtr transform) {
+#ifndef XMLSEC_NO_AES
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes128CbcId)) {
+ return(1);
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes192CbcId)) {
+ return(1);
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes256CbcId)) {
+ return(1);
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes128GcmId)) {
+ return(1);
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes192GcmId)) {
+ return(1);
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformAes256GcmId)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformDes3CbcId)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_DES */
+
+ return(0);
+}
+
+static int
+xmlSecMSCngBlockCipherInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngBlockCipherCtxPtr ctx;
+ NTSTATUS status;
+
+ xmlSecAssert2(xmlSecMSCngBlockCipherCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngBlockCipherSize), -1);
+
+ ctx = xmlSecMSCngBlockCipherGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngBlockCipherCtx));
+
+#ifndef XMLSEC_NO_AES
+ if(transform->id == xmlSecMSCngTransformAes128CbcId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 16;
+ ctx->cbcMode = 1;
+ } else if(transform->id == xmlSecMSCngTransformAes192CbcId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 24;
+ ctx->cbcMode = 1;
+ } else if(transform->id == xmlSecMSCngTransformAes256CbcId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 32;
+ ctx->cbcMode = 1;
+ } else if(transform->id == xmlSecMSCngTransformAes128GcmId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 16;
+ ctx->cbcMode = 0;
+ } else if(transform->id == xmlSecMSCngTransformAes192GcmId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 24;
+ ctx->cbcMode = 0;
+ } else if(transform->id == xmlSecMSCngTransformAes256GcmId) {
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+ ctx->keySize = 32;
+ ctx->cbcMode = 0;
+ } else
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+ if(transform->id == xmlSecMSCngTransformDes3CbcId) {
+ ctx->pszAlgId = BCRYPT_3DES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataDesId;
+ ctx->keySize = 24;
+ ctx->cbcMode = 1;
+ } else
+#endif /* XMLSEC_NO_DES */
+
+ {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &ctx->hAlg,
+ ctx->pszAlgId,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ if(ctx->cbcMode) {
+ status = BCryptSetProperty(ctx->hAlg,
+ BCRYPT_CHAINING_MODE,
+ (PUCHAR)BCRYPT_CHAIN_MODE_CBC,
+ sizeof(BCRYPT_CHAIN_MODE_CBC),
+ 0);
+ } else {
+ status = BCryptSetProperty(ctx->hAlg,
+ BCRYPT_CHAINING_MODE,
+ (PUCHAR)BCRYPT_CHAIN_MODE_GCM,
+ sizeof(BCRYPT_CHAIN_MODE_GCM),
+ 0);
+ }
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptSetProperty", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ctx->ctxInitialized = 0;
+
+ return(0);
+}
+
+static void
+xmlSecMSCngBlockCipherFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngBlockCipherCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngBlockCipherCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngBlockCipherSize));
+
+ ctx = xmlSecMSCngBlockCipherGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->pbIV != NULL) {
+ xmlFree(ctx->pbIV);
+ }
+
+ if(ctx->authInfo.pbNonce != NULL) {
+ xmlFree(ctx->authInfo.pbNonce);
+ }
+ if(ctx->authInfo.pbTag != NULL) {
+ xmlFree(ctx->authInfo.pbTag);
+ }
+ if(ctx->authInfo.pbMacContext != NULL) {
+ xmlFree(ctx->authInfo.pbMacContext);
+ }
+
+ if(ctx->hKey != NULL) {
+ BCryptDestroyKey(ctx->hKey);
+ }
+
+ if(ctx->pbKeyObject != NULL) {
+ xmlFree(ctx->pbKeyObject);
+ }
+
+ if(ctx->hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngBlockCipherCtx));
+}
+
+static int
+xmlSecMSCngBlockCipherSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecMSCngBlockCipherCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngBlockCipherCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngBlockCipherSize), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ ctx = xmlSecMSCngBlockCipherGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hAlg != 0, -1);
+
+ keyReq->keyId = ctx->keyId;
+ keyReq->keyType = xmlSecKeyDataTypeSymmetric;
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ keyReq->keyUsage = xmlSecKeyUsageEncrypt;
+ } else {
+ keyReq->keyUsage = xmlSecKeyUsageDecrypt;
+ }
+
+ keyReq->keyBitsSize = 8 * ctx->keySize;
+ return(0);
+}
+
+static int
+xmlSecMSCngBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngBlockCipherCtxPtr ctx;
+ xmlSecBufferPtr buffer;
+ xmlSecBuffer blob;
+ BCRYPT_KEY_DATA_BLOB_HEADER* blobHeader;
+ xmlSecSize blobHeaderLen;
+ BYTE* bufData;
+ DWORD dwKeyObjectLength, bytesWritten;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngBlockCipherCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngBlockCipherSize), -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ /* get the symmetric key into bufData */
+ ctx = xmlSecMSCngBlockCipherGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hKey == 0, -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+ xmlSecAssert2(xmlSecKeyCheckId(key, ctx->keyId), -1);
+ xmlSecAssert2(ctx->keySize > 0, -1);
+ xmlSecAssert2(ctx->pbKeyObject == NULL, -1);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(xmlSecKeyGetValue(key));
+ xmlSecAssert2(buffer != NULL, -1);
+
+ if(xmlSecBufferGetSize(buffer) < ctx->keySize) {
+ xmlSecInvalidKeyDataSizeError(xmlSecBufferGetSize(buffer), ctx->keySize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ bufData = xmlSecBufferGetData(buffer);
+ xmlSecAssert2(bufData != NULL, -1);
+
+ /* allocate the key object */
+ dwKeyObjectLength = 0;
+ status = BCryptGetProperty(ctx->hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PUCHAR)&dwKeyObjectLength,
+ (ULONG)sizeof(DWORD),
+ &bytesWritten, 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ctx->pbKeyObject = xmlMalloc(dwKeyObjectLength);
+ if(ctx->pbKeyObject == NULL) {
+ xmlSecMallocError(dwKeyObjectLength, xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ /* prefix the key with a BCRYPT_KEY_DATA_BLOB_HEADER */
+ blobHeaderLen = sizeof(BCRYPT_KEY_DATA_BLOB_HEADER) + xmlSecBufferGetSize(buffer);
+ ret = xmlSecBufferInitialize(&blob, blobHeaderLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform), "size=%d", blobHeaderLen);
+ return(-1);
+ }
+
+ blobHeader = (BCRYPT_KEY_DATA_BLOB_HEADER*)xmlSecBufferGetData(&blob);
+ blobHeader->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
+ blobHeader->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
+ blobHeader->cbKeyData = (ULONG)xmlSecBufferGetSize(buffer);
+ memcpy(xmlSecBufferGetData(&blob) + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER),
+ bufData, xmlSecBufferGetSize(buffer));
+ xmlSecBufferSetSize(&blob, blobHeaderLen);
+
+ /* perform the actual import */
+ status = BCryptImportKey(ctx->hAlg,
+ NULL,
+ BCRYPT_KEY_DATA_BLOB,
+ &ctx->hKey,
+ ctx->pbKeyObject,
+ dwKeyObjectLength,
+ xmlSecBufferGetData(&blob),
+ (ULONG)xmlSecBufferGetSize(&blob),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKey",
+ xmlSecTransformGetName(transform), status);
+ xmlSecBufferFinalize(&blob);
+ return(-1);
+ }
+
+ xmlSecBufferFinalize(&blob);
+
+ return(0);
+}
+
+static int xmlSecMSCngCBCBlockCipherCtxInit(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+
+ NTSTATUS status;
+ int ret;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hKey != 0, -1);
+ xmlSecAssert2(ctx->ctxInitialized == 0, -1);
+ xmlSecAssert2(ctx->dwBlockLen > 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ /* iv len == block len */
+ ctx->cbIV = ctx->dwBlockLen;
+
+ if(encrypt) {
+ unsigned char* iv;
+ xmlSecSize outSize;
+
+ /* allocate space for IV */
+ outSize = xmlSecBufferGetSize(out);
+ ret = xmlSecBufferSetSize(out, outSize + ctx->dwBlockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + ctx->dwBlockLen);
+ return(-1);
+ }
+ iv = xmlSecBufferGetData(out) + outSize;
+
+ /* generate and use random iv */
+ status = BCryptGenRandom(NULL,
+ (PBYTE)iv,
+ ctx->dwBlockLen,
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenRandom", cipherName, status);
+ return(-1);
+ }
+
+ if(ctx->pbIV == NULL) {
+ ctx->pbIV = xmlMalloc(ctx->dwBlockLen);
+ }
+ if(ctx->pbIV == NULL) {
+ xmlSecMallocError(ctx->dwBlockLen, cipherName);
+ return(-1);
+ }
+
+ memcpy(ctx->pbIV, iv, ctx->dwBlockLen);
+ } else {
+ /* if we don't have enough data, exit and hope that
+ * we'll have iv next time */
+ if(xmlSecBufferGetSize(in) < XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen)) {
+ return(0);
+ }
+ xmlSecAssert2(xmlSecBufferGetData(in) != NULL, -1);
+
+ /* set iv */
+ ctx->pbIV = xmlMalloc(ctx->dwBlockLen);
+ if(ctx->pbIV == NULL) {
+ xmlSecMallocError(ctx->dwBlockLen, cipherName);
+ return(-1);
+ }
+ memcpy(ctx->pbIV, xmlSecBufferGetData(in), ctx->dwBlockLen);
+
+ /* and remove from input */
+ ret = xmlSecBufferRemoveHead(in, ctx->dwBlockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", ctx->dwBlockLen);
+ return(-1);
+
+ }
+ }
+
+ ctx->ctxInitialized = 1;
+ return(0);
+}
+
+static int xmlSecMSCngGCMBlockCipherCtxInit(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt, int last,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+
+ NTSTATUS status;
+ int ret;
+ xmlSecByte *bufferPtr;
+ xmlSecSize bufferSize;
+ DWORD bytesRead;
+ BCRYPT_AUTH_TAG_LENGTHS_STRUCT authTagLengths;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hKey != 0, -1);
+ xmlSecAssert2(ctx->ctxInitialized == 0, -1);
+ xmlSecAssert2(ctx->dwBlockLen > 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ /* Check that we haven't already allocated space for the nonce. Might
+ * happen if the context is initialised more that once */
+ if(ctx->authInfo.pbNonce == NULL) {
+ ctx->authInfo.pbNonce = xmlMalloc(xmlSecMSCngAesGcmNonceLengthInBytes);
+ if(ctx->authInfo.pbNonce == NULL) {
+ xmlSecMallocError(xmlSecMSCngAesGcmNonceLengthInBytes, cipherName);
+ return(-1);
+ }
+ }
+ ctx->authInfo.cbNonce = xmlSecMSCngAesGcmNonceLengthInBytes;
+
+ /* Tag length is 128 bits */
+ /* See http://www.w3.org/TR/xmlenc-core1/#sec-AES-GCM */
+ if(ctx->authInfo.pbTag == NULL) {
+ ctx->authInfo.pbTag = xmlMalloc(xmlSecMSCngAesGcmTagLengthInBytes);
+ if(ctx->authInfo.pbTag == NULL) {
+ xmlSecMallocError(xmlSecMSCngAesGcmTagLengthInBytes, cipherName);
+ return(-1);
+ }
+ }
+ memset(ctx->authInfo.pbTag, 0, xmlSecMSCngAesGcmTagLengthInBytes);
+ ctx->authInfo.cbTag = xmlSecMSCngAesGcmTagLengthInBytes;
+
+ if(last == 0) {
+ /* Need some working buffers */
+
+ /* iv len == block len */
+ if(ctx->pbIV == NULL) {
+ ctx->pbIV = xmlMalloc(ctx->dwBlockLen);
+ if(ctx->pbIV == NULL) {
+ xmlSecMallocError(ctx->dwBlockLen, cipherName);
+ return(-1);
+ }
+ }
+ ctx->cbIV = ctx->dwBlockLen;
+ memset(ctx->pbIV, 0, ctx->dwBlockLen);
+
+ /* Setup an empty MAC context if we're chaining calls */
+ status = BCryptGetProperty(ctx->hAlg,
+ BCRYPT_AUTH_TAG_LENGTH,
+ (PUCHAR)&authTagLengths,
+ (ULONG)sizeof(authTagLengths),
+ &bytesRead,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", cipherName, status);
+ return(-1);
+ }
+
+ if(ctx->authInfo.pbMacContext == NULL) {
+ ctx->authInfo.pbMacContext = xmlMalloc(authTagLengths.dwMaxLength);
+ if(ctx->authInfo.pbMacContext == NULL) {
+ xmlSecMallocError(authTagLengths.dwMaxLength, cipherName);
+ return(-1);
+ }
+ }
+ ctx->authInfo.cbMacContext = authTagLengths.dwMaxLength;
+ memset(ctx->authInfo.pbMacContext, 0, authTagLengths.dwMaxLength);
+ ctx->authInfo.dwFlags |= BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG;
+ } else {
+ ctx->pbIV = NULL;
+ ctx->cbIV = 0;
+ }
+
+ if(encrypt) {
+
+ /* allocate space for nonce in the output buffer - it is 96 bits for GCM mode */
+ /* See http://www.w3.org/TR/xmlenc-core1/#sec-AES-GCM */
+ bufferSize = xmlSecBufferGetSize(out);
+ ret = xmlSecBufferSetSize(out, bufferSize + xmlSecMSCngAesGcmNonceLengthInBytes);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", bufferSize + xmlSecMSCngAesGcmNonceLengthInBytes);
+ return(-1);
+ }
+ bufferPtr = xmlSecBufferGetData(out) + bufferSize;
+
+ /* generate and use random nonce */
+ status = BCryptGenRandom(NULL,
+ (PBYTE)bufferPtr,
+ xmlSecMSCngAesGcmNonceLengthInBytes,
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenRandom", cipherName, status);
+ return(-1);
+ }
+ /* copy the nonce into the padding info */
+ memcpy(ctx->authInfo.pbNonce, bufferPtr, xmlSecMSCngAesGcmNonceLengthInBytes);
+
+ } else {
+ /* if we don't have enough data, exit and hope that
+ we'll have the nonce next time */
+ bufferSize = xmlSecBufferGetSize(in);
+ if(bufferSize < xmlSecMSCngAesGcmNonceLengthInBytes) {
+ return(0);
+ }
+
+ bufferPtr = xmlSecBufferGetData(in);
+
+ xmlSecAssert2(bufferPtr != NULL, -1);
+
+ /* set nonce */
+ memcpy(ctx->authInfo.pbNonce, bufferPtr, xmlSecMSCngAesGcmNonceLengthInBytes);
+
+ /* remove nonce from input */
+ ret = xmlSecBufferRemoveHead(in, xmlSecMSCngAesGcmNonceLengthInBytes);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", xmlSecMSCngAesGcmNonceLengthInBytes);
+ return(-1);
+ }
+ }
+
+ ctx->ctxInitialized = 1;
+ return(0);
+}
+
+static int
+xmlSecMSCngBlockCipherCtxInit(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt, int last,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+ NTSTATUS status;
+ DWORD dwBlockLenLen;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hKey != 0, -1);
+ xmlSecAssert2(ctx->hAlg != 0, -1);
+ xmlSecAssert2(ctx->ctxInitialized == 0, -1);
+
+ /* Get the cipher block length */
+ dwBlockLenLen = sizeof(DWORD);
+ status = BCryptGetProperty(ctx->hAlg,
+ BCRYPT_BLOCK_LENGTH,
+ (PUCHAR)&ctx->dwBlockLen,
+ sizeof(ctx->dwBlockLen),
+ &dwBlockLenLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", cipherName, status);
+ return(-1);
+ }
+
+ xmlSecAssert2(ctx->dwBlockLen > 0, -1);
+
+ if(ctx->cbcMode) {
+ return xmlSecMSCngCBCBlockCipherCtxInit(ctx, in, out, encrypt,
+ cipherName, transformCtx);
+ } else {
+ return xmlSecMSCngGCMBlockCipherCtxInit(ctx, in, out, encrypt, last,
+ cipherName, transformCtx);
+ }
+}
+
+static int
+xmlSecMSCngCBCBlockCipherCtxUpdate(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecSize inSize, inBlocks, outSize;
+ unsigned char* outBuf;
+ unsigned char* inBuf;
+ DWORD dwCLen;
+ NTSTATUS status;
+ int ret;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->ctxInitialized != 0, -1);
+ xmlSecAssert2(ctx->dwBlockLen > 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ inSize = xmlSecBufferGetSize(in);
+ outSize = xmlSecBufferGetSize(out);
+
+ if(inSize < XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen)) {
+ return(0);
+ }
+
+ if(encrypt) {
+ inBlocks = inSize / XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen);
+ } else {
+ /* we want to have the last block in the input buffer
+ * for padding check */
+ inBlocks = (inSize - 1) / XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen);
+ }
+ inSize = inBlocks * XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen);
+
+ /* we write out the input size plus maybe one block */
+ ret = xmlSecBufferSetMaxSize(out, outSize + inSize + ctx->dwBlockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + inSize + ctx->dwBlockLen);
+ return(-1);
+ }
+ outBuf = xmlSecBufferGetData(out) + outSize;
+ inBuf = xmlSecBufferGetData(in);
+ xmlSecAssert2(inBuf != NULL, -1);
+
+ dwCLen = (DWORD)inSize;
+ if(encrypt) {
+ status = BCryptEncrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ NULL,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inSize,
+ &dwCLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have encrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptEncrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+ } else {
+ status = BCryptDecrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ NULL,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inSize,
+ &dwCLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have decrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptDecrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+ }
+
+ /* set correct output buffer size */
+ ret = xmlSecBufferSetSize(out, outSize + inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName, "size=%d",
+ outSize + inSize);
+ return(-1);
+ }
+
+ /* remove the processed block from input */
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d",
+ inSize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngGCMBlockCipherCtxUpdate(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt, int last,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+
+ NTSTATUS status;
+ xmlSecSize inSize, outSize;
+ xmlSecByte *inBuf, *outBuf;
+ DWORD dwCLen;
+ int ret;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->ctxInitialized != 0, -1);
+ xmlSecAssert2(ctx->dwBlockLen > 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ if(last != 0) {
+ /* We handle everything in finalize for the last block of data */
+ return(0);
+ }
+
+ inBuf = xmlSecBufferGetData(in);
+ xmlSecAssert2(inBuf != NULL, -1);
+
+ if(xmlSecBufferGetSize(in) < ctx->dwBlockLen) {
+ return 0;
+ }
+
+ if(encrypt) {
+ /* Round to the block size. We will finalize this later */
+ inSize = (xmlSecBufferGetSize(in) / XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen)) * XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen);
+ } else {
+ /* If we've been called here, we know there is more data
+ * to come, but we don't know how much. The spec tells us that
+ * the tag is the last 16 bytes of the data when decrypting, so to make sure
+ * we don't try to decrypt it, we leave at least 16 bytes in the buffer
+ * until we know we're processing the last one */
+ inSize = ((xmlSecBufferGetSize(in) - xmlSecMSCngAesGcmTagLengthInBytes) / XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen)) * XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen);
+ if (inSize < ctx->dwBlockLen) {
+ return 0;
+ }
+ }
+
+ outSize = xmlSecBufferGetSize(out);
+ ret = xmlSecBufferSetMaxSize(out, outSize + inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + inSize);
+ return(-1);
+ }
+
+ outBuf = xmlSecBufferGetData(out) + outSize;
+
+ dwCLen = 0;
+ if(encrypt) {
+ status = BCryptEncrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ &ctx->authInfo,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inSize,
+ &dwCLen,
+ 0);
+
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have encrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptEncrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+
+ } else {
+ status = BCryptDecrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ &ctx->authInfo,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inSize,
+ &dwCLen,
+ 0);
+
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have decrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptDecrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+ }
+
+ /* set correct output buffer size */
+ ret = xmlSecBufferSetSize(out, outSize + dwCLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName, "size=%d",
+ outSize + dwCLen);
+ return(-1);
+ }
+
+ /* remove the processed data from input */
+ ret = xmlSecBufferRemoveHead(in, dwCLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d",
+ dwCLen);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngBlockCipherCtxUpdate(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt, int last,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if(ctx->cbcMode) {
+ return xmlSecMSCngCBCBlockCipherCtxUpdate(ctx, in, out, encrypt,
+ cipherName, transformCtx);
+ } else {
+ return xmlSecMSCngGCMBlockCipherCtxUpdate(ctx, in, out, encrypt, last,
+ cipherName, transformCtx);
+ }
+}
+
+static int
+xmlSecMSCngCBCBlockCipherCtxFinal(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecSize inSize, outSize;
+ int outLen;
+ unsigned char* inBuf;
+ unsigned char* outBuf;
+ DWORD dwCLen;
+ NTSTATUS status;
+ int ret;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ inSize = xmlSecBufferGetSize(in);
+ outSize = xmlSecBufferGetSize(out);
+
+ if(encrypt != 0) {
+ xmlSecAssert2(inSize < XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen), -1);
+
+ /* create padding */
+ ret = xmlSecBufferSetMaxSize(in, ctx->dwBlockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", ctx->dwBlockLen);
+ return(-1);
+ }
+ inBuf = xmlSecBufferGetData(in);
+
+ /* create random padding */
+ if(XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen) > (inSize + 1)) {
+ status = BCryptGenRandom(NULL,
+ (PBYTE) inBuf + inSize,
+ (ULONG)(ctx->dwBlockLen - inSize - 1),
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", cipherName, status);
+ return(-1);
+ }
+ }
+ inBuf[ctx->dwBlockLen - 1] = (unsigned char)(ctx->dwBlockLen - inSize);
+ inSize = ctx->dwBlockLen;
+ } else {
+ if(inSize != XMLSEC_SIZE_BAD_CAST(ctx->dwBlockLen)) {
+ xmlSecInvalidSizeError("Input data", inSize, ctx->dwBlockLen, cipherName);
+ return(-1);
+ }
+ inBuf = xmlSecBufferGetData(in);
+ }
+
+ /* process last block */
+ ret = xmlSecBufferSetMaxSize(out, outSize + 2 * ctx->dwBlockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName, "size=%d",
+ outSize + 2 * ctx->dwBlockLen);
+ return(-1);
+ }
+
+ outBuf = xmlSecBufferGetData(out) + outSize;
+
+ dwCLen = (ULONG)inSize;
+ if(encrypt) {
+ status = BCryptEncrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ NULL,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)(inSize + ctx->dwBlockLen),
+ &dwCLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have encrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptEncrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+ } else {
+ status = BCryptDecrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inSize,
+ NULL,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inSize,
+ &dwCLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have decrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inSize) {
+ xmlSecInternalError2("BCryptDecrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+ }
+
+ if(encrypt == 0) {
+ /* check padding */
+ if(inSize < outBuf[ctx->dwBlockLen - 1]) {
+ xmlSecInvalidSizeLessThanError("Input data padding", inSize,
+ outBuf[ctx->dwBlockLen - 1], cipherName);
+ return(-1);
+ }
+ outLen = (int)(inSize - outBuf[ctx->dwBlockLen - 1]);
+ } else {
+ outLen = (int)inSize;
+ }
+
+ /* set correct output buffer size */
+ ret = xmlSecBufferSetSize(out, outSize + outLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName, "size=%d",
+ outSize + outLen);
+ return(-1);
+ }
+
+ /* remove the processed block from input */
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d",
+ inSize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngGCMBlockCipherCtxFinal(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx)
+{
+ xmlSecByte *inBuf, *outBuf;
+ xmlSecSize inBufSize, outBufSize, outLen;
+ DWORD dwCLen;
+ int ret;
+ NTSTATUS status;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ ctx->authInfo.dwFlags &= ~BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG; /* clear chaining flag */
+
+ outBufSize = xmlSecBufferGetSize(out);
+ inBufSize = xmlSecBufferGetSize(in);
+ inBuf = xmlSecBufferGetData(in);
+
+ if(encrypt) {
+ ret = xmlSecBufferSetMaxSize(out,
+ outBufSize + inBufSize + xmlSecMSCngAesGcmTagLengthInBytes); /* add space for the tag */
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outBufSize + inBufSize + xmlSecMSCngAesGcmTagLengthInBytes);
+ return(-1);
+ }
+
+ outBuf = xmlSecBufferGetData(out) + outBufSize;
+
+ status = BCryptEncrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inBufSize,
+ &ctx->authInfo,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inBufSize,
+ &dwCLen,
+ 0);
+
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have encrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inBufSize) {
+ xmlSecInternalError2("BCryptEncrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+
+ /* Now add the tag at the end of the buffer */
+ memcpy(outBuf + inBufSize, ctx->authInfo.pbTag, xmlSecMSCngAesGcmTagLengthInBytes);
+
+ outLen = inBufSize + xmlSecMSCngAesGcmTagLengthInBytes;
+
+ } else {
+ /* Get the tag */
+ memcpy(ctx->authInfo.pbTag, inBuf + inBufSize - xmlSecMSCngAesGcmTagLengthInBytes,
+ xmlSecMSCngAesGcmTagLengthInBytes);
+
+ /* remove the tag from the buffer */
+ ret = xmlSecBufferRemoveTail(in, xmlSecMSCngAesGcmTagLengthInBytes);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveTail", cipherName,
+ "size=%d", xmlSecMSCngAesGcmTagLengthInBytes);
+ return(-1);
+ }
+
+ inBuf = xmlSecBufferGetData(in);
+ inBufSize = xmlSecBufferGetSize(in);
+
+ ret = xmlSecBufferSetMaxSize(out, outBufSize + inBufSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outBufSize + inBufSize);
+ return(-1);
+ }
+
+ outBuf = xmlSecBufferGetData(out) + outBufSize;
+
+ status = BCryptDecrypt(ctx->hKey,
+ inBuf,
+ (ULONG)inBufSize,
+ &ctx->authInfo,
+ ctx->pbIV,
+ ctx->cbIV,
+ outBuf,
+ (ULONG)inBufSize,
+ &dwCLen,
+ 0);
+
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", cipherName, status);
+ return(-1);
+ }
+
+ /* check if we really have decrypted the numbers of bytes that we
+ * requested */
+ if(dwCLen != inBufSize) {
+ xmlSecInternalError2("BCryptDecrypt", cipherName, "size=%ld",
+ dwCLen);
+ return(-1);
+ }
+
+ outLen = inBufSize;
+ }
+
+ /* set correct output buffer size */
+ ret = xmlSecBufferSetSize(out, outBufSize + outLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName, "size=%d",
+ outBufSize + outLen);
+ return(-1);
+ }
+
+ /* remove the processed block from input */
+ ret = xmlSecBufferRemoveHead(in, inBufSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d",
+ inBufSize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngBlockCipherCtxFinal(xmlSecMSCngBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in, xmlSecBufferPtr out, int encrypt,
+ const xmlChar* cipherName, xmlSecTransformCtxPtr transformCtx)
+{
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->ctxInitialized != 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ if(ctx->cbcMode) {
+ return xmlSecMSCngCBCBlockCipherCtxFinal(ctx, in, out, encrypt,
+ cipherName, transformCtx);
+ } else {
+ return xmlSecMSCngGCMBlockCipherCtxFinal(ctx, in, out, encrypt,
+ cipherName, transformCtx);
+ }
+}
+
+static int
+xmlSecMSCngBlockCipherExecute(xmlSecTransformPtr transform, int last,
+ xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngBlockCipherCtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ int ret, encrypt;
+
+ xmlSecAssert2(xmlSecMSCngBlockCipherCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngBlockCipherSize), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ in = &(transform->inBuf);
+ out = &(transform->outBuf);
+
+ ctx = xmlSecMSCngBlockCipherGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ /* This should only be done once, before the context has been initialised */
+ BCRYPT_INIT_AUTH_MODE_INFO(ctx->authInfo);
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if(transform->status == xmlSecTransformStatusWorking) {
+
+ encrypt = (transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0;
+
+ if(ctx->ctxInitialized == 0) {
+ ret = xmlSecMSCngBlockCipherCtxInit(ctx,
+ in,
+ out,
+ encrypt,
+ last,
+ xmlSecTransformGetName(transform),
+ transformCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngBlockCipherCtxInit",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ }
+ if((ctx->ctxInitialized == 0) && (last != 0)) {
+ xmlSecInvalidDataError("not enough data to initialize transform",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ if(ctx->ctxInitialized != 0) {
+ ret = xmlSecMSCngBlockCipherCtxUpdate(ctx, in, out,
+ encrypt,
+ last,
+ xmlSecTransformGetName(transform), transformCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngBlockCipherCtxUpdate",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ }
+
+ if(last) {
+ ret = xmlSecMSCngBlockCipherCtxFinal(ctx, in, out,
+ encrypt,
+ xmlSecTransformGetName(transform), transformCtx);
+
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngBlockCipherCtxFinal",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusFinished;
+ }
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ /* the only way we can get here is if there is no input */
+ xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
+ } else if(transform->status == xmlSecTransformStatusNone) {
+ /* the only way we can get here is if there is not enough data in the input */
+ xmlSecAssert2(last == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+#ifndef XMLSEC_NO_AES
+
+static xmlSecTransformKlass xmlSecMSCngAes128CbcKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes128Cbc, /* const xmlChar* name; */
+ xmlSecHrefAes128Cbc, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes128CbcGetKlass:
+ *
+ * AES 128 CBC encryption transform klass.
+ *
+ * Returns: pointer to AES 128 CBC encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes128CbcGetKlass(void) {
+ return(&xmlSecMSCngAes128CbcKlass);
+}
+
+static xmlSecTransformKlass xmlSecMSCngAes192CbcKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes192Cbc, /* const xmlChar* name; */
+ xmlSecHrefAes192Cbc, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes192CbcGetKlass:
+ *
+ * AES 192 CBC encryption transform klass.
+ *
+ * Returns: pointer to AES 192 CBC encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes192CbcGetKlass(void) {
+ return(&xmlSecMSCngAes192CbcKlass);
+}
+
+static xmlSecTransformKlass xmlSecMSCngAes256CbcKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes256Cbc, /* const xmlChar* name; */
+ xmlSecHrefAes256Cbc, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes256CbcGetKlass:
+ *
+ * AES 256 CBC encryption transform klass.
+ *
+ * Returns: pointer to AES 256 CBC encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes256CbcGetKlass(void) {
+ return(&xmlSecMSCngAes256CbcKlass);
+}
+
+static xmlSecTransformKlass xmlSecMSCngAes128GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes128Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes128Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes128GcmGetKlass:
+ *
+ * AES 128 GCM encryption transform klass.
+ *
+ * Returns: pointer to AES 128 GCM encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes128GcmGetKlass(void) {
+ return(&xmlSecMSCngAes128GcmKlass);
+}
+
+static xmlSecTransformKlass xmlSecMSCngAes192GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes192Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes192Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes192GcmGetKlass:
+ *
+ * AES 192 GCM encryption transform klass.
+ *
+ * Returns: pointer to AES 192 GCM encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes192GcmGetKlass(void) {
+ return(&xmlSecMSCngAes192GcmKlass);
+}
+
+
+static xmlSecTransformKlass xmlSecMSCngAes256GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes256Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes256Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformAes256GcmGetKlass:
+ *
+ * AES 256 GCM encryption transform klass.
+ *
+ * Returns: pointer to AES 256 GCM encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformAes256GcmGetKlass(void) {
+ return(&xmlSecMSCngAes256GcmKlass);
+}
+
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+
+static xmlSecTransformKlass xmlSecMSCngDes3CbcKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngBlockCipherSize, /* size_t objSize */
+
+ xmlSecNameDes3Cbc, /* const xmlChar* name; */
+ xmlSecHrefDes3Cbc, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod,/* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformDes3CbcGetKlass:
+ *
+ * Triple DES CBC encryption transform klass.
+ *
+ * Returns: pointer to Triple DES encryption transform.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformDes3CbcGetKlass(void) {
+ return(&xmlSecMSCngDes3CbcKlass);
+}
+
+#endif /* XMLSEC_NO_DES */
diff --git a/src/mscng/crypto.c b/src/mscng/crypto.c
new file mode 100644
index 00000000..15c7de9d
--- /dev/null
+++ b/src/mscng/crypto.c
@@ -0,0 +1,463 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Stable
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/dl.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/private.h>
+
+#include <xmlsec/mscng/app.h>
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/x509.h>
+
+static xmlSecCryptoDLFunctionsPtr gXmlSecMSCngFunctions = NULL;
+
+/**
+ * xmlSecCryptoGetFunctions_mscng:
+ *
+ * Gets the pointer to xmlsec-mscng functions table.
+ *
+ * Returns: the xmlsec-mscng functions table or NULL if an error occurs.
+ */
+xmlSecCryptoDLFunctionsPtr
+xmlSecCryptoGetFunctions_mscng(void) {
+ static xmlSecCryptoDLFunctions functions;
+
+ if(gXmlSecMSCngFunctions != NULL) {
+ return(gXmlSecMSCngFunctions);
+ }
+
+ memset(&functions, 0, sizeof(functions));
+ gXmlSecMSCngFunctions = &functions;
+
+ /********************************************************************
+ *
+ * Crypto Init/shutdown
+ *
+ ********************************************************************/
+ gXmlSecMSCngFunctions->cryptoInit = xmlSecMSCngInit;
+ gXmlSecMSCngFunctions->cryptoShutdown = xmlSecMSCngShutdown;
+ gXmlSecMSCngFunctions->cryptoKeysMngrInit = xmlSecMSCngKeysMngrInit;
+
+ /********************************************************************
+ *
+ * Key data ids
+ *
+ ********************************************************************/
+#ifndef XMLSEC_NO_AES
+ gXmlSecMSCngFunctions->keyDataAesGetKlass = xmlSecMSCngKeyDataAesGetKlass;
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+ gXmlSecMSCngFunctions->keyDataDesGetKlass = xmlSecMSCngKeyDataDesGetKlass;
+#endif /* XMLSEC_NO_DES */
+
+#ifndef XMLSEC_NO_DSA
+ gXmlSecMSCngFunctions->keyDataDsaGetKlass = xmlSecMSCngKeyDataDsaGetKlass;
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_ECDSA
+ gXmlSecMSCngFunctions->keyDataEcdsaGetKlass = xmlSecMSCngKeyDataEcdsaGetKlass;
+#endif /* XMLSEC_NO_ECDSA */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->keyDataGost2001GetKlass = xmlSecMSCngKeyDataGost2001GetKlass;
+ gXmlSecMSCngFunctions->keyDataGostR3410_2012GetKlass = xmlSecMSCngKeyDataGostR3410_2012GetKlass;
+#endif /* XMLSEC_NO_GOST */
+
+#ifndef XMLSEC_NO_HMAC
+ gXmlSecMSCngFunctions->keyDataHmacGetKlass = xmlSecMSCngKeyDataHmacGetKlass;
+#endif /* XMLSEC_NO_HMAC */
+
+#ifndef XMLSEC_NO_RSA
+ gXmlSecMSCngFunctions->keyDataRsaGetKlass = xmlSecMSCngKeyDataRsaGetKlass;
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_X509
+ gXmlSecMSCngFunctions->keyDataX509GetKlass = xmlSecMSCngKeyDataX509GetKlass;
+ gXmlSecMSCngFunctions->keyDataRawX509CertGetKlass = xmlSecMSCngKeyDataRawX509CertGetKlass;
+#endif /* XMLSEC_NO_X509 */
+
+ /********************************************************************
+ *
+ * Key data store ids
+ *
+ ********************************************************************/
+#ifndef XMLSEC_NO_X509
+ gXmlSecMSCngFunctions->x509StoreGetKlass = xmlSecMSCngX509StoreGetKlass;
+#endif /* XMLSEC_NO_X509 */
+
+ /********************************************************************
+ *
+ * Crypto transforms ids
+ *
+ ********************************************************************/
+
+ /******************************* AES ********************************/
+#ifndef XMLSEC_NO_AES
+ gXmlSecMSCngFunctions->transformAes128CbcGetKlass = xmlSecMSCngTransformAes128CbcGetKlass;
+ gXmlSecMSCngFunctions->transformAes192CbcGetKlass = xmlSecMSCngTransformAes192CbcGetKlass;
+ gXmlSecMSCngFunctions->transformAes256CbcGetKlass = xmlSecMSCngTransformAes256CbcGetKlass;
+ gXmlSecMSCngFunctions->transformAes128GcmGetKlass = xmlSecMSCngTransformAes128GcmGetKlass;
+ gXmlSecMSCngFunctions->transformAes192GcmGetKlass = xmlSecMSCngTransformAes192GcmGetKlass;
+ gXmlSecMSCngFunctions->transformAes256GcmGetKlass = xmlSecMSCngTransformAes256GcmGetKlass;
+ gXmlSecMSCngFunctions->transformKWAes128GetKlass = xmlSecMSCngTransformKWAes128GetKlass;
+ gXmlSecMSCngFunctions->transformKWAes192GetKlass = xmlSecMSCngTransformKWAes192GetKlass;
+ gXmlSecMSCngFunctions->transformKWAes256GetKlass = xmlSecMSCngTransformKWAes256GetKlass;
+#endif /* XMLSEC_NO_AES */
+
+ /******************************* DES ********************************/
+#ifndef XMLSEC_NO_DES
+ gXmlSecMSCngFunctions->transformDes3CbcGetKlass = xmlSecMSCngTransformDes3CbcGetKlass;
+ gXmlSecMSCngFunctions->transformKWDes3GetKlass = xmlSecMSCngTransformKWDes3GetKlass;
+#endif /* XMLSEC_NO_DES */
+
+ /******************************* DSA ********************************/
+#ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecMSCngFunctions->transformDsaSha1GetKlass = xmlSecMSCngTransformDsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformDsaSha256GetKlass = xmlSecMSCngTransformDsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#endif /* XMLSEC_NO_DSA */
+
+ /******************************* ECDSA ********************************/
+#ifndef XMLSEC_NO_ECDSA
+
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecMSCngFunctions->transformEcdsaSha1GetKlass = xmlSecMSCngTransformEcdsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformEcdsaSha224GetKlass = xmlSecMSCngTransformEcdsaSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecMSCngFunctions->transformEcdsaSha256GetKlass = xmlSecMSCngTransformEcdsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ gXmlSecMSCngFunctions->transformEcdsaSha384GetKlass = xmlSecMSCngTransformEcdsaSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ gXmlSecMSCngFunctions->transformEcdsaSha512GetKlass = xmlSecMSCngTransformEcdsaSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
+
+ /******************************* GOST ********************************/
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformGost2001GostR3411_94GetKlass = xmlSecMSCngTransformGost2001GostR3411_94GetKlass;
+ gXmlSecMSCngFunctions->transformGostR3410_2012GostR3411_2012_256GetKlass = xmlSecMSCngTransformGostR3410_2012GostR3411_2012_256GetKlass;
+ gXmlSecMSCngFunctions->transformGostR3410_2012GostR3411_2012_512GetKlass = xmlSecMSCngTransformGostR3410_2012GostR3411_2012_512GetKlass;
+#endif /* XMLSEC_NO_GOST */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformGostR3411_94GetKlass = xmlSecMSCngTransformGostR3411_94GetKlass;
+ gXmlSecMSCngFunctions->transformGostR3411_2012_256GetKlass = xmlSecMSCngTransformGostR3411_2012_256GetKlass;
+ gXmlSecMSCngFunctions->transformGostR3411_2012_512GetKlass = xmlSecMSCngTransformGostR3411_2012_512GetKlass;
+#endif /* XMLSEC_NO_GOST */
+
+ /******************************* HMAC ********************************/
+#ifndef XMLSEC_NO_HMAC
+
+#ifndef XMLSEC_NO_MD5
+ gXmlSecMSCngFunctions->transformHmacMd5GetKlass = xmlSecMSCngTransformHmacMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecMSCngFunctions->transformHmacSha1GetKlass = xmlSecMSCngTransformHmacSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecMSCngFunctions->transformHmacSha256GetKlass = xmlSecMSCngTransformHmacSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ gXmlSecMSCngFunctions->transformHmacSha384GetKlass = xmlSecMSCngTransformHmacSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ gXmlSecMSCngFunctions->transformHmacSha512GetKlass = xmlSecMSCngTransformHmacSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformHmacRipemd160GetKlass = xmlSecMSCngTransformHmacRipemd160GetKlass;
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformHmacMd5GetKlass = xmlSecMSCngTransformHmacMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+#endif /* XMLSEC_NO_HMAC */
+
+ /******************************* RIPEMD160 ********************************/
+#ifdef XMLSEC_MSCNG_TODO
+ gXmlSecMSCngFunctions->transformRipemd160GetKlass = xmlSecMSCngTransformRipemd160GetKlass;
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+ /******************************* RSA ********************************/
+#ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+ gXmlSecMSCngFunctions->transformRsaMd5GetKlass = xmlSecMSCngTransformRsaMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecMSCngFunctions->transformRsaSha1GetKlass = xmlSecMSCngTransformRsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecMSCngFunctions->transformRsaSha256GetKlass = xmlSecMSCngTransformRsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ gXmlSecMSCngFunctions->transformRsaSha384GetKlass = xmlSecMSCngTransformRsaSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ gXmlSecMSCngFunctions->transformRsaSha512GetKlass = xmlSecMSCngTransformRsaSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
+ gXmlSecMSCngFunctions->transformRsaPkcs1GetKlass = xmlSecMSCngTransformRsaPkcs1GetKlass;
+ gXmlSecMSCngFunctions->transformRsaOaepGetKlass = xmlSecMSCngTransformRsaOaepGetKlass;
+
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_MD5
+ gXmlSecMSCngFunctions->transformMd5GetKlass = xmlSecMSCngTransformMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+ /******************************* SHA1 ********************************/
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecMSCngFunctions->transformSha1GetKlass = xmlSecMSCngTransformSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecMSCngFunctions->transformSha256GetKlass = xmlSecMSCngTransformSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+ gXmlSecMSCngFunctions->transformSha384GetKlass = xmlSecMSCngTransformSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+ gXmlSecMSCngFunctions->transformSha512GetKlass = xmlSecMSCngTransformSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
+ /********************************************************************
+ *
+ * High level routines form xmlsec command line utility
+ *
+ ********************************************************************/
+ gXmlSecMSCngFunctions->cryptoAppInit = xmlSecMSCngAppInit;
+ gXmlSecMSCngFunctions->cryptoAppShutdown = xmlSecMSCngAppShutdown;
+ gXmlSecMSCngFunctions->cryptoAppDefaultKeysMngrInit = xmlSecMSCngAppDefaultKeysMngrInit;
+ gXmlSecMSCngFunctions->cryptoAppDefaultKeysMngrAdoptKey = xmlSecMSCngAppDefaultKeysMngrAdoptKey;
+ gXmlSecMSCngFunctions->cryptoAppDefaultKeysMngrLoad = xmlSecMSCngAppDefaultKeysMngrLoad;
+ gXmlSecMSCngFunctions->cryptoAppDefaultKeysMngrSave = xmlSecMSCngAppDefaultKeysMngrSave;
+#ifndef XMLSEC_NO_X509
+ gXmlSecMSCngFunctions->cryptoAppKeysMngrCertLoad = xmlSecMSCngAppKeysMngrCertLoad;
+ gXmlSecMSCngFunctions->cryptoAppKeysMngrCertLoadMemory = xmlSecMSCngAppKeysMngrCertLoadMemory;
+ gXmlSecMSCngFunctions->cryptoAppPkcs12Load = xmlSecMSCngAppPkcs12Load;
+ gXmlSecMSCngFunctions->cryptoAppPkcs12LoadMemory = xmlSecMSCngAppPkcs12LoadMemory;
+ gXmlSecMSCngFunctions->cryptoAppKeyCertLoad = xmlSecMSCngAppKeyCertLoad;
+ gXmlSecMSCngFunctions->cryptoAppKeyCertLoadMemory = xmlSecMSCngAppKeyCertLoadMemory;
+#endif /* XMLSEC_NO_X509 */
+ gXmlSecMSCngFunctions->cryptoAppKeyLoad = xmlSecMSCngAppKeyLoad;
+ gXmlSecMSCngFunctions->cryptoAppKeyLoadMemory = xmlSecMSCngAppKeyLoadMemory;
+ gXmlSecMSCngFunctions->cryptoAppDefaultPwdCallback = (void*)xmlSecMSCngAppGetDefaultPwdCallback();
+
+ return(gXmlSecMSCngFunctions);
+}
+
+
+/**
+ * xmlSecMSCngInit:
+ *
+ * XMLSec library specific crypto engine initialization.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngInit (void) {
+ /* Check loaded xmlsec library version */
+ if(xmlSecCheckVersionExact() != 1) {
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
+ return(-1);
+ }
+
+ /* register our klasses */
+ if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_mscng()) < 0) {
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
+ return(-1);
+ }
+ return(0);
+
+ /* TODO: if necessary do, additional initialization here */
+}
+
+/**
+ * xmlSecMSCngShutdown:
+ *
+ * XMLSec library specific crypto engine shutdown.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngShutdown(void) {
+ /* TODO: if necessary, do additional shutdown here */
+ return(0);
+}
+
+/**
+ * xmlSecMSCngGenerateRandom:
+ * @buffer: the destination buffer.
+ * @size: the numer of bytes to generate.
+ *
+ * Generates @size random bytes and puts result in @buffer
+ * (not implemented yet).
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(buffer != NULL, -1);
+ xmlSecAssert2(size > 0, -1);
+
+ ret = xmlSecBufferSetSize(buffer, size);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", size);
+ return(-1);
+ }
+
+ status = BCryptGenRandom(
+ NULL,
+ (PBYTE)xmlSecBufferGetData(buffer),
+ (ULONG)size,
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenRandom", NULL, status);
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngKeysMngrInit:
+ * @mngr: the pointer to keys manager.
+ *
+ * Adds MSCng specific key data stores in keys manager.
+ *
+ * Returns: 0 on success or a negative value otherwise.
+ */
+int
+xmlSecMSCngKeysMngrInit(xmlSecKeysMngrPtr mngr) {
+ int ret;
+ xmlSecAssert2(mngr != NULL, -1);
+
+#ifndef XMLSEC_NO_X509
+ /* create x509 store if needed */
+ if(xmlSecKeysMngrGetDataStore(mngr, xmlSecMSCngX509StoreId) == NULL) {
+ xmlSecKeyDataStorePtr x509Store;
+
+ x509Store = xmlSecKeyDataStoreCreate(xmlSecMSCngX509StoreId);
+ if(x509Store == NULL) {
+ xmlSecInternalError("xmlSecKeyDataStoreCreate(xmlSecMSCngX509StoreId)", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecKeysMngrAdoptDataStore(mngr, x509Store);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeysMngrAdoptDataStore", NULL);
+ xmlSecKeyDataStoreDestroy(x509Store);
+ return(-1);
+ }
+ }
+#endif /* XMLSEC_NO_X509 */
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngConvertUtf8ToTstr:
+ * @str: the string to convert.
+ *
+ * Converts input string from UTF8 to TSTR (locale or Unicode).
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+LPTSTR
+xmlSecMSCngConvertUtf8ToTstr(const xmlChar* str) {
+ return(xmlSecWin32ConvertUtf8ToTstr(str));
+}
+
+/**
+ * xmlSecMSCngConvertTstrToUtf8:
+ * @str: the string to convert.
+ *
+ * Converts input string from TSTR (locale or Unicode) to UTF8.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+xmlChar*
+xmlSecMSCngConvertTstrToUtf8(LPCTSTR str) {
+ return(xmlSecWin32ConvertTstrToUtf8(str));
+}
+
+/**
+ * xmlSecMSCngConvertUnicodeToUtf8:
+ * @str: the string to convert.
+ *
+ * Converts input string from Unicode to UTF8.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+xmlChar*
+xmlSecMSCngConvertUnicodeToUtf8(LPCWSTR str) {
+ return(xmlSecWin32ConvertUnicodeToUtf8(str));
+}
+
+/**
+ * xmlSecMSCngConvertUtf8ToUnicode:
+ * @str: the string to convert.
+ *
+ * Converts input string from UTF8 to Unicode.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+LPWSTR
+xmlSecMSCngConvertUtf8ToUnicode(const xmlChar* str) {
+ return(xmlSecWin32ConvertUtf8ToUnicode(str));
+}
diff --git a/src/mscng/digests.c b/src/mscng/digests.c
new file mode 100644
index 00000000..1f783dc2
--- /dev/null
+++ b/src/mscng/digests.c
@@ -0,0 +1,588 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/strings.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+typedef struct _xmlSecMSCngDigestCtx xmlSecMSCngDigestCtx, *xmlSecMSCngDigestCtxPtr;
+struct _xmlSecMSCngDigestCtx {
+ LPCWSTR pszAlgId;
+ DWORD cbHash;
+ PBYTE pbHash;
+ BCRYPT_ALG_HANDLE hAlg;
+ PBYTE pbHashObject;
+ BCRYPT_HASH_HANDLE hHash;
+};
+
+/******************************************************************************
+ *
+ * MSCng Digest transforms
+ *
+ * xmlSecMSCngDigestCtx is located after xmlSecTransform
+ *
+ *****************************************************************************/
+#define xmlSecMSCngDigestSize \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngDigestCtx))
+#define xmlSecMSCngDigestGetCtx(transform) \
+ ((xmlSecMSCngDigestCtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
+
+
+static int xmlSecMSCngDigestInitialize (xmlSecTransformPtr transform);
+static void xmlSecMSCngDigestFinalize (xmlSecTransformPtr transform);
+static int xmlSecMSCngDigestVerify (xmlSecTransformPtr transform,
+ const xmlSecByte* data,
+ xmlSecSize dataSize,
+ xmlSecTransformCtxPtr transformCtx);
+static int xmlSecMSCngDigestExecute (xmlSecTransformPtr transform,
+ int last,
+ xmlSecTransformCtxPtr transformCtx);
+static int xmlSecMSCngDigestCheckId (xmlSecTransformPtr transform);
+
+
+static int
+xmlSecMSCngDigestCheckId(xmlSecTransformPtr transform) {
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformMd5Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_MD5 */
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha1Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha256Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha384Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha512Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+ return(0);
+}
+
+static int
+xmlSecMSCngDigestInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngDigestCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngDigestCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngDigestSize), -1);
+
+ ctx = xmlSecMSCngDigestGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ /* initialize context */
+ memset(ctx, 0, sizeof(xmlSecMSCngDigestCtx));
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformMd5Id)) {
+ ctx->pszAlgId = BCRYPT_MD5_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha1Id)) {
+ ctx->pszAlgId = BCRYPT_SHA1_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha256Id)) {
+ ctx->pszAlgId = BCRYPT_SHA256_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha384Id)) {
+ ctx->pszAlgId = BCRYPT_SHA384_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformSha512Id)) {
+ ctx->pszAlgId = BCRYPT_SHA512_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+ {
+ xmlSecInvalidTransfromError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void xmlSecMSCngDigestFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngDigestCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngDigestCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngDigestSize));
+
+ ctx = xmlSecMSCngDigestGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->hAlg != 0) {
+ BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+ }
+
+ if(ctx->hHash != 0) {
+ BCryptDestroyHash(ctx->hHash);
+ }
+
+ if(ctx->pbHashObject != NULL) {
+ xmlFree(ctx->pbHashObject);
+ }
+
+ if(ctx->pbHash != NULL) {
+ xmlFree(ctx->pbHash);
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngDigestCtx));
+}
+
+static int
+xmlSecMSCngDigestVerify(xmlSecTransformPtr transform,
+ const xmlSecByte* data,
+ xmlSecSize dataSize,
+ xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngDigestCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngDigestCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngDigestSize), -1);
+ xmlSecAssert2(transform->operation == xmlSecTransformOperationVerify, -1);
+ xmlSecAssert2(transform->status == xmlSecTransformStatusFinished, -1);
+ xmlSecAssert2(data != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngDigestGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->cbHash > 0, -1);
+
+ if(dataSize != ctx->cbHash) {
+ xmlSecInvalidSizeError("Digest", dataSize, ctx->cbHash,
+ xmlSecTransformGetName(transform));
+ transform->status = xmlSecTransformStatusFail;
+ return(0);
+ }
+
+ if(memcmp(ctx->pbHash, data, ctx->cbHash) != 0) {
+ xmlSecInvalidDataError("data and digest do not match",
+ xmlSecTransformGetName(transform));
+ transform->status = xmlSecTransformStatusFail;
+ return(0);
+ }
+
+ transform->status = xmlSecTransformStatusOk;
+ return(0);
+}
+
+static int
+xmlSecMSCngDigestExecute(xmlSecTransformPtr transform,
+ int last,
+ xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngDigestCtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ NTSTATUS status;
+ int ret;
+ DWORD cbData = 0;
+ DWORD cbHashObject = 0;
+
+ xmlSecAssert2(xmlSecMSCngDigestCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngDigestSize), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ in = &(transform->inBuf);
+ xmlSecAssert2(in != NULL, -1);
+
+ out = &(transform->outBuf);
+ xmlSecAssert2(out != NULL, -1);
+
+ ctx = xmlSecMSCngDigestGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ /* open an algorithm handle */
+ status = BCryptOpenAlgorithmProvider(
+ &ctx->hAlg,
+ ctx->pszAlgId,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* calculate the size of the buffer to hold the hash object */
+ status = BCryptGetProperty(
+ ctx->hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbHashObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* allocate the hash object on the heap */
+ ctx->pbHashObject = (PBYTE)xmlMalloc(cbHashObject);
+ if(ctx->pbHashObject == NULL) {
+ xmlSecMallocError(cbHashObject, NULL);
+ return(-1);
+ }
+
+ /* calculate the length of the hash */
+ status = BCryptGetProperty(
+ ctx->hAlg,
+ BCRYPT_HASH_LENGTH,
+ (PBYTE)&ctx->cbHash,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* allocate the hash buffer on the heap */
+ ctx->pbHash = (PBYTE)xmlMalloc(ctx->cbHash);
+ if(ctx->pbHash == NULL) {
+ xmlSecMallocError(ctx->cbHash, NULL);
+ return(-1);
+ }
+
+ /* create the hash */
+ status = BCryptCreateHash(
+ ctx->hAlg,
+ &ctx->hHash,
+ ctx->pbHashObject,
+ cbHashObject,
+ NULL,
+ 0,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptCreateHash", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if(transform->status == xmlSecTransformStatusWorking) {
+ xmlSecSize inSize;
+
+ inSize = xmlSecBufferGetSize(in);
+ if(inSize > 0) {
+ /* hash some data */
+ status = BCryptHashData(
+ ctx->hHash,
+ (PBYTE)xmlSecBufferGetData(in),
+ inSize,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptHashData", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ }
+
+ if(last) {
+ /* close the hash */
+ status = BCryptFinishHash(
+ ctx->hHash,
+ ctx->pbHash,
+ ctx->cbHash,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinishHash", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ xmlSecAssert2(ctx->cbHash > 0, -1);
+
+ /* copy result to output */
+ if(transform->operation == xmlSecTransformOperationSign) {
+ ret = xmlSecBufferAppend(out, ctx->pbHash, ctx->cbHash);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ }
+ transform->status = xmlSecTransformStatusFinished;
+ }
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+#ifndef XMLSEC_NO_MD5
+/******************************************************************************
+ *
+ * MD5
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngMd5Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngDigestSize, /* size_t objSize */
+
+ xmlSecNameMd5, /* const xmlChar* name; */
+ xmlSecHrefMd5, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCngDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformMd5GetKlass:
+ *
+ * MD-5 digest transform klass.
+ *
+ * Returns: pointer to MD-5 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformMd5GetKlass(void) {
+ return(&xmlSecMSCngMd5Klass);
+}
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+/******************************************************************************
+ *
+ * SHA1
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngDigestSize, /* size_t objSize */
+
+ xmlSecNameSha1, /* const xmlChar* name; */
+ xmlSecHrefSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCngDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformSha1GetKlass:
+ *
+ * SHA-1 digest transform klass.
+ *
+ * Returns: pointer to SHA-1 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformSha1GetKlass(void) {
+ return(&xmlSecMSCngSha1Klass);
+}
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/******************************************************************************
+ *
+ * SHA256
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngDigestSize, /* size_t objSize */
+
+ xmlSecNameSha256, /* const xmlChar* name; */
+ xmlSecHrefSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCngDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformSha256GetKlass:
+ *
+ * SHA-256 digest transform klass.
+ *
+ * Returns: pointer to SHA-256 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformSha256GetKlass(void) {
+ return(&xmlSecMSCngSha256Klass);
+}
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/******************************************************************************
+ *
+ * SHA384
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngSha384Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngDigestSize, /* size_t objSize */
+
+ xmlSecNameSha384, /* const xmlChar* name; */
+ xmlSecHrefSha384, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCngDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformSha384GetKlass:
+ *
+ * SHA-256 digest transform klass.
+ *
+ * Returns: pointer to SHA-256 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformSha384GetKlass(void) {
+ return(&xmlSecMSCngSha384Klass);
+}
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/******************************************************************************
+ *
+ * SHA512
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngSha512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCngDigestSize, /* size_t objSize */
+
+ xmlSecNameSha512, /* const xmlChar* name; */
+ xmlSecHrefSha512, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCngDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformSha512GetKlass:
+ *
+ * SHA-512 digest transform klass.
+ *
+ * Returns: pointer to SHA-512 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformSha512GetKlass(void) {
+ return(&xmlSecMSCngSha512Klass);
+}
+#endif /* XMLSEC_NO_SHA512 */
diff --git a/src/mscng/globals.h b/src/mscng/globals.h
new file mode 100644
index 00000000..24becae0
--- /dev/null
+++ b/src/mscng/globals.h
@@ -0,0 +1,65 @@
+/*
+ * XML Security Library
+ *
+ * globals.h: internal header only used during the compilation
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+#ifndef __XMLSEC_GLOBALS_H__
+#define __XMLSEC_GLOBALS_H__
+
+/**
+ * Use autoconf defines if present.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#define IN_XMLSEC_CRYPTO
+#define XMLSEC_PRIVATE
+
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+
+/**
+ * xmlSecMSCngLastError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting crypro errors from GetLastError().
+ */
+#define xmlSecMSCngLastError(errorFunction, errorObject) \
+ { \
+ DWORD dwError = GetLastError(); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "MSCng last error: 0x%08lx", \
+ (long int)dwError \
+ ); \
+ }
+
+/**
+ * xmlSecMSCngNtError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting crypro errors from NTSTATUS.
+ * See e.g. <http://errorco.de/win32/ntstatus-h/> to look up the matching define.
+ */
+#define xmlSecMSCngNtError(errorFunction, errorObject, status) \
+ { \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "MSCng NTSTATUS: 0x%08lx", \
+ (long int)(status) \
+ ); \
+ }
+
+#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/mscng/hmac.c b/src/mscng/hmac.c
new file mode 100644
index 00000000..faeb919a
--- /dev/null
+++ b/src/mscng/hmac.c
@@ -0,0 +1,691 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#ifndef XMLSEC_NO_HMAC
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+typedef struct _xmlSecMSCngHmacCtx xmlSecMSCngHmacCtx, *xmlSecMSCngHmacCtxPtr;
+
+struct _xmlSecMSCngHmacCtx {
+ LPCWSTR pszAlgId;
+ int initialized;
+ BCRYPT_ALG_HANDLE hAlg;
+ PBYTE hash;
+ DWORD hashLength;
+ /* truncation length in bits */
+ DWORD truncationLength;
+ BCRYPT_HASH_HANDLE hHash;
+};
+
+#define xmlSecMSCngHmacGetCtx(data) \
+ ((xmlSecMSCngHmacCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecTransform)))
+#define xmlSecMSCngHmacSize \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngHmacCtx))
+
+static int
+xmlSecMSCngHmacCheckId(xmlSecTransformPtr transform) {
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacMd5Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha1Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha256Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha384Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha512Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+ /* not found */
+ {
+ return(0);
+ }
+}
+static int
+xmlSecMSCngHmacInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngHmacCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngHmacCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ /* initialize context */
+ memset(ctx, 0, sizeof(xmlSecMSCngHmacCtx));
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacMd5Id)) {
+ ctx->pszAlgId = BCRYPT_MD5_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha1Id)) {
+ ctx->pszAlgId = BCRYPT_SHA1_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha256Id)) {
+ ctx->pszAlgId = BCRYPT_SHA256_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha384Id)) {
+ ctx->pszAlgId = BCRYPT_SHA384_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformHmacSha512Id)) {
+ ctx->pszAlgId = BCRYPT_SHA512_ALGORITHM;
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+ /* not found */
+ {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngHmacFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngHmacCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngHmacCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize));
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->hash != NULL) {
+ xmlFree(ctx->hash);
+ }
+
+ if(ctx->hHash != NULL) {
+ BCryptDestroyHash(ctx->hHash);
+ }
+
+ if(ctx->hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngHmacCtx));
+}
+
+static int
+xmlSecMSCngHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngHmacCtxPtr ctx;
+ xmlNodePtr cur;
+
+ xmlSecAssert2(xmlSecMSCngHmacCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+ xmlSecAssert2(node!= NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ cur = xmlSecGetNextElementNode(node->children);
+ if((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeHMACOutputLength, xmlSecDSigNs)) {
+ xmlChar *content;
+
+ content = xmlNodeGetContent(cur);
+ if(content != NULL) {
+ ctx->truncationLength = atoi((char*)content);
+ xmlFree(content);
+ }
+
+ /* 80 is a minimum value from
+ * <https://www.w3.org/TR/xmldsig-core1/#sec-SignatureMethod> */
+ if((int)ctx->truncationLength < 80) {
+ xmlSecInvalidNodeContentError(cur, xmlSecTransformGetName(transform),
+ "HMAC output length is too small");
+ return(-1);
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ if(cur != NULL) {
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngHmacSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecAssert2(xmlSecMSCngHmacCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ keyReq->keyId = xmlSecMSCngKeyDataHmacId;
+ keyReq->keyType = xmlSecKeyDataTypeSymmetric;
+ if(transform->operation == xmlSecTransformOperationSign) {
+ keyReq->keyUsage = xmlSecKeyUsageSign;
+ } else {
+ keyReq->keyUsage = xmlSecKeyUsageVerify;
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngHmacCtxPtr ctx;
+ xmlSecKeyDataPtr value;
+ xmlSecBufferPtr buffer;
+ DWORD resultLength = 0;
+ NTSTATUS status;
+
+ xmlSecAssert2(xmlSecMSCngHmacCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->initialized == 0, -1);
+
+ value = xmlSecKeyGetValue(key);
+ xmlSecAssert2(xmlSecKeyDataCheckId(value, xmlSecMSCngKeyDataHmacId), -1);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(value);
+ xmlSecAssert2(buffer != NULL, -1);
+
+ if(xmlSecBufferGetSize(buffer) == 0) {
+ xmlSecInvalidZeroKeyDataSizeError(xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ xmlSecAssert2(xmlSecBufferGetData(buffer) != NULL, -1);
+
+ /* at this point we know what should be they key, go ahead with the CNG
+ * calls */
+
+ status = BCryptOpenAlgorithmProvider(&ctx->hAlg,
+ ctx->pszAlgId,
+ NULL,
+ BCRYPT_ALG_HANDLE_HMAC_FLAG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ status = BCryptGetProperty(ctx->hAlg,
+ BCRYPT_HASH_LENGTH,
+ (PBYTE)&ctx->hashLength,
+ sizeof(ctx->hashLength),
+ &resultLength,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ctx->hash = (PBYTE)xmlMalloc(ctx->hashLength);
+ if(ctx->hash == NULL) {
+ xmlSecMallocError(ctx->hashLength, NULL);
+ return(-1);
+ }
+
+ status = BCryptCreateHash(ctx->hAlg,
+ &ctx->hHash,
+ NULL,
+ 0,
+ (PBYTE)xmlSecBufferGetData(buffer),
+ xmlSecBufferGetSize(buffer),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptCreateHash",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ if (ctx->truncationLength == 0) {
+ /* no custom value is requested, then default to the full length */
+ ctx->truncationLength = ctx->hashLength * 8;
+ }
+
+ ctx->initialized = 1;
+ return(0);
+}
+
+static int
+xmlSecMSCngHmacVerify(xmlSecTransformPtr transform, const xmlSecByte* data,
+ xmlSecSize dataSize, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngHmacCtxPtr ctx;
+ xmlSecSize truncationBytes;
+ static xmlSecByte lastByteMasks[] = { 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xF8,
+ 0xFC, 0xFE };
+ xmlSecByte mask;
+
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+ xmlSecAssert2(transform->operation == xmlSecTransformOperationVerify, -1);
+ xmlSecAssert2(transform->status == xmlSecTransformStatusFinished, -1);
+ xmlSecAssert2(data != NULL, -1);
+ xmlSecAssert2(dataSize > 0, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->truncationLength > 0, -1);
+
+ /* round up */
+ truncationBytes = (ctx->truncationLength + 7) / 8;
+
+ /* compare the digest size in bytes */
+ if(dataSize != truncationBytes) {
+ xmlSecInvalidSizeError("HMAC digest",
+ dataSize, truncationBytes,
+ xmlSecTransformGetName(transform));
+ transform->status = xmlSecTransformStatusFail;
+ return(0);
+ }
+
+ /* we check the last byte separately as possibly not all bits should be
+ * compared */
+ mask = lastByteMasks[ctx->truncationLength % 8];
+ if((ctx->hash[dataSize - 1] & mask) != (data[dataSize - 1] & mask)) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match (last byte)");
+ transform->status = xmlSecTransformStatusFail;
+ return(0);
+ }
+
+ /* now check the rest of the digest */
+ if((dataSize > 1) && (memcmp(ctx->hash, data, dataSize - 1) != 0)) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match");
+ transform->status = xmlSecTransformStatusFail;
+ return(0);
+ }
+
+ transform->status = xmlSecTransformStatusOk;
+ return(0);
+}
+
+static int
+xmlSecMSCngHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngHmacCtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(xmlSecTransformIsValid(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngHmacSize), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ in = &(transform->inBuf);
+ out = &(transform->outBuf);
+
+ ctx = xmlSecMSCngHmacGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->initialized != 0, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ /* we should be already initialized when we set key */
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if(transform->status == xmlSecTransformStatusWorking) {
+ xmlSecSize inSize;
+
+ inSize = xmlSecBufferGetSize(in);
+ if(inSize > 0) {
+ status = BCryptHashData(ctx->hHash,
+ xmlSecBufferGetData(in),
+ inSize,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptHashData",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform), "size=%d", inSize);
+ return(-1);
+ }
+ }
+
+ if(last) {
+ status = BCryptFinishHash(ctx->hHash,
+ ctx->hash,
+ ctx->hashLength,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinishHash",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* copy result to output */
+ if(transform->operation == xmlSecTransformOperationSign) {
+ /* round up */
+ xmlSecSize truncationBytes = (ctx->truncationLength + 7) / 8;
+
+ ret = xmlSecBufferAppend(out, ctx->hash, truncationBytes);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", truncationBytes);
+ return(-1);
+ }
+ }
+ transform->status = xmlSecTransformStatusFinished;
+ }
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ /* the only way we can get here is if there is no input */
+ xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+#ifndef XMLSEC_NO_MD5
+/******************************************************************************
+ *
+ * HMAC MD5
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngHmacMd5Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacMd5, /* const xmlChar* name; */
+ xmlSecHrefHmacMd5, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformHmacMd5GetKlass:
+ *
+ * The HMAC-MD5 transform klass.
+ *
+ * Returns: the HMAC-MD5 transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformHmacMd5GetKlass(void) {
+ return(&xmlSecMSCngHmacMd5Klass);
+}
+
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+/******************************************************************************
+ *
+ * HMAC SHA1
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngHmacSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacSha1, /* const xmlChar* name; */
+ xmlSecHrefHmacSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformHmacSha1GetKlass:
+ *
+ * The HMAC-SHA1 transform klass.
+ *
+ * Returns: the HMAC-SHA1 transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformHmacSha1GetKlass(void) {
+ return(&xmlSecMSCngHmacSha1Klass);
+}
+
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/******************************************************************************
+ *
+ * HMAC SHA256
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngHmacSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacSha256, /* const xmlChar* name; */
+ xmlSecHrefHmacSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformHmacSha256GetKlass:
+ *
+ * The HMAC-SHA256 transform klass.
+ *
+ * Returns: the HMAC-SHA256 transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformHmacSha256GetKlass(void) {
+ return(&xmlSecMSCngHmacSha256Klass);
+}
+
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/******************************************************************************
+ *
+ * HMAC SHA384
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngHmacSha384Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacSha384, /* const xmlChar* name; */
+ xmlSecHrefHmacSha384, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformHmacSha384GetKlass:
+ *
+ * The HMAC-SHA384 transform klass.
+ *
+ * Returns: the HMAC-SHA384 transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformHmacSha384GetKlass(void) {
+ return(&xmlSecMSCngHmacSha384Klass);
+}
+
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/******************************************************************************
+ *
+ * HMAC SHA512
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngHmacSha512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacSha512, /* const xmlChar* name; */
+ xmlSecHrefHmacSha512, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformHmacSha512GetKlass:
+ *
+ * The HMAC-SHA512 transform klass.
+ *
+ * Returns: the HMAC-SHA512 transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformHmacSha512GetKlass(void) {
+ return(&xmlSecMSCngHmacSha512Klass);
+}
+
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_HMAC */
diff --git a/src/mscng/keysstore.c b/src/mscng/keysstore.c
new file mode 100644
index 00000000..7cb5fea7
--- /dev/null
+++ b/src/mscng/keysstore.c
@@ -0,0 +1,519 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:keysstore
+ * @Short_description: Keys store implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Stable
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/app.h>
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/keysstore.h>
+#include <xmlsec/mscng/x509.h>
+#include <xmlsec/mscng/certkeys.h>
+
+#define XMLSEC_MSCNG_APP_DEFAULT_CERT_STORE_NAME TEXT("MY")
+
+/****************************************************************************
+ *
+ * MSCng Keys Store. Uses Simple Keys Store under the hood
+ *
+ * Simple Keys Store ptr is located after xmlSecKeyStore
+ *
+ ***************************************************************************/
+#define xmlSecMSCngKeysStoreSize (sizeof(xmlSecKeyStore) + sizeof(xmlSecKeyStorePtr))
+
+#define xmlSecMSCngKeysStoreGetSS(store) \
+ ((xmlSecKeyStoreCheckSize((store), xmlSecMSCngKeysStoreSize)) ? \
+ (xmlSecKeyStorePtr*)(((xmlSecByte*)(store)) + sizeof(xmlSecKeyStore)) : \
+ (xmlSecKeyStorePtr*)NULL)
+
+static int
+xmlSecMSCngKeysStoreInitialize(xmlSecKeyStorePtr store) {
+ xmlSecKeyStorePtr *ss;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), -1);
+
+ ss = xmlSecMSCngKeysStoreGetSS(store);
+ xmlSecAssert2(*ss == NULL, -1);
+
+ *ss = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
+ if(*ss == NULL) {
+ xmlSecInternalError("xmlSecKeyStoreCreate",
+ xmlSecKeyStoreGetName(store));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKeysStoreFinalize(xmlSecKeyStorePtr store) {
+ xmlSecKeyStorePtr *ss;
+
+ xmlSecAssert(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId));
+
+ ss = xmlSecMSCngKeysStoreGetSS(store);
+ xmlSecAssert((ss != NULL) && (*ss != NULL));
+
+ xmlSecKeyStoreDestroy(*ss);
+}
+
+static PCCERT_CONTEXT
+xmlSecMSCngKeysStoreFindCert(xmlSecKeyStorePtr store, const xmlChar* name,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ LPCTSTR storeName;
+ HCERTSTORE hStore = NULL;
+ PCCERT_CONTEXT pCertContext = NULL;
+ LPTSTR wcName = NULL;
+ BOOL ret;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), NULL);
+ xmlSecAssert2(name != NULL, NULL);
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
+
+ storeName = xmlSecMSCngAppGetCertStoreName();
+ if(storeName == NULL) {
+ storeName = XMLSEC_MSCNG_APP_DEFAULT_CERT_STORE_NAME;
+ }
+
+ hStore = CertOpenSystemStore(0, storeName);
+ if(hStore == NULL) {
+ xmlSecMSCngLastError("CertOpenSystemStore",
+ xmlSecKeyStoreGetName(store));
+ return(NULL);
+ }
+
+ /* convert name to unicode */
+ wcName = xmlSecWin32ConvertUtf8ToTstr(name);
+ if(wcName == NULL) {
+ xmlSecInternalError("xmlSecWin32ConvertUtf8ToTstr(name)",
+ xmlSecKeyStoreGetName(store));
+ CertCloseStore(hStore, 0);
+ return(NULL);
+ }
+
+ /* find cert based on subject */
+ pCertContext = xmlSecMSCngX509FindCertBySubject(
+ hStore,
+ wcName,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING);
+
+ if(pCertContext == NULL) {
+ /* find cert based on friendly name */
+ DWORD dwPropSize;
+ PBYTE pbFriendlyName;
+ PCCERT_CONTEXT pCertCtxIter = NULL;
+
+
+ while (1) {
+ pCertCtxIter = CertEnumCertificatesInStore(hStore, pCertCtxIter);
+ if(pCertCtxIter == NULL) {
+ break;
+ }
+
+ ret = CertGetCertificateContextProperty(pCertCtxIter,
+ CERT_FRIENDLY_NAME_PROP_ID,
+ NULL, &dwPropSize);
+ if(ret != TRUE) {
+ continue;
+ }
+
+ pbFriendlyName = xmlMalloc(dwPropSize);
+ if(pbFriendlyName == NULL) {
+ xmlSecMallocError(dwPropSize, xmlSecKeyStoreGetName(store));
+ xmlFree(wcName);
+ CertCloseStore(hStore, 0);
+ return(NULL);
+ }
+
+ ret = CertGetCertificateContextProperty(pCertCtxIter,
+ CERT_FRIENDLY_NAME_PROP_ID,
+ pbFriendlyName,
+ &dwPropSize);
+ if(ret != TRUE) {
+ xmlFree(pbFriendlyName);
+ continue;
+ }
+
+ if(lstrcmp(wcName, (LPCTSTR)pbFriendlyName) == 0) {
+ pCertContext = pCertCtxIter;
+ xmlFree(pbFriendlyName);
+ break;
+ }
+
+ xmlFree(pbFriendlyName);
+ }
+ }
+
+ if(pCertContext == NULL) {
+ /* find cert based on part of the name */
+ pCertContext = CertFindCertificateInStore(
+ hStore,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_FIND_SUBJECT_STR,
+ wcName,
+ NULL);
+ }
+
+
+ xmlFree(wcName);
+ /* dwFlags=0 means close the store with memory remaining allocated for
+ * contexts that have not been freed */
+ CertCloseStore(hStore, 0);
+
+ return(pCertContext);
+}
+
+static xmlSecKeyPtr
+xmlSecMSCngKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyStorePtr* ss;
+ xmlSecKeyPtr key = NULL;
+ xmlSecKeyReqPtr keyReq = NULL;
+ PCCERT_CONTEXT pCertContext = NULL;
+ PCCERT_CONTEXT pDuplicatedCertContext = NULL;
+ xmlSecKeyDataPtr data = NULL;
+ xmlSecKeyDataPtr x509Data = NULL;
+ xmlSecKeyPtr res = NULL;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), NULL);
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
+
+ ss = xmlSecMSCngKeysStoreGetSS(store);
+ xmlSecAssert2(((ss != NULL) && (*ss != NULL)), NULL);
+
+ /* look for the key in the simple store */
+ key = xmlSecKeyStoreFindKey(*ss, name, keyInfoCtx);
+ if(key != NULL) {
+ return(key);
+ }
+
+ /* look for a named public or private key in the OS store */
+ if(name == NULL) {
+ goto done;
+ }
+
+ keyReq = &(keyInfoCtx->keyReq);
+ if(!(keyReq->keyType & (xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate))) {
+ goto done;
+ }
+
+ pCertContext = xmlSecMSCngKeysStoreFindCert(store, name, keyInfoCtx);
+ if(pCertContext == NULL) {
+ goto done;
+ }
+
+ /* set cert in x509 data */
+ x509Data = xmlSecKeyDataCreate(xmlSecMSCngKeyDataX509Id);
+ if(x509Data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+
+ pDuplicatedCertContext = CertDuplicateCertificateContext(pCertContext);
+ if(pDuplicatedCertContext == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(x509Data, pDuplicatedCertContext);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ pDuplicatedCertContext = NULL;
+
+ pDuplicatedCertContext = CertDuplicateCertificateContext(pCertContext);
+ if(pDuplicatedCertContext == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptKeyCert(x509Data, pDuplicatedCertContext);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ pDuplicatedCertContext = NULL;
+
+ /* set cert in key data */
+ data = xmlSecMSCngCertAdopt(pCertContext, keyReq->keyType);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecMSCngCertAdopt", NULL);
+ goto done;
+ }
+ pCertContext = NULL;
+
+ /* create key and add key data and x509 data to it */
+ key = xmlSecKeyCreate();
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
+ goto done;
+ }
+
+ ret = xmlSecKeySetValue(key, data);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue", xmlSecKeyDataGetName(data));
+ goto done;
+ }
+ data = NULL;
+
+ ret = xmlSecKeyAdoptData(key, x509Data);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
+ goto done;
+ }
+ x509Data = NULL;
+
+ /* set the name of the key to the given name */
+ ret = xmlSecKeySetName(key, name);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetName", xmlSecKeyStoreGetName(store));
+ goto done;
+ }
+
+ /* now that we have a key, make sure it is valid */
+ if(xmlSecKeyIsValid(key)) {
+ res = key;
+ key = NULL;
+ }
+
+done:
+ if(pCertContext != NULL) {
+ CertFreeCertificateContext(pCertContext);
+ }
+
+ if(pDuplicatedCertContext != NULL) {
+ CertFreeCertificateContext(pDuplicatedCertContext);
+ }
+
+ if(data != NULL) {
+ xmlSecKeyDataDestroy(data);
+ }
+
+ if(x509Data != NULL) {
+ xmlSecKeyDataDestroy(x509Data);
+ }
+
+ if(key != NULL) {
+ xmlSecKeyDestroy(key);
+ }
+
+ return(res);
+}
+
+static xmlSecKeyStoreKlass xmlSecMSCngKeysStoreKlass = {
+ sizeof(xmlSecKeyStoreKlass),
+ xmlSecMSCngKeysStoreSize,
+
+ /* data */
+ BAD_CAST "MSCng-keys-store", /* const xmlChar* name; */
+
+ /* constructors/destructor */
+ xmlSecMSCngKeysStoreInitialize, /* xmlSecKeyStoreInitializeMethod initialize; */
+ xmlSecMSCngKeysStoreFinalize, /* xmlSecKeyStoreFinalizeMethod finalize; */
+ xmlSecMSCngKeysStoreFindKey, /* xmlSecKeyStoreFindKeyMethod findKey; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeysStoreGetKlass:
+ *
+ * The MSCng list based keys store klass.
+ *
+ * Returns: MSCng list based keys store klass.
+ */
+xmlSecKeyStoreId
+xmlSecMSCngKeysStoreGetKlass(void) {
+ return(&xmlSecMSCngKeysStoreKlass);
+}
+
+/**
+ * xmlSecMSCngKeysStoreAdoptKey:
+ * @store: the pointer to MSCng keys store.
+ * @key: the pointer to key.
+ *
+ * Adds @key to the @store.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngKeysStoreAdoptKey(xmlSecKeyStorePtr store, xmlSecKeyPtr key) {
+ xmlSecKeyStorePtr *ss;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), -1);
+ xmlSecAssert2((key != NULL), -1);
+
+ ss = xmlSecMSCngKeysStoreGetSS(store);
+ xmlSecAssert2(ss != NULL, -1);
+ xmlSecAssert2(*ss != NULL, -1);
+ xmlSecAssert2(xmlSecKeyStoreCheckId(*ss, xmlSecSimpleKeysStoreId), -1);
+
+ return(xmlSecSimpleKeysStoreAdoptKey(*ss, key));
+}
+
+/**
+ * xmlSecMSCngKeysStoreLoad:
+ * @store: the pointer to MSCng keys store.
+ * @uri: the filename.
+ * @keysMngr: the pointer to associated keys manager.
+ *
+ * Reads keys from an XML file.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
+ xmlSecKeysMngrPtr keysMngr) {
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ xmlNodePtr cur;
+ xmlSecKeyPtr key;
+ xmlSecKeyInfoCtx keyInfoCtx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), -1);
+ xmlSecAssert2((uri != NULL), -1);
+ UNREFERENCED_PARAMETER(keysMngr);
+
+ doc = xmlParseFile(uri);
+ if(doc == NULL) {
+ xmlSecXmlError2("xmlParseFile", xmlSecKeyStoreGetName(store), "uri=%s",
+ xmlSecErrorsSafeString(uri));
+ return(-1);
+ }
+
+ root = xmlDocGetRootElement(doc);
+ if(!xmlSecCheckNodeName(root, BAD_CAST "Keys", xmlSecNs)) {
+ xmlSecInvalidNodeError(root, BAD_CAST "Keys", xmlSecKeyStoreGetName(store));
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+
+ cur = xmlSecGetNextElementNode(root->children);
+ while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeKeyInfo, xmlSecDSigNs)) {
+ key = xmlSecKeyCreate();
+ if(key == NULL) {
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyStoreGetName(store));
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+
+ ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyStoreGetName(store));
+ xmlSecKeyDestroy(key);
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+
+ keyInfoCtx.mode = xmlSecKeyInfoModeRead;
+ keyInfoCtx.keysMngr = NULL;
+ keyInfoCtx.flags = XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND |
+ XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
+ keyInfoCtx.keyReq.keyId = xmlSecKeyDataIdUnknown;
+ keyInfoCtx.keyReq.keyType = xmlSecKeyDataTypeAny;
+ keyInfoCtx.keyReq.keyUsage= xmlSecKeyDataUsageAny;
+
+ ret = xmlSecKeyInfoNodeRead(cur, key, &keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeyInfoNodeRead",
+ xmlSecKeyStoreGetName(store));
+ xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
+ xmlSecKeyDestroy(key);
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+ xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
+
+ if(xmlSecKeyIsValid(key)) {
+ ret = xmlSecMSCngKeysStoreAdoptKey(store, key);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeysStoreAdoptKey",
+ xmlSecKeyStoreGetName(store));
+ xmlSecKeyDestroy(key);
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+ } else {
+ /* we have an unknown key in our file, just ignore it */
+ xmlSecKeyDestroy(key);
+ }
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ if(cur != NULL) {
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyStoreGetName(store));
+ xmlFreeDoc(doc);
+ return(-1);
+ }
+
+ xmlFreeDoc(doc);
+ return(0);
+}
+
+/**
+ * xmlSecMSCngKeysStoreSave:
+ * @store: the pointer to MSCng keys store.
+ * @filename: the filename.
+ * @type: the saved keys type (public, private, ...).
+ *
+ * Writes keys from @store to an XML file.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecKeyDataType type) {
+ xmlSecKeyStorePtr *ss;
+
+ xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCngKeysStoreId), -1);
+ xmlSecAssert2((filename != NULL), -1);
+
+ ss = xmlSecMSCngKeysStoreGetSS(store);
+ xmlSecAssert2(ss != NULL, -1);
+ xmlSecAssert2(*ss != NULL, -1);
+ xmlSecAssert2(xmlSecKeyStoreCheckId(*ss, xmlSecSimpleKeysStoreId), -1);
+
+ return(xmlSecSimpleKeysStoreSave(*ss, filename, type));
+}
diff --git a/src/mscng/kt_rsa.c b/src/mscng/kt_rsa.c
new file mode 100644
index 00000000..3c8d1285
--- /dev/null
+++ b/src/mscng/kt_rsa.c
@@ -0,0 +1,544 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:kt_rsa
+ * @Short_description: RSA Key Transport transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#ifndef XMLSEC_NO_RSA
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/certkeys.h>
+
+/**************************************************************************
+ *
+ * Internal MSCNG RSA PKCS1 CTX
+ *
+ *************************************************************************/
+typedef struct _xmlSecMSCngRsaPkcs1OaepCtx xmlSecMSCngRsaPkcs1OaepCtx, *xmlSecMSCngRsaPkcs1OaepCtxPtr;
+
+struct _xmlSecMSCngRsaPkcs1OaepCtx {
+ xmlSecKeyDataPtr data;
+ xmlSecBuffer oaepParams;
+
+};
+
+/*********************************************************************
+ *
+ * RSA PKCS1 key transport transform
+ *
+ * xmlSecMSCngRsaPkcs1OaepCtx is located after xmlSecTransform
+ *
+ ********************************************************************/
+#define xmlSecMSCngRsaPkcs1OaepCtx \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngRsaPkcs1OaepCtx))
+#define xmlSecMSCngRsaPkcs1OaepGetCtx(transform) \
+ ((xmlSecMSCngRsaPkcs1OaepCtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
+
+static int
+xmlSecMSCngRsaPkcs1OaepCheckId(xmlSecTransformPtr transform) {
+
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaPkcs1Id)) {
+ return(1);
+ }
+
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaOaepId)) {
+ return(1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngRsaPkcs1OaepInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ /* initialize */
+ memset(ctx, 0, sizeof(xmlSecMSCngRsaPkcs1OaepCtx));
+
+ ret = xmlSecBufferInitialize(&(ctx->oaepParams), 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ /* done */
+ return(0);
+}
+
+static void
+xmlSecMSCngRsaPkcs1OaepFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngRsaPkcs1OaepCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx));
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->data != NULL) {
+ xmlSecKeyDataDestroy(ctx->data);
+ ctx->data = NULL;
+ }
+
+ xmlSecBufferFinalize(&(ctx->oaepParams));
+ memset(ctx, 0, sizeof(xmlSecMSCngRsaPkcs1OaepCtx));
+}
+
+static int
+xmlSecMSCngRsaPkcs1OaepSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ keyReq->keyId = xmlSecMSCngKeyDataRsaId;
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ keyReq->keyType = xmlSecKeyDataTypePublic;
+ keyReq->keyUsage = xmlSecKeyUsageEncrypt;
+ } else {
+ keyReq->keyType = xmlSecKeyDataTypePrivate;
+ keyReq->keyUsage = xmlSecKeyUsageDecrypt;
+ }
+ return(0);
+}
+
+static int
+xmlSecMSCngRsaPkcs1OaepSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key), xmlSecMSCngKeyDataRsaId), -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->data == NULL, -1);
+
+ ctx->data = xmlSecKeyDataDuplicate(xmlSecKeyGetValue(key));
+ if(ctx->data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataDuplicate",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ xmlSecSize inSize, outSize;
+ xmlSecSize keySize;
+ BCRYPT_KEY_HANDLE hPubKey;
+ NCRYPT_KEY_HANDLE hPrivKey;
+ DWORD dwInLen;
+ DWORD dwOutLen;
+ xmlSecByte * outBuf;
+ xmlSecByte * inBuf;
+ SECURITY_STATUS securityStatus;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->data != NULL, -1);
+
+ keySize = xmlSecKeyDataGetSize(ctx->data) / 8;
+ xmlSecAssert2(keySize > 0, -1);
+
+ in = &(transform->inBuf);
+ out = &(transform->outBuf);
+
+ inSize = xmlSecBufferGetSize(in);
+ outSize = xmlSecBufferGetSize(out);
+ xmlSecAssert2(outSize == 0, -1);
+
+ /* the encoded size is equal to the keys size so we could not
+ * process more than that */
+ if((transform->operation == xmlSecTransformOperationEncrypt) && (inSize >= keySize)) {
+ xmlSecInvalidSizeLessThanError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ } else if((transform->operation == xmlSecTransformOperationDecrypt) && (inSize != keySize)) {
+ xmlSecInvalidSizeError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ outSize = keySize;
+ ret = xmlSecBufferSetMaxSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ if(inSize > outSize) {
+ xmlSecInvalidSizeLessThanError("Output data", outSize, inSize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ dwInLen = inSize;
+
+ inBuf = xmlSecBufferGetData(in);
+ outBuf = xmlSecBufferGetData(out);
+
+ hPubKey = xmlSecMSCngKeyDataGetPubKey(ctx->data);
+ if (hPubKey == 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataGetPubKey",
+ xmlSecTransformGetName(transform));
+ return (-1);
+ }
+
+ /* encrypt */
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaPkcs1Id)) {
+ status = BCryptEncrypt(hPubKey,
+ inBuf,
+ inSize,
+ NULL,
+ NULL,
+ 0,
+ outBuf,
+ outSize,
+ &dwOutLen,
+ BCRYPT_PAD_PKCS1);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaOaepId)) {
+ BCRYPT_OAEP_PADDING_INFO paddingInfo;
+ paddingInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM;
+ paddingInfo.pbLabel = xmlSecBufferGetData(&(ctx->oaepParams));
+ paddingInfo.cbLabel = xmlSecBufferGetSize(&(ctx->oaepParams));
+ status = BCryptEncrypt(hPubKey,
+ inBuf,
+ inSize,
+ &paddingInfo,
+ NULL,
+ 0,
+ outBuf,
+ outSize,
+ &dwOutLen,
+ BCRYPT_PAD_OAEP);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+ } else {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+ } else {
+ dwOutLen = inSize;
+
+ ret = xmlSecBufferSetSize(out, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform), "size=%d", inSize);
+ return(-1);
+ }
+
+ inBuf = xmlSecBufferGetData(in);
+ outBuf = xmlSecBufferGetData(out);
+
+ hPrivKey = xmlSecMSCngKeyDataGetPrivKey(ctx->data);
+ if (hPrivKey == 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataGetPrivKey",
+ xmlSecTransformGetName(transform));
+ return (-1);
+ }
+
+ /* decrypt */
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaPkcs1Id)) {
+ securityStatus = NCryptDecrypt(hPrivKey,
+ inBuf,
+ inSize,
+ NULL,
+ outBuf,
+ inSize,
+ &dwOutLen,
+ NCRYPT_PAD_PKCS1_FLAG);
+ if(securityStatus != ERROR_SUCCESS) {
+ xmlSecMSCngNtError("NCryptDecrypt",
+ xmlSecTransformGetName(transform), securityStatus);
+ return(-1);
+ }
+ } else if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaOaepId)) {
+ BCRYPT_OAEP_PADDING_INFO paddingInfo;
+ paddingInfo.pszAlgId = BCRYPT_SHA1_ALGORITHM;
+ paddingInfo.pbLabel = xmlSecBufferGetData(&(ctx->oaepParams));
+ paddingInfo.cbLabel = xmlSecBufferGetSize(&(ctx->oaepParams));
+
+ securityStatus = NCryptDecrypt(hPrivKey,
+ inBuf,
+ inSize,
+ &paddingInfo,
+ outBuf,
+ inSize,
+ &dwOutLen,
+ NCRYPT_PAD_OAEP_FLAG);
+ if(securityStatus != ERROR_SUCCESS) {
+ xmlSecMSCngNtError("NCryptDecrypt",
+ xmlSecTransformGetName(transform), securityStatus);
+ return(-1);
+ }
+ } else {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ outSize = dwOutLen;
+ }
+
+ ret = xmlSecBufferSetSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform), "size=%d", inSize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngRsaPkcs1OaepExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if((transform->status == xmlSecTransformStatusWorking) && (last == 0)) {
+ /* just do nothing */
+ } else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
+ ret = xmlSecMSCngRsaPkcs1OaepProcess(transform, transformCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngRsaPkcs1OaepProcess",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusFinished;
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ /* the only way we can get here is if there is no input */
+ xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**********************************************************************
+ *
+ * RSA/PKCS1 transform
+ *
+ **********************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaPkcs1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngRsaPkcs1OaepCtx, /* xmlSecSize objSize */
+
+ xmlSecNameRsaPkcs1, /* const xmlChar* name; */
+ xmlSecHrefRsaPkcs1, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngRsaPkcs1OaepInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngRsaPkcs1OaepFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngRsaPkcs1OaepSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngRsaPkcs1OaepSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngRsaPkcs1OaepExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaPkcs1GetKlass:
+ *
+ * The RSA-PKCS1 key transport transform klass.
+ *
+ * Returns: RSA-PKCS1 key transport transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaPkcs1GetKlass(void) {
+ return(&xmlSecMSCngRsaPkcs1Klass);
+}
+
+static int
+xmlSecMSCngRsaOaepNodeRead(xmlSecTransformPtr transform, xmlNodePtr node,
+ xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngRsaPkcs1OaepCtxPtr ctx;
+ xmlNodePtr cur;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngRsaPkcs1OaepCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngRsaPkcs1OaepCtx), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngRsaPkcs1OaepGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ cur = xmlSecGetNextElementNode(node->children);
+ while(cur != NULL) {
+ if(xmlSecCheckNodeName(cur, xmlSecNodeRsaOAEPparams, xmlSecEncNs)) {
+ ret = xmlSecBufferBase64NodeContentRead(&(ctx->oaepParams), cur);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeDigestMethod, xmlSecDSigNs)) {
+ xmlChar* algorithm;
+
+ /* Algorithm attribute is required */
+ algorithm = xmlGetProp(cur, xmlSecAttrAlgorithm);
+ if(algorithm == NULL) {
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrAlgorithm,
+ xmlSecTransformGetName(transform),
+ "empty");
+ return(-1);
+ }
+
+ /* for now we support only sha1 */
+ if(xmlStrcmp(algorithm, xmlSecHrefSha1) != 0) {
+ xmlSecInvalidTransfromError2(transform,
+ "digest algorithm=\"%s\" is not supported for rsa/oaep",
+ xmlSecErrorsSafeString(algorithm));
+ xmlFree(algorithm);
+ return(-1);
+ }
+ xmlFree(algorithm);
+ } else {
+ /* node not recognized */
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ /* next node */
+ cur = xmlSecGetNextElementNode(cur->next);
+ }
+
+ return(0);
+}
+
+static xmlSecTransformKlass xmlSecMSCngRsaOaepKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngRsaPkcs1OaepCtx, /* xmlSecSize objSize */
+
+ xmlSecNameRsaOaep, /* const xmlChar* name; */
+ xmlSecHrefRsaOaep, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngRsaPkcs1OaepInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngRsaPkcs1OaepFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecMSCngRsaOaepNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngRsaPkcs1OaepSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngRsaPkcs1OaepSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngRsaPkcs1OaepExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaOaepGetKlass:
+ *
+ * The RSA-OAEP key transport transform klass.
+ *
+ * Returns: RSA-OAEP key transport transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaOaepGetKlass(void) {
+ return(&xmlSecMSCngRsaOaepKlass);
+}
+
+#endif /* XMLSEC_NO_RSA */
diff --git a/src/mscng/kw_aes.c b/src/mscng/kw_aes.c
new file mode 100644
index 00000000..4c52a952
--- /dev/null
+++ b/src/mscng/kw_aes.c
@@ -0,0 +1,702 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#ifndef XMLSEC_NO_AES
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+#include "../kw_aes_des.h"
+
+/**************************************************************************
+ *
+ * Internal MSCng KW AES cipher CTX
+ *
+ *****************************************************************************/
+typedef struct _xmlSecMSCngKWAesCtx xmlSecMSCngKWAesCtx, *xmlSecMSCngKWAesCtxPtr;
+struct _xmlSecMSCngKWAesCtx {
+ LPCWSTR pszAlgId;
+ xmlSecKeyDataId keyId;
+ xmlSecSize keySize;
+ xmlSecBuffer keyBuffer;
+};
+
+/******************************************************************************
+ *
+ * KW AES transforms
+ *
+ * xmlSecMSCngKWAesCtx block is located after xmlSecTransform structure
+ *
+ *****************************************************************************/
+#define xmlSecMSCngKWAesSize \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngKWAesCtx))
+#define xmlSecMSCngKWAesGetCtx(transform) \
+ ((xmlSecMSCngKWAesCtxPtr)(((unsigned char*)(transform)) + sizeof(xmlSecTransform)))
+
+/*********************************************************************
+ *
+ * AES KW implementation
+ *
+ ********************************************************************/
+static int
+xmlSecMSCngKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
+ xmlSecByte * out, xmlSecSize outSize, void * context) {
+ xmlSecMSCngKWAesCtxPtr ctx = (xmlSecMSCngKWAesCtxPtr)context;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ BCRYPT_KEY_HANDLE hKey = NULL;
+ DWORD cbData;
+ PBYTE pbKeyObject = NULL;
+ DWORD cbKeyObject;
+ xmlSecBuffer blob;
+ BCRYPT_KEY_DATA_BLOB_HEADER* blobHeader;
+ xmlSecSize blobHeaderLen;
+ int res = -1;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(inSize >= XMLSEC_KW_AES_BLOCK_SIZE, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize >= inSize, -1);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetSize(&ctx->keyBuffer) == ctx->keySize, -1);
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ goto done;
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_AES_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", NULL, status);
+ goto done;
+ }
+
+ /* allocate the key object */
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbKeyObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbKeyObject = xmlMalloc(cbKeyObject);
+ if(pbKeyObject == NULL) {
+ xmlSecMallocError(cbKeyObject, NULL);
+ goto done;
+ }
+
+ /* prefix the key with a BCRYPT_KEY_DATA_BLOB_HEADER */
+ blobHeaderLen = sizeof(BCRYPT_KEY_DATA_BLOB_HEADER) + xmlSecBufferGetSize(&ctx->keyBuffer);
+ ret = xmlSecBufferSetSize(&blob, blobHeaderLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d",
+ blobHeaderLen);
+ goto done;
+ }
+
+ blobHeader = (BCRYPT_KEY_DATA_BLOB_HEADER*)xmlSecBufferGetData(&blob);
+ blobHeader->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
+ blobHeader->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
+ blobHeader->cbKeyData = xmlSecBufferGetSize(&ctx->keyBuffer);
+ memcpy(xmlSecBufferGetData(&blob) + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER),
+ xmlSecBufferGetData(&ctx->keyBuffer),
+ xmlSecBufferGetSize(&ctx->keyBuffer));
+
+ /* perform the actual import */
+ status = BCryptImportKey(hAlg,
+ NULL,
+ BCRYPT_KEY_DATA_BLOB,
+ &hKey,
+ pbKeyObject,
+ cbKeyObject,
+ xmlSecBufferGetData(&blob),
+ xmlSecBufferGetSize(&blob),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKey", NULL, status);
+ goto done;
+ }
+
+ /* handle padding ourselves */
+ if(out != in) {
+ memcpy(out, in, inSize);
+ }
+
+ cbData = inSize;
+ status = BCryptEncrypt(hKey,
+ (PUCHAR)in,
+ inSize,
+ NULL,
+ NULL,
+ 0,
+ out,
+ inSize,
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt", NULL, status);
+ goto done;
+ }
+
+ res = cbData;
+
+done:
+ if (hKey != NULL) {
+ BCryptDestroyKey(hKey);
+ }
+
+ xmlSecBufferFinalize(&blob);
+
+ if (pbKeyObject != NULL) {
+ xmlFree(pbKeyObject);
+ }
+
+ if(hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static int
+xmlSecMSCngKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
+ xmlSecByte * out, xmlSecSize outSize, void * context) {
+ xmlSecMSCngKWAesCtxPtr ctx = (xmlSecMSCngKWAesCtxPtr)context;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ BCRYPT_KEY_HANDLE hKey = NULL;
+ DWORD cbData;
+ PBYTE pbKeyObject = NULL;
+ DWORD cbKeyObject;
+ xmlSecBuffer blob;
+ BCRYPT_KEY_DATA_BLOB_HEADER* blobHeader;
+ xmlSecSize blobHeaderLen;
+ int res = -1;
+ NTSTATUS status;
+ int ret;
+
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(inSize >= XMLSEC_KW_AES_BLOCK_SIZE, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize >= inSize, -1);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetSize(&ctx->keyBuffer) == ctx->keySize, -1);
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ goto done;
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_AES_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", NULL, status);
+ goto done;
+ }
+
+ /* allocate the key object */
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbKeyObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbKeyObject = xmlMalloc(cbKeyObject);
+ if(pbKeyObject == NULL) {
+ xmlSecMallocError(cbKeyObject, NULL);
+ goto done;
+ }
+
+ /* prefix the key with a BCRYPT_KEY_DATA_BLOB_HEADER */
+ blobHeaderLen = sizeof(BCRYPT_KEY_DATA_BLOB_HEADER) + xmlSecBufferGetSize(&ctx->keyBuffer);
+ ret = xmlSecBufferSetSize(&blob, blobHeaderLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d",
+ blobHeaderLen);
+ goto done;
+ }
+
+ blobHeader = (BCRYPT_KEY_DATA_BLOB_HEADER*)xmlSecBufferGetData(&blob);
+ blobHeader->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
+ blobHeader->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
+ blobHeader->cbKeyData = xmlSecBufferGetSize(&ctx->keyBuffer);
+ memcpy(xmlSecBufferGetData(&blob) + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER),
+ xmlSecBufferGetData(&ctx->keyBuffer),
+ xmlSecBufferGetSize(&ctx->keyBuffer));
+
+ /* perform the actual import */
+ status = BCryptImportKey(hAlg,
+ NULL,
+ BCRYPT_KEY_DATA_BLOB,
+ &hKey,
+ pbKeyObject,
+ cbKeyObject,
+ xmlSecBufferGetData(&blob),
+ xmlSecBufferGetSize(&blob),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKey", NULL, status);
+ goto done;
+ }
+
+ /* handle padding ourselves */
+ if(out != in) {
+ memcpy(out, in, inSize);
+ }
+
+ cbData = inSize;
+ status = BCryptDecrypt(hKey,
+ (PUCHAR)in,
+ inSize,
+ NULL,
+ NULL,
+ 0,
+ out,
+ inSize,
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", NULL, status);
+ goto done;
+ }
+
+ res = cbData;
+
+done:
+ if (hKey != NULL) {
+ BCryptDestroyKey(hKey);
+ }
+
+ xmlSecBufferFinalize(&blob);
+
+ if (pbKeyObject != NULL) {
+ xmlFree(pbKeyObject);
+ }
+
+ if(hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+/* klass for KW AES operation */
+static xmlSecKWAesKlass xmlSecMSCngKWAesKlass = {
+ /* callbacks */
+ xmlSecMSCngKWAesBlockEncrypt, /* xmlSecKWAesBlockEncryptMethod encrypt; */
+ xmlSecMSCngKWAesBlockDecrypt, /* xmlSecKWAesBlockDecryptMethod decrypt; */
+
+ /* for the future */
+ NULL, /* void* reserved0; */
+ NULL /* void* reserved1; */
+};
+
+static int
+xmlSecMSCngKWAesCheckId(xmlSecTransformPtr transform) {
+
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWAes128Id)) {
+ return(1);
+ }
+
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWAes192Id)) {
+ return(1);
+ }
+
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWAes256Id)) {
+ return(1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKWAesInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngKWAesCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngKWAesCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWAesSize), -1);
+
+ ctx = xmlSecMSCngKWAesGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKWAesCtx));
+
+ ctx->pszAlgId = BCRYPT_AES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataAesId;
+
+ if(transform->id == xmlSecMSCngTransformKWAes128Id) {
+ ctx->keySize = XMLSEC_KW_AES128_KEY_SIZE;
+ } else if(transform->id == xmlSecMSCngTransformKWAes192Id) {
+ ctx->keySize = XMLSEC_KW_AES192_KEY_SIZE;
+ } else if(transform->id == xmlSecMSCngTransformKWAes256Id) {
+ ctx->keySize = XMLSEC_KW_AES256_KEY_SIZE;
+ } else {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&ctx->keyBuffer, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKWAesFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngKWAesCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngKWAesCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngKWAesSize));
+
+ ctx = xmlSecMSCngKWAesGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ xmlSecBufferFinalize(&ctx->keyBuffer);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKWAesCtx));
+}
+
+static int
+xmlSecMSCngKWAesSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecMSCngKWAesCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngKWAesCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWAesSize), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ ctx = xmlSecMSCngKWAesGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ keyReq->keyId = ctx->keyId;
+ keyReq->keyType = xmlSecKeyDataTypeSymmetric;
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ keyReq->keyUsage = xmlSecKeyUsageEncrypt;
+ } else {
+ keyReq->keyUsage = xmlSecKeyUsageDecrypt;
+ }
+ keyReq->keyBitsSize = ctx->keySize * 8;
+ return(0);
+}
+
+static int
+xmlSecMSCngKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngKWAesCtxPtr ctx;
+ xmlSecBufferPtr buffer;
+ xmlSecSize keySize;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngKWAesCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWAesSize), -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key),
+ xmlSecMSCngKeyDataAesId), -1);
+
+ ctx = xmlSecMSCngKWAesGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(xmlSecKeyGetValue(key));
+ xmlSecAssert2(buffer != NULL, -1);
+
+ keySize = xmlSecBufferGetSize(buffer);
+ if(keySize < ctx->keySize) {
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keySize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ ret = xmlSecBufferSetData(&ctx->keyBuffer, xmlSecBufferGetData(buffer),
+ ctx->keySize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform), "size=%d", ctx->keySize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngKWAesCtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ xmlSecSize inSize, outSize;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngKWAesCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWAesSize), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngKWAesGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ in = &transform->inBuf;
+ out = &transform->outBuf;
+ inSize = xmlSecBufferGetSize(in);
+ outSize = xmlSecBufferGetSize(out);
+ xmlSecAssert2(outSize == 0, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if((transform->status == xmlSecTransformStatusWorking) && (last == 0)) {
+ /* just do nothing */
+ } else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
+ if((inSize % 8) != 0) {
+ xmlSecInvalidSizeNotMultipleOfError("transform->inBuf", inSize, 8,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ /* the encoded key might be 8 bytes longer plus 8 bytes just in
+ * case */
+ outSize = inSize + XMLSEC_KW_AES_MAGIC_BLOCK_SIZE +
+ XMLSEC_KW_AES_BLOCK_SIZE;
+ } else {
+ outSize = inSize + XMLSEC_KW_AES_BLOCK_SIZE;
+ }
+
+ ret = xmlSecBufferSetMaxSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ ret = xmlSecKWAesEncode(&xmlSecMSCngKWAesKlass, ctx,
+ xmlSecBufferGetData(in), inSize, xmlSecBufferGetData(out),
+ outSize);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ outSize = ret;
+ } else {
+ ret = xmlSecKWAesDecode(&xmlSecMSCngKWAesKlass, ctx,
+ xmlSecBufferGetData(in), inSize, xmlSecBufferGetData(out),
+ outSize);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ outSize = ret;
+ }
+
+ ret = xmlSecBufferSetSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform), "size=%d", inSize);
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusFinished;
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ /* the only way we can get here is if there is no input */
+ xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+/*
+ * The AES-128 key wrapper transform klass.
+ */
+static xmlSecTransformKlass xmlSecMSCngKWAes128Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngKWAesSize, /* xmlSecSize objSize */
+
+ xmlSecNameKWAes128, /* const xmlChar* name; */
+ xmlSecHrefKWAes128, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngKWAesInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngKWAesFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngKWAesSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngKWAesSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngKWAesExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformKWAes128GetKlass:
+ *
+ * The AES-128 key wrapper transform klass.
+ *
+ * Returns: AES-128 key wrapper transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformKWAes128GetKlass(void) {
+ return(&xmlSecMSCngKWAes128Klass);
+}
+
+/*
+ * The AES-192 key wrapper transform klass.
+ */
+static xmlSecTransformKlass xmlSecMSCngKWAes192Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngKWAesSize, /* xmlSecSize objSize */
+
+ xmlSecNameKWAes192, /* const xmlChar* name; */
+ xmlSecHrefKWAes192, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngKWAesInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngKWAesFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngKWAesSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngKWAesSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngKWAesExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformKWAes192GetKlass:
+ *
+ * The AES-192 key wrapper transform klass.
+ *
+ * Returns: AES-192 key wrapper transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformKWAes192GetKlass(void) {
+ return(&xmlSecMSCngKWAes192Klass);
+}
+
+/*
+ * The AES-256 key wrapper transform klass.
+ */
+static xmlSecTransformKlass xmlSecMSCngKWAes256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngKWAesSize, /* xmlSecSize objSize */
+
+ xmlSecNameKWAes256, /* const xmlChar* name; */
+ xmlSecHrefKWAes256, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngKWAesInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngKWAesFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngKWAesSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngKWAesSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngKWAesExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformKWAes256GetKlass:
+ *
+ * The AES-256 key wrapper transform klass.
+ *
+ * Returns: AES-256 key wrapper transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformKWAes256GetKlass(void) {
+ return(&xmlSecMSCngKWAes256Klass);
+}
+
+#endif /* XMLSEC_NO_AES */
diff --git a/src/mscng/kw_des.c b/src/mscng/kw_des.c
new file mode 100644
index 00000000..236f042e
--- /dev/null
+++ b/src/mscng/kw_des.c
@@ -0,0 +1,790 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#ifndef XMLSEC_NO_DES
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+#include "../kw_aes_des.h"
+
+/*********************************************************************
+ *
+ * Triple DES Key Wrap transform
+ *
+ * key (xmlSecBuffer) is located after xmlSecTransform structure
+ *
+ ********************************************************************/
+typedef struct _xmlSecMSCngKWDes3Ctx xmlSecMSCngKWDes3Ctx, *xmlSecMSCngKWDes3CtxPtr;
+
+struct _xmlSecMSCngKWDes3Ctx {
+ LPCWSTR pszAlgId;
+ xmlSecKeyDataId keyId;
+ xmlSecSize keySize;
+ xmlSecBuffer keyBuffer;
+};
+
+#define xmlSecMSCngKWDes3Size \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngKWDes3Ctx))
+#define xmlSecMSCngKWDes3GetCtx(transform) \
+ ((xmlSecMSCngKWDes3CtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
+
+static int
+xmlSecMSCngKWDes3GenerateRandom(void * context, xmlSecByte * out,
+ xmlSecSize outSize)
+{
+ NTSTATUS status;
+
+ UNREFERENCED_PARAMETER(context);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize > 0, -1);
+
+ status = BCryptGenRandom(
+ NULL,
+ (PBYTE)out,
+ outSize,
+ BCRYPT_USE_SYSTEM_PREFERRED_RNG);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGenRandom", NULL, status);
+ return(-1);
+ }
+
+ return((int)outSize);
+}
+
+static int
+xmlSecMSCngKWDes3Sha1(void * context, const xmlSecByte * in, xmlSecSize inSize,
+ xmlSecByte * out, xmlSecSize outSize) {
+ xmlSecMSCngKWDes3CtxPtr ctx = (xmlSecMSCngKWDes3CtxPtr)context;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ BCRYPT_HASH_HANDLE hHash = NULL;
+ PBYTE pbHashObject = NULL;
+ DWORD cbHashObject;
+ PBYTE pbHash = NULL;
+ DWORD cbHash;
+ DWORD cbData;
+ int res = -1;
+ NTSTATUS status;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(inSize > 0, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize > 0, -1);
+
+ /* create */
+ status = BCryptOpenAlgorithmProvider(&hAlg,
+ BCRYPT_SHA1_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", NULL, status);
+ goto done;
+ }
+
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbHashObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbHashObject = (PBYTE)xmlMalloc(cbHashObject);
+ if(pbHashObject == NULL) {
+ xmlSecMallocError(cbHashObject, NULL);
+ goto done;
+ }
+
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_HASH_LENGTH,
+ (PBYTE)&cbHash,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbHash = (PBYTE)xmlMalloc(cbHash);
+ if(pbHash == NULL) {
+ xmlSecMallocError(cbHash, NULL);
+ goto done;
+ }
+
+ status = BCryptCreateHash(hAlg,
+ &hHash,
+ pbHashObject,
+ cbHashObject,
+ NULL,
+ 0,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptCreateHash", NULL, status);
+ goto done;
+ }
+
+ /* hash */
+ status = BCryptHashData(hHash,
+ (PBYTE)in,
+ inSize,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptHashData", NULL, status);
+ goto done;
+ }
+
+ /* get results */
+ status = BCryptFinishHash(hHash,
+ pbHash,
+ cbHash,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinishHash", NULL, status);
+ goto done;
+ }
+ memcpy(out, pbHash, outSize);
+ res = cbHash;
+
+done:
+
+ if(hHash != NULL) {
+ BCryptDestroyHash(hHash);
+ }
+
+ if(pbHash != NULL) {
+ xmlFree(pbHash);
+ }
+
+ if(pbHashObject != NULL) {
+ xmlFree(pbHashObject);
+ }
+
+ if(hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static int
+xmlSecMSCngKWDes3BlockEncrypt(void * context, const xmlSecByte * iv,
+ xmlSecSize ivSize, const xmlSecByte * in, xmlSecSize inSize,
+ xmlSecByte * out, xmlSecSize outSize) {
+ xmlSecMSCngKWDes3CtxPtr ctx = (xmlSecMSCngKWDes3CtxPtr)context;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ BCRYPT_KEY_HANDLE hKey = NULL;
+ DWORD cbData;
+ PBYTE pbKeyObject = NULL;
+ DWORD cbKeyObject;
+ xmlSecBuffer blob;
+ BCRYPT_KEY_DATA_BLOB_HEADER* blobHeader;
+ xmlSecSize blobHeaderLen;
+ int res = -1;
+ NTSTATUS status;
+ DWORD dwBlockLen, dwBlockLenLen;
+ xmlSecBuffer ivCopy;
+ int ret;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetData(&(ctx->keyBuffer)) != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetSize(&(ctx->keyBuffer)) >= XMLSEC_KW_DES3_KEY_LENGTH, -1);
+ xmlSecAssert2(iv != NULL, -1);
+ xmlSecAssert2(ivSize >= XMLSEC_KW_DES3_IV_LENGTH, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(inSize > 0, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize >= inSize, -1);
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ goto done;
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_3DES_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", NULL, status);
+ goto done;
+ }
+
+ /* allocate the key object */
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbKeyObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbKeyObject = xmlMalloc(cbKeyObject);
+ if(pbKeyObject == NULL) {
+ xmlSecMallocError(cbKeyObject, NULL);
+ goto done;
+ }
+
+ /* prefix the key with a BCRYPT_KEY_DATA_BLOB_HEADER */
+ blobHeaderLen = sizeof(BCRYPT_KEY_DATA_BLOB_HEADER) + xmlSecBufferGetSize(&ctx->keyBuffer);
+ ret = xmlSecBufferSetSize(&blob, blobHeaderLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d",
+ blobHeaderLen);
+ goto done;
+ }
+
+ blobHeader = (BCRYPT_KEY_DATA_BLOB_HEADER*)xmlSecBufferGetData(&blob);
+ blobHeader->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
+ blobHeader->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
+ blobHeader->cbKeyData = xmlSecBufferGetSize(&ctx->keyBuffer);
+ memcpy(xmlSecBufferGetData(&blob) + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER),
+ xmlSecBufferGetData(&ctx->keyBuffer),
+ xmlSecBufferGetSize(&ctx->keyBuffer));
+
+ /* perform the actual import */
+ status = BCryptImportKey(hAlg,
+ NULL,
+ BCRYPT_KEY_DATA_BLOB,
+ &hKey,
+ pbKeyObject,
+ cbKeyObject,
+ xmlSecBufferGetData(&blob),
+ xmlSecBufferGetSize(&blob),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKey", NULL, status);
+ goto done;
+ }
+
+ /* iv len == block len */
+ dwBlockLenLen = sizeof(DWORD);
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_BLOCK_LENGTH,
+ (PUCHAR)&dwBlockLen,
+ sizeof(dwBlockLen),
+ &dwBlockLenLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ if(ivSize < dwBlockLen / 8) {
+ xmlSecInvalidSizeLessThanError("ivSize", ivSize, dwBlockLen / 8, NULL);
+ goto done;
+ }
+
+ /* handle padding manually */
+ if(out != in) {
+ memcpy(out, in, inSize);
+ }
+
+ /* caller handles iv manually, so let CNG work on a copy */
+ ret = xmlSecBufferInitialize(&ivCopy, ivSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferInitialize", NULL, "size=%d",
+ ivSize);
+ goto done;
+ }
+
+ memcpy(xmlSecBufferGetData(&ivCopy), iv, ivSize);
+
+ cbData = inSize;
+ status = BCryptEncrypt(hKey,
+ (PUCHAR)in,
+ inSize,
+ NULL,
+ xmlSecBufferGetData(&ivCopy),
+ ivSize,
+ out,
+ outSize,
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptEncrypt", NULL, status);
+ goto done;
+ }
+
+ res = cbData;
+
+done:
+ xmlSecBufferFinalize(&ivCopy);
+
+ if (hKey != NULL) {
+ BCryptDestroyKey(hKey);
+ }
+
+ xmlSecBufferFinalize(&blob);
+
+ if (pbKeyObject != NULL) {
+ xmlFree(pbKeyObject);
+ }
+
+ if(hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static int
+xmlSecMSCngKWDes3BlockDecrypt(void * context, const xmlSecByte * iv,
+ xmlSecSize ivSize, const xmlSecByte * in, xmlSecSize inSize,
+ xmlSecByte * out, xmlSecSize outSize) {
+ xmlSecMSCngKWDes3CtxPtr ctx = (xmlSecMSCngKWDes3CtxPtr)context;
+ BCRYPT_ALG_HANDLE hAlg = NULL;
+ BCRYPT_KEY_HANDLE hKey = NULL;
+ DWORD cbData;
+ PBYTE pbKeyObject = NULL;
+ DWORD cbKeyObject;
+ xmlSecBuffer blob;
+ BCRYPT_KEY_DATA_BLOB_HEADER* blobHeader;
+ xmlSecSize blobHeaderLen;
+ int res = -1;
+ NTSTATUS status;
+ DWORD dwBlockLen, dwBlockLenLen;
+ int ret;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetData(&(ctx->keyBuffer)) != NULL, -1);
+ xmlSecAssert2(xmlSecBufferGetSize(&(ctx->keyBuffer)) >= XMLSEC_KW_DES3_KEY_LENGTH, -1);
+ xmlSecAssert2(iv != NULL, -1);
+ xmlSecAssert2(ivSize >= XMLSEC_KW_DES3_IV_LENGTH, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(inSize > 0, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(outSize >= inSize, -1);
+
+ ret = xmlSecBufferInitialize(&blob, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
+ goto done;
+ }
+
+ status = BCryptOpenAlgorithmProvider(
+ &hAlg,
+ BCRYPT_3DES_ALGORITHM,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider", NULL, status);
+ goto done;
+ }
+
+ /* allocate the key object */
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbKeyObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ pbKeyObject = xmlMalloc(cbKeyObject);
+ if(pbKeyObject == NULL) {
+ xmlSecMallocError(cbKeyObject, NULL);
+ goto done;
+ }
+
+ /* prefix the key with a BCRYPT_KEY_DATA_BLOB_HEADER */
+ blobHeaderLen = sizeof(BCRYPT_KEY_DATA_BLOB_HEADER) + xmlSecBufferGetSize(&ctx->keyBuffer);
+ ret = xmlSecBufferSetSize(&blob, blobHeaderLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d",
+ blobHeaderLen);
+ goto done;
+ }
+
+ blobHeader = (BCRYPT_KEY_DATA_BLOB_HEADER*)xmlSecBufferGetData(&blob);
+ blobHeader->dwMagic = BCRYPT_KEY_DATA_BLOB_MAGIC;
+ blobHeader->dwVersion = BCRYPT_KEY_DATA_BLOB_VERSION1;
+ blobHeader->cbKeyData = xmlSecBufferGetSize(&ctx->keyBuffer);
+ memcpy(xmlSecBufferGetData(&blob) + sizeof(BCRYPT_KEY_DATA_BLOB_HEADER),
+ xmlSecBufferGetData(&ctx->keyBuffer),
+ xmlSecBufferGetSize(&ctx->keyBuffer));
+
+ /* perform the actual import */
+ status = BCryptImportKey(hAlg,
+ NULL,
+ BCRYPT_KEY_DATA_BLOB,
+ &hKey,
+ pbKeyObject,
+ cbKeyObject,
+ xmlSecBufferGetData(&blob),
+ xmlSecBufferGetSize(&blob),
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptImportKey", NULL, status);
+ goto done;
+ }
+
+ /* iv len == block len */
+ dwBlockLenLen = sizeof(DWORD);
+ status = BCryptGetProperty(hAlg,
+ BCRYPT_BLOCK_LENGTH,
+ (PUCHAR)&dwBlockLen,
+ sizeof(dwBlockLen),
+ &dwBlockLenLen,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty", NULL, status);
+ goto done;
+ }
+
+ if(ivSize < dwBlockLen / 8) {
+ xmlSecInvalidSizeLessThanError("ivSize", ivSize, dwBlockLen / 8, NULL);
+ goto done;
+ }
+
+ /* handle padding manually */
+ if(out != in) {
+ memcpy(out, in, inSize);
+ }
+
+ cbData = inSize;
+ status = BCryptDecrypt(hKey,
+ (PUCHAR)in,
+ inSize,
+ NULL,
+ (PUCHAR)iv,
+ ivSize,
+ out,
+ inSize,
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptDecrypt", NULL, status);
+ goto done;
+ }
+
+ res = cbData;
+
+done:
+ if (hKey != NULL) {
+ BCryptDestroyKey(hKey);
+ }
+
+ xmlSecBufferFinalize(&blob);
+
+ if (pbKeyObject != NULL) {
+ xmlFree(pbKeyObject);
+ }
+
+ if(hAlg != NULL) {
+ BCryptCloseAlgorithmProvider(hAlg, 0);
+ }
+
+ return(res);
+}
+
+static xmlSecKWDes3Klass xmlSecMSCngKWDesKlass = {
+ /* callbacks */
+ xmlSecMSCngKWDes3GenerateRandom, /* xmlSecKWDes3GenerateRandomMethod generateRandom; */
+ xmlSecMSCngKWDes3Sha1, /* xmlSecKWDes3Sha1Method sha1; */
+ xmlSecMSCngKWDes3BlockEncrypt, /* xmlSecKWDes3BlockEncryptMethod encrypt; */
+ xmlSecMSCngKWDes3BlockDecrypt, /* xmlSecKWDes3BlockDecryptMethod decrypt; */
+
+ /* for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+static int
+xmlSecMSCngKWDes3Initialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngKWDes3CtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWDes3Id), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWDes3Size), -1);
+
+ ctx = xmlSecMSCngKWDes3GetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKWDes3Ctx));
+
+ if(transform->id == xmlSecMSCngTransformKWDes3Id) {
+ ctx->pszAlgId = BCRYPT_DES_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataDesId;
+ ctx->keySize = XMLSEC_KW_DES3_KEY_LENGTH;
+ } else {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKWDes3Finalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngKWDes3CtxPtr ctx;
+
+ xmlSecAssert(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWDes3Id));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngKWDes3Size));
+
+ ctx = xmlSecMSCngKWDes3GetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ xmlSecBufferFinalize(&ctx->keyBuffer);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngKWDes3Ctx));
+}
+
+static int
+xmlSecMSCngKWDes3SetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecMSCngKWDes3CtxPtr ctx;
+
+ xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWDes3Id), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWDes3Size), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ ctx = xmlSecMSCngKWDes3GetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ keyReq->keyId = ctx->keyId;
+ keyReq->keyType = xmlSecKeyDataTypeSymmetric;
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ keyReq->keyUsage = xmlSecKeyUsageEncrypt;
+ } else {
+ keyReq->keyUsage = xmlSecKeyUsageDecrypt;
+ }
+ keyReq->keyBitsSize = ctx->keySize * 8;
+ return(0);
+}
+
+static int
+xmlSecMSCngKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngKWDes3CtxPtr ctx;
+ xmlSecBufferPtr buffer;
+ xmlSecSize keySize;
+ int ret;
+
+ xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWDes3Id), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWDes3Size), -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key),
+ xmlSecMSCngKeyDataDesId), -1);
+
+ ctx = xmlSecMSCngKWDes3GetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(xmlSecKeyGetValue(key));
+ xmlSecAssert2(buffer != NULL, -1);
+
+ keySize = xmlSecBufferGetSize(buffer);
+ if(keySize < ctx->keySize) {
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keySize,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ ret = xmlSecBufferSetData(&ctx->keyBuffer, xmlSecBufferGetData(buffer),
+ ctx->keySize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform), "size=%d", ctx->keySize);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngKWDes3CtxPtr ctx;
+ xmlSecBufferPtr in, out;
+ xmlSecSize inSize, outSize, keySize;
+ int ret;
+
+ xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecMSCngTransformKWDes3Id), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) ||
+ (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngKWDes3Size), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngKWDes3GetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ keySize = xmlSecBufferGetSize(&(ctx->keyBuffer));
+ xmlSecAssert2(keySize == XMLSEC_KW_DES3_KEY_LENGTH, -1);
+
+ in = &(transform->inBuf);
+ out = &(transform->outBuf);
+ inSize = xmlSecBufferGetSize(in);
+ outSize = xmlSecBufferGetSize(out);
+ xmlSecAssert2(outSize == 0, -1);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if((transform->status == xmlSecTransformStatusWorking) && (last == 0)) {
+ /* just do nothing */
+ } else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
+ if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
+ xmlSecInvalidSizeNotMultipleOfError("Input data", inSize,
+ XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ /* the encoded key might be 16 bytes longer plus one block just in case */
+ outSize = inSize + XMLSEC_KW_DES3_IV_LENGTH +
+ XMLSEC_KW_DES3_BLOCK_LENGTH + XMLSEC_KW_DES3_BLOCK_LENGTH;
+ } else {
+ /* just in case, add a block */
+ outSize = inSize + XMLSEC_KW_DES3_BLOCK_LENGTH;
+ }
+
+ ret = xmlSecBufferSetMaxSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ if(transform->operation == xmlSecTransformOperationEncrypt) {
+ ret = xmlSecKWDes3Encode(&xmlSecMSCngKWDesKlass, ctx,
+ xmlSecBufferGetData(in), inSize, xmlSecBufferGetData(out),
+ outSize);
+ if(ret < 0) {
+ xmlSecInternalError4("xmlSecKWDes3Encode",
+ xmlSecTransformGetName(transform), "key=%d,in=%d,out=%d",
+ keySize, inSize, outSize);
+ return(-1);
+ }
+
+ outSize = ret;
+ } else {
+ ret = xmlSecKWDes3Decode(&xmlSecMSCngKWDesKlass, ctx,
+ xmlSecBufferGetData(in), inSize,
+ xmlSecBufferGetData(out), outSize);
+ if(ret < 0) {
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
+ return(-1);
+ }
+ outSize = ret;
+ }
+
+ ret = xmlSecBufferSetSize(out, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform), "size=%d", inSize);
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusFinished;
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ /* the only way we can get here is if there is no input */
+ xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static xmlSecTransformKlass xmlSecMSCngKWDes3Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngKWDes3Size, /* xmlSecSize objSize */
+
+ xmlSecNameKWDes3, /* const xmlChar* name; */
+ xmlSecHrefKWDes3, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecMSCngKWDes3Initialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngKWDes3Finalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngKWDes3SetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecMSCngKWDes3SetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngKWDes3Execute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformKWDes3GetKlass:
+ *
+ * The Triple DES key wrapper transform klass.
+ *
+ * Returns: Triple DES key wrapper transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformKWDes3GetKlass(void) {
+ return(&xmlSecMSCngKWDes3Klass);
+}
+
+#endif /* XMLSEC_NO_DES */
diff --git a/src/mscng/signatures.c b/src/mscng/signatures.c
new file mode 100644
index 00000000..fb89569a
--- /dev/null
+++ b/src/mscng/signatures.c
@@ -0,0 +1,1095 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/certkeys.h>
+
+/**************************************************************************
+ *
+ * Internal MSCng signatures ctx
+ *
+ *****************************************************************************/
+typedef struct _xmlSecMSCngSignatureCtx xmlSecMSCngSignatureCtx,
+ *xmlSecMSCngSignatureCtxPtr;
+struct _xmlSecMSCngSignatureCtx {
+ xmlSecKeyDataPtr data;
+ xmlSecKeyDataId keyId;
+ LPCWSTR pszHashAlgId;
+ DWORD cbHash;
+ PBYTE pbHash;
+ BCRYPT_ALG_HANDLE hHashAlg;
+ PBYTE pbHashObject;
+ BCRYPT_HASH_HANDLE hHash;
+};
+
+/******************************************************************************
+ *
+ * Signature transforms
+ *
+ * xmlSecMSCngSignatureCtx is located after xmlSecTransform
+ *
+ *****************************************************************************/
+#define xmlSecMSCngSignatureSize \
+ (sizeof(xmlSecTransform) + sizeof(xmlSecMSCngSignatureCtx))
+#define xmlSecMSCngSignatureGetCtx(transform) \
+ ((xmlSecMSCngSignatureCtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
+
+static int xmlSecMSCngSignatureCheckId (xmlSecTransformPtr transform);
+static int xmlSecMSCngSignatureInitialize (xmlSecTransformPtr transform);
+static void xmlSecMSCngSignatureFinalize (xmlSecTransformPtr transform);
+static int xmlSecMSCngSignatureSetKeyReq (xmlSecTransformPtr transform,
+ xmlSecKeyReqPtr keyReq);
+static int xmlSecMSCngSignatureSetKey (xmlSecTransformPtr transform,
+ xmlSecKeyPtr key);
+static int xmlSecMSCngSignatureVerify (xmlSecTransformPtr transform,
+ const xmlSecByte* data,
+ xmlSecSize dataSize,
+ xmlSecTransformCtxPtr transformCtx);
+static int xmlSecMSCngSignatureExecute (xmlSecTransformPtr transform,
+ int last,
+ xmlSecTransformCtxPtr transformCtx);
+
+
+static int xmlSecMSCngSignatureCheckId(xmlSecTransformPtr transform) {
+
+#ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformDsaSha1Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaMd5Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha1Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha256Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha384Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha512Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_ECDSA
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha1Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha256Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha384Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha512Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
+
+ /* not found */
+ return(0);
+}
+
+static int xmlSecMSCngSignatureInitialize(xmlSecTransformPtr transform) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngSignatureCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize), -1);
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngSignatureCtx));
+
+#ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformDsaSha1Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA1_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataDsaId;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaMd5Id)) {
+ ctx->pszHashAlgId = BCRYPT_MD5_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataRsaId;
+ } else
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha1Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA1_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataRsaId;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha256Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA256_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataRsaId;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha384Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA384_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataRsaId;
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformRsaSha512Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA512_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataRsaId;
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_ECDSA
+
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha1Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA1_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataEcdsaId;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha256Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA256_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataEcdsaId;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha384Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA384_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataEcdsaId;
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecMSCngTransformEcdsaSha512Id)) {
+ ctx->pszHashAlgId = BCRYPT_SHA512_ALGORITHM;
+ ctx->keyId = xmlSecMSCngKeyDataEcdsaId;
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
+
+ /* not found */
+ {
+ xmlSecInvalidTransfromError(transform)
+ return(-1);
+ }
+
+ return(0);
+}
+
+static void xmlSecMSCngSignatureFinalize(xmlSecTransformPtr transform) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+
+ xmlSecAssert(xmlSecMSCngSignatureCheckId(transform));
+ xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize));
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->data != NULL) {
+ xmlSecKeyDataDestroy(ctx->data);
+ }
+
+ // MSDN documents at
+ // https://msdn.microsoft.com/en-us/library/windows/desktop/aa376217(v=vs.85).aspx
+ // that the order of cleanup should be:
+ // - algo handle
+ // - hash handle
+ // - hash object pointer
+ // - hash pointer
+
+ if(ctx->hHashAlg != 0) {
+ BCryptCloseAlgorithmProvider(ctx->hHashAlg, 0);
+ }
+
+ if(ctx->hHash != 0) {
+ BCryptDestroyHash(ctx->hHash);
+ }
+
+ if(ctx->pbHashObject != NULL) {
+ xmlFree(ctx->pbHashObject);
+ }
+
+ if(ctx->pbHash != NULL) {
+ xmlFree(ctx->pbHash);
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngSignatureCtx));
+}
+
+static int xmlSecMSCngSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+ xmlSecKeyDataPtr value;
+
+ xmlSecAssert2(xmlSecMSCngSignatureCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize), -1);
+ xmlSecAssert2(key != NULL, -1);
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+ xmlSecAssert2(ctx->pszHashAlgId != 0, -1);
+ xmlSecAssert2(xmlSecKeyCheckId(key, ctx->keyId), -1);
+
+ value = xmlSecKeyGetValue(key);
+ xmlSecAssert2(value != NULL, -1);
+
+ ctx->data = xmlSecKeyDataDuplicate(value);
+ if(ctx->data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataDuplicate",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int xmlSecMSCngSignatureSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecMSCngSignatureCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize), -1);
+ xmlSecAssert2(keyReq != NULL, -1);
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+
+ keyReq->keyId = ctx->keyId;
+ if(transform->operation == xmlSecTransformOperationSign) {
+ keyReq->keyType = xmlSecKeyDataTypePrivate;
+ keyReq->keyUsage = xmlSecKeyUsageSign;
+ } else {
+ keyReq->keyType = xmlSecKeyDataTypePublic;
+ keyReq->keyUsage = xmlSecKeyUsageVerify;
+ }
+ return(0);
+}
+
+static int xmlSecMSCngSignatureVerify(xmlSecTransformPtr transform,
+ const xmlSecByte* data,
+ xmlSecSize dataSize,
+ xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+ BCRYPT_KEY_HANDLE pubkey;
+ NTSTATUS status;
+ BCRYPT_PKCS1_PADDING_INFO info;
+ BCRYPT_PKCS1_PADDING_INFO* pInfo = NULL;
+ DWORD infoFlags = 0;
+
+ xmlSecAssert2(xmlSecMSCngSignatureCheckId(transform), -1);
+ xmlSecAssert2(transform->operation == xmlSecTransformOperationVerify, -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize), -1);
+ xmlSecAssert2(transform->status == xmlSecTransformStatusFinished, -1);
+ xmlSecAssert2(data != NULL, -1);
+ xmlSecAssert2(dataSize > 0, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ pubkey = xmlSecMSCngKeyDataGetPubKey(ctx->data);
+ if(pubkey == 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataGetPubKey",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ if(ctx->keyId == xmlSecMSCngKeyDataRsaId) {
+ /* RSA needs explicit padding, otherwise STATUS_INVALID_PARAMETER is
+ * returned */
+ info.pszAlgId = ctx->pszHashAlgId;
+ pInfo = &info;
+ infoFlags = BCRYPT_PAD_PKCS1;
+ }
+
+ status = BCryptVerifySignature(
+ pubkey,
+ pInfo,
+ ctx->pbHash,
+ ctx->cbHash,
+ (PBYTE)data,
+ dataSize,
+ infoFlags);
+ if(status != STATUS_SUCCESS) {
+ if(status == STATUS_INVALID_SIGNATURE) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "BCryptVerifySignature: the signature was not verified");
+ transform->status = xmlSecTransformStatusFail;
+ return(-1);
+ } else {
+ xmlSecMSCngNtError("BCryptVerifySignature",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+ }
+
+ transform->status = xmlSecTransformStatusOk;
+ return(0);
+}
+
+static int
+xmlSecMSCngSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecMSCngSignatureCtxPtr ctx;
+ xmlSecSize inSize;
+ xmlSecSize outSize;
+ NTSTATUS status;
+ DWORD cbData = 0;
+ DWORD cbHashObject = 0;
+ BCRYPT_PKCS1_PADDING_INFO info;
+ BCRYPT_PKCS1_PADDING_INFO* pInfo = NULL;
+ DWORD infoFlags = 0;
+ int ret;
+
+ xmlSecAssert2(xmlSecMSCngSignatureCheckId(transform), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCngSignatureSize), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ ctx = xmlSecMSCngSignatureGetCtx(transform);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pszHashAlgId != NULL, -1);
+
+ inSize = xmlSecBufferGetSize(&transform->inBuf);
+ outSize = xmlSecBufferGetSize(&transform->outBuf);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ xmlSecAssert2(outSize == 0, -1);
+
+ /* open an algorithm handle */
+ status = BCryptOpenAlgorithmProvider(
+ &ctx->hHashAlg,
+ ctx->pszHashAlgId,
+ NULL,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptOpenAlgorithmProvider",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* calculate the size of the buffer to hold the hash object */
+ status = BCryptGetProperty(
+ ctx->hHashAlg,
+ BCRYPT_OBJECT_LENGTH,
+ (PBYTE)&cbHashObject,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* allocate the hash object on the heap */
+ ctx->pbHashObject = (PBYTE)xmlMalloc(cbHashObject);
+ if(ctx->pbHashObject == NULL) {
+ xmlSecMallocError(cbHashObject, NULL);
+ return(-1);
+ }
+
+ /* calculate the length of the hash */
+ status = BCryptGetProperty(
+ ctx->hHashAlg,
+ BCRYPT_HASH_LENGTH,
+ (PBYTE)&ctx->cbHash,
+ sizeof(DWORD),
+ &cbData,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptGetProperty",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ /* allocate the hash buffer on the heap */
+ ctx->pbHash = (PBYTE)xmlMalloc(ctx->cbHash);
+ if(ctx->pbHash == NULL) {
+ xmlSecMallocError(ctx->cbHash, NULL);
+ return(-1);
+ }
+
+ /* create the hash */
+ status = BCryptCreateHash(
+ ctx->hHashAlg,
+ &ctx->hHash,
+ ctx->pbHashObject,
+ cbHashObject,
+ NULL,
+ 0,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptCreateHash",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ if(transform->status == xmlSecTransformStatusWorking) {
+ if(inSize > 0) {
+ xmlSecAssert2(outSize == 0, -1);
+
+ /* hash some data */
+ status = BCryptHashData(
+ ctx->hHash,
+ (PBYTE)xmlSecBufferGetData(&transform->inBuf),
+ inSize,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptHashData",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ ret = xmlSecBufferRemoveHead(&transform->inBuf, inSize);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+ }
+
+ if(last != 0) {
+ /* close the hash */
+ status = BCryptFinishHash(
+ ctx->hHash,
+ ctx->pbHash,
+ ctx->cbHash,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("BCryptFinishHash", xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+
+ xmlSecAssert2(ctx->cbHash > 0, -1);
+
+ if(transform->operation == xmlSecTransformOperationSign) {
+ NCRYPT_KEY_HANDLE privkey;
+ DWORD cbSignature;
+
+ privkey = xmlSecMSCngKeyDataGetPrivKey(ctx->data);
+ if(privkey == 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataGetPrivKey",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ /* calculate the length of the signature */
+ status = NCryptSignHash(
+ privkey,
+ NULL,
+ ctx->pbHash,
+ ctx->cbHash,
+ NULL,
+ 0,
+ &cbSignature,
+ 0);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("NCryptSignHash",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+ outSize = (xmlSecSize)cbSignature;
+
+ /* allocate the signature buffer on the heap */
+ ret = xmlSecBufferSetSize(&transform->outBuf, outSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform), "size=%d", outSize);
+ return(-1);
+ }
+
+ /* sign the hash */
+ if(ctx->keyId == xmlSecMSCngKeyDataRsaId) {
+ info.pszAlgId = ctx->pszHashAlgId;
+ pInfo = &info;
+ infoFlags = BCRYPT_PAD_PKCS1;
+ }
+ status = NCryptSignHash(
+ privkey,
+ pInfo,
+ ctx->pbHash,
+ ctx->cbHash,
+ (PBYTE)xmlSecBufferGetData(&transform->outBuf),
+ cbSignature,
+ &cbSignature,
+ infoFlags);
+ if(status != STATUS_SUCCESS) {
+ xmlSecMSCngNtError("NCryptSignHash",
+ xmlSecTransformGetName(transform), status);
+ return(-1);
+ }
+ }
+ transform->status = xmlSecTransformStatusFinished;
+ }
+ }
+
+ if((transform->status == xmlSecTransformStatusWorking) ||
+ (transform->status == xmlSecTransformStatusFinished)) {
+ xmlSecAssert2(xmlSecBufferGetSize(&transform->inBuf) == 0, -1);
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
+
+ return(0);
+}
+
+#ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
+/****************************************************************************
+ *
+ * DSA-SHA1 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngDsaSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameDsaSha1, /* const xmlChar* name; */
+ xmlSecHrefDsaSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformDsaSha1GetKlass:
+ *
+ * The DSA-SHA1 signature transform klass.
+ *
+ * Returns: DSA-SHA1 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformDsaSha1GetKlass(void) {
+ return(&xmlSecMSCngDsaSha1Klass);
+}
+#endif /* XMLSEC_NO_SHA1 */
+
+#endif /* XMLSEC_NO_DSA */
+
+#ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+/****************************************************************************
+ *
+ * RSA-MD5 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaMd5Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaMd5, /* const xmlChar* name; */
+ xmlSecHrefRsaMd5, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaMd5GetKlass:
+ *
+ * The RSA-MD5 signature transform klass.
+ *
+ * Returns: RSA-MD5 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaMd5GetKlass(void) {
+ return(&xmlSecMSCngRsaMd5Klass);
+}
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_SHA1
+/****************************************************************************
+ *
+ * RSA-SHA1 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaSha1, /* const xmlChar* name; */
+ xmlSecHrefRsaSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaSha1GetKlass:
+ *
+ * The RSA-SHA1 signature transform klass.
+ *
+ * Returns: RSA-SHA1 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaSha1GetKlass(void) {
+ return(&xmlSecMSCngRsaSha1Klass);
+}
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/****************************************************************************
+ *
+ * RSA-SHA256 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaSha256, /* const xmlChar* name; */
+ xmlSecHrefRsaSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaSha256GetKlass:
+ *
+ * The RSA-SHA256 signature transform klass.
+ *
+ * Returns: RSA-SHA256 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaSha256GetKlass(void) {
+ return(&xmlSecMSCngRsaSha256Klass);
+}
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/****************************************************************************
+ *
+ * RSA-SHA384 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaSha384Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaSha384, /* const xmlChar* name; */
+ xmlSecHrefRsaSha384, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaSha384GetKlass:
+ *
+ * The RSA-SHA384 signature transform klass.
+ *
+ * Returns: RSA-SHA384 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaSha384GetKlass(void) {
+ return(&xmlSecMSCngRsaSha384Klass);
+}
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/****************************************************************************
+ *
+ * RSA-SHA512 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngRsaSha512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaSha512, /* const xmlChar* name; */
+ xmlSecHrefRsaSha512, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformRsaSha512GetKlass:
+ *
+ * The RSA-SHA512 signature transform klass.
+ *
+ * Returns: RSA-SHA512 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformRsaSha512GetKlass(void) {
+ return(&xmlSecMSCngRsaSha512Klass);
+}
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_RSA */
+
+#ifndef XMLSEC_NO_ECDSA
+
+#ifndef XMLSEC_NO_SHA1
+/****************************************************************************
+ *
+ * ECDSA-SHA1 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngEcdsaSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha1, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformEcdsaSha1GetKlass:
+ *
+ * The ECDSA-SHA1 signature transform klass.
+ *
+ * Returns: ECDSA-SHA1 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformEcdsaSha1GetKlass(void) {
+ return(&xmlSecMSCngEcdsaSha1Klass);
+}
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/****************************************************************************
+ *
+ * ECDSA-SHA256 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngEcdsaSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha256, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformEcdsaSha256GetKlass:
+ *
+ * The ECDSA-SHA256 signature transform klass.
+ *
+ * Returns: ECDSA-SHA256 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformEcdsaSha256GetKlass(void) {
+ return(&xmlSecMSCngEcdsaSha256Klass);
+}
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/****************************************************************************
+ *
+ * ECDSA-SHA384 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngEcdsaSha384Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha384, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha384, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformEcdsaSha384GetKlass:
+ *
+ * The ECDSA-SHA384 signature transform klass.
+ *
+ * Returns: ECDSA-SHA384 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformEcdsaSha384GetKlass(void) {
+ return(&xmlSecMSCngEcdsaSha384Klass);
+}
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/****************************************************************************
+ *
+ * ECDSA-SHA512 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecMSCngEcdsaSha512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCngSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha512, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha512, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCngSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCngSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCngSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCngSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCngSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCngSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngTransformEcdsaSha512GetKlass:
+ *
+ * The ECDSA-SHA512 signature transform klass.
+ *
+ * Returns: ECDSA-SHA512 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCngTransformEcdsaSha512GetKlass(void) {
+ return(&xmlSecMSCngEcdsaSha512Klass);
+}
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_ECDSA */
diff --git a/src/mscng/symkeys.c b/src/mscng/symkeys.c
new file mode 100644
index 00000000..916cd388
--- /dev/null
+++ b/src/mscng/symkeys.c
@@ -0,0 +1,345 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#include <string.h>
+
+#define WIN32_NO_STATUS
+#include <windows.h>
+#undef WIN32_NO_STATUS
+#include <ntstatus.h>
+#include <bcrypt.h>
+#include <ncrypt.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+#include <xmlsec/bn.h>
+
+#include <xmlsec/mscng/crypto.h>
+
+#define xmlSecMSCngSymKeyDataCheckId(data) \
+ (xmlSecKeyDataIsValid((data)) && \
+ xmlSecMSCngSymKeyDataKlassCheck((data)->id))
+
+static int
+xmlSecMSCngSymKeyDataKlassCheck(xmlSecKeyDataKlass* klass) {
+
+#ifndef XMLSEC_NO_AES
+ if(klass == xmlSecMSCngKeyDataAesId) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+ if(klass == xmlSecMSCngKeyDataDesId) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_DES */
+
+#ifndef XMLSEC_NO_HMAC
+ if(klass == xmlSecMSCngKeyDataHmacId) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_HMAC */
+
+ {
+ return(0);
+ }
+}
+
+static int
+xmlSecMSCngSymKeyDataInitialize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(data), -1);
+
+ return(xmlSecKeyDataBinaryValueInitialize(data));
+}
+
+static int
+xmlSecMSCngSymKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(dst), -1);
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(src), -1);
+ xmlSecAssert2(dst->id == src->id, -1);
+
+ return(xmlSecKeyDataBinaryValueDuplicate(dst, src));
+}
+
+static void
+xmlSecMSCngSymKeyDataFinalize(xmlSecKeyDataPtr data) {
+ xmlSecAssert(xmlSecMSCngSymKeyDataCheckId(data));
+
+ xmlSecKeyDataBinaryValueFinalize(data);
+}
+
+static int
+xmlSecMSCngSymKeyDataGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
+ xmlSecKeyDataType type) {
+ xmlSecBufferPtr buffer;
+
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(data), -1);
+ xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
+ xmlSecAssert2(buffer != NULL, -1);
+
+ return(xmlSecMSCngGenerateRandom(buffer, (sizeBits + 7) / 8));
+}
+
+static xmlSecKeyDataType
+xmlSecMSCngSymKeyDataGetType(xmlSecKeyDataPtr data) {
+ xmlSecBufferPtr buffer;
+
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(data), xmlSecKeyDataTypeUnknown);
+
+ buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
+ xmlSecAssert2(buffer != NULL, xmlSecKeyDataTypeUnknown);
+
+ return((xmlSecBufferGetSize(buffer) > 0) ? xmlSecKeyDataTypeSymmetric : xmlSecKeyDataTypeUnknown);
+}
+
+static xmlSecSize
+xmlSecMSCngSymKeyDataGetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataCheckId(data), 0);
+
+ return(xmlSecKeyDataBinaryValueGetSize(data));
+}
+
+static int
+xmlSecMSCngSymKeyDataXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataKlassCheck(id), -1);
+
+ return(xmlSecKeyDataBinaryValueXmlRead(id, key, node, keyInfoCtx));
+}
+
+static int
+xmlSecMSCngSymKeyDataXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataKlassCheck(id), -1);
+
+ return(xmlSecKeyDataBinaryValueXmlWrite(id, key, node, keyInfoCtx));
+}
+
+static int
+xmlSecMSCngSymKeyDataBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ const unsigned char* buf, xmlSecSize bufSize,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataKlassCheck(id), -1);
+
+ return(xmlSecKeyDataBinaryValueBinRead(id, key, buf, bufSize, keyInfoCtx));
+}
+
+static int
+xmlSecMSCngSymKeyDataBinWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ unsigned char** buf, xmlSecSize* bufSize,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecAssert2(xmlSecMSCngSymKeyDataKlassCheck(id), -1);
+
+ return(xmlSecKeyDataBinaryValueBinWrite(id, key, buf, bufSize, keyInfoCtx));
+}
+
+static void
+xmlSecMSCngSymKeyDataDebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecMSCngSymKeyDataCheckId(data));
+
+ xmlSecKeyDataBinaryValueDebugDump(data, output);
+}
+
+static void
+xmlSecMSCngSymKeyDataDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecMSCngSymKeyDataCheckId(data));
+
+ xmlSecKeyDataBinaryValueDebugXmlDump(data, output);
+}
+
+#ifndef XMLSEC_NO_HMAC
+
+/**************************************************************************
+ *
+ * <xmlsec:HMACKeyValue> processing
+ *
+ *************************************************************************/
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataHmacKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecKeyDataBinarySize,
+
+ /* data */
+ xmlSecNameHMACKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefHMACKeyValue, /* const xmlChar* href; */
+ xmlSecNodeHMACKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ xmlSecMSCngSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ xmlSecMSCngSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
+ xmlSecMSCngSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataHmacGetKlass:
+ *
+ * The HMAC key data klass.
+ *
+ * Returns: HMAC key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataHmacGetKlass(void) {
+ return(&xmlSecMSCngKeyDataHmacKlass);
+}
+#endif /* XMLSEC_NO_HMAC */
+
+#ifndef XMLSEC_NO_AES
+/**************************************************************************
+ *
+ * <xmlsec:AESKeyValue> processing
+ *
+ *************************************************************************/
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataAesKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecKeyDataBinarySize,
+
+ /* data */
+ xmlSecNameAESKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefAESKeyValue, /* const xmlChar* href; */
+ xmlSecNodeAESKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ xmlSecMSCngSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ xmlSecMSCngSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
+ xmlSecMSCngSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataAesGetKlass:
+ *
+ * The AES key data klass.
+ *
+ * Returns: AES key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataAesGetKlass(void) {
+ return(&xmlSecMSCngKeyDataAesKlass);
+}
+#endif /* XMLSEC_NO_AES */
+
+#ifndef XMLSEC_NO_DES
+
+/**************************************************************************
+ *
+ * <xmlsec:DESKeyValue> processing
+ *
+ *************************************************************************/
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataDesKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecKeyDataBinarySize,
+
+ /* data */
+ xmlSecNameDESKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefDESKeyValue, /* const xmlChar* href; */
+ xmlSecNodeDESKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngSymKeyDataInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngSymKeyDataDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngSymKeyDataFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ xmlSecMSCngSymKeyDataGenerate, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngSymKeyDataGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCngSymKeyDataGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngSymKeyDataXmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngSymKeyDataXmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ xmlSecMSCngSymKeyDataBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
+ xmlSecMSCngSymKeyDataBinWrite, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngSymKeyDataDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngSymKeyDataDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataDesGetKlass:
+ *
+ * The DES key data klass.
+ *
+ * Returns: DES key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataDesGetKlass(void) {
+ return(&xmlSecMSCngKeyDataDesKlass);
+}
+
+#endif /* XMLSEC_NO_DES */
diff --git a/src/mscng/x509.c b/src/mscng/x509.c
new file mode 100644
index 00000000..4db2659e
--- /dev/null
+++ b/src/mscng/x509.c
@@ -0,0 +1,1423 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:x509
+ * @Short_description: X509 certificates implementation for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Stable
+ *
+ */
+
+#include "globals.h"
+
+#ifndef XMLSEC_NO_X509
+
+#include <string.h>
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/x509.h>
+#include <xmlsec/base64.h>
+#include <xmlsec/bn.h>
+#include <xmlsec/errors.h>
+
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/x509.h>
+#include <xmlsec/mscng/certkeys.h>
+
+typedef struct _xmlSecMSCngX509DataCtx xmlSecMSCngX509DataCtx,
+ *xmlSecMSCngX509DataCtxPtr;
+
+struct _xmlSecMSCngX509DataCtx {
+ HCERTSTORE hMemStore;
+ PCCERT_CONTEXT cert;
+};
+
+#define xmlSecMSCngX509DataSize \
+ (sizeof(xmlSecKeyData) + sizeof(xmlSecMSCngX509DataCtx))
+#define xmlSecMSCngX509DataGetCtx(data) \
+ ((xmlSecMSCngX509DataCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecKeyData)))
+
+static int
+xmlSecMSCngKeyDataX509Initialize(xmlSecKeyDataPtr data) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ memset(ctx, 0, sizeof(xmlSecMSCngX509DataCtx));
+
+ ctx->hMemStore = CertOpenStore(CERT_STORE_PROV_MEMORY,
+ 0,
+ 0,
+ CERT_STORE_CREATE_NEW_FLAG,
+ NULL);
+ if(ctx->hMemStore == 0) {
+ xmlSecMSCngLastError("CertOpenStore", xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ PCCERT_CONTEXT srcCert = NULL;
+ PCCERT_CONTEXT dstCert;
+ xmlSecMSCngX509DataCtxPtr srcCtx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCngKeyDataX509Id), -1);
+ srcCtx = xmlSecMSCngX509DataGetCtx(src);
+
+ /* duplicate the certificate store */
+ while((srcCert = CertEnumCertificatesInStore(srcCtx->hMemStore, srcCert)) != NULL) {
+ dstCert = CertDuplicateCertificateContext(srcCert);
+ if(dstCert == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(dst));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(dst, dstCert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(dst));
+ CertFreeCertificateContext(dstCert);
+ return(-1);
+ }
+ }
+
+ if(srcCtx->cert != NULL) {
+ /* have a key certificate, duplicate that */
+ dstCert = CertDuplicateCertificateContext(srcCtx->cert);
+ if(dstCert == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(dst));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptKeyCert(dst, dstCert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(dst));
+ CertFreeCertificateContext(dstCert);
+ return(-1);
+ }
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKeyDataX509Finalize(xmlSecKeyDataPtr data) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id));
+
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->cert != NULL) {
+ if(!CertFreeCertificateContext(ctx->cert)) {
+ xmlSecMSCngLastError("CertFreeCertificateContext", NULL);
+ }
+ }
+
+ if(ctx->hMemStore != 0) {
+ if(!CertCloseStore(ctx->hMemStore, 0)) {
+ xmlSecMSCngLastError("CertCloseStore", NULL);
+ }
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngX509DataCtx));
+}
+
+static xmlSecKeyDataType
+xmlSecMSCngKeyDataX509GetType(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), xmlSecKeyDataTypeUnknown);
+
+ return(xmlSecKeyDataTypeUnknown);
+}
+
+static const xmlChar*
+xmlSecMSCngKeyDataX509GetIdentifier(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), NULL);
+
+ return(NULL);
+}
+
+/**
+ * xmlSecMSCngX509CertDerRead:
+ *
+ * The MSCng reader for the binary (DER-encoded) X509 certificate content.
+ */
+static PCCERT_CONTEXT
+xmlSecMSCngX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
+ PCCERT_CONTEXT cert;
+
+ xmlSecAssert2(buf != NULL, NULL);
+ xmlSecAssert2(size > 0, NULL);
+
+ cert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, buf, size);
+ if(cert == NULL) {
+ xmlSecMSCngLastError("CertCreateCertificateContext", NULL);
+ return(NULL);
+ }
+
+ return(cert);
+}
+
+/**
+ * xmlSecMSCngX509CertBase64DerRead:
+ *
+ * The MSCng reader for the <X509Certificate> XML content.
+ */
+static PCCERT_CONTEXT
+xmlSecMSCngX509CertBase64DerRead(xmlChar* buf) {
+ int size;
+
+ xmlSecAssert2(buf != NULL, NULL);
+
+ /* in-place decoding */
+ size = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
+ if(size < 0) {
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
+ return(NULL);
+ }
+
+ return(xmlSecMSCngX509CertDerRead((xmlSecByte*)buf, size));
+}
+
+
+int
+xmlSecMSCngKeyDataX509AdoptKeyCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT cert) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(cert != NULL, -1);
+
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if(ctx->cert != NULL) {
+ CertFreeCertificateContext(ctx->cert);
+ }
+ ctx->cert = cert;
+
+ return(0);
+}
+
+int
+xmlSecMSCngKeyDataX509AdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT cert) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(cert != NULL, -1);
+
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hMemStore != 0, -1);
+
+ if(!CertAddCertificateContextToStore(ctx->hMemStore,
+ cert,
+ CERT_STORE_ADD_ALWAYS,
+ NULL)) {
+ xmlSecMSCngLastError("CertAddCertificateContextToStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ /* this just decrements the refcount, so won't free */
+ CertFreeCertificateContext(cert);
+ return(0);
+}
+
+/**
+ * xmlSecMSCngKeyDataX509AdoptCrl:
+ * @data: the pointer to X509 key data.
+ * @crl: the pointer to MSCng X509 CRL.
+ *
+ * Adds CRL to the X509 key data.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, PCCRL_CONTEXT crl) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(crl != 0, -1);
+
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hMemStore != 0, -1);
+
+ if (!CertAddCRLContextToStore(ctx->hMemStore, crl, CERT_STORE_ADD_ALWAYS, NULL)) {
+ xmlSecMSCngLastError("CertAddCRLContextToStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509SubjectNameNodeRead:
+ *
+ * The MSCng reader for the <X509SubjectName> XML element.
+ */
+static int
+xmlSecMSCngX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyDataStorePtr store;
+ xmlChar* subject;
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
+
+ store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCngX509StoreId);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ subject = xmlNodeGetContent(node);
+ if((subject == NULL) || (xmlSecIsEmptyString(subject) == 1)) {
+ if(subject != NULL) {
+ xmlFree(subject);
+ }
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data),
+ "empty");
+ return(-1);
+ }
+
+ return(0);
+ }
+
+ cert = xmlSecMSCngX509StoreFindCert(store, subject, NULL, NULL, NULL, keyInfoCtx);
+ if(cert == NULL) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND,
+ xmlSecKeyDataGetName(data), "subject=%s",
+ xmlSecErrorsSafeString(subject));
+ xmlFree(subject);
+ return(-1);
+ }
+
+ xmlFree(subject);
+ return(0);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(data, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
+ CertFreeCertificateContext(cert);
+ xmlFree(subject);
+ return(-1);
+ }
+
+ xmlFree(subject);
+ return(0);
+}
+/**
+ * xmlSecMSCngX509CertificateNodeRead:
+ *
+ * The MSCng reader for the <X509Certificate> XML element.
+ */
+static int
+xmlSecMSCngX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlChar* content;
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ content = xmlNodeGetContent(node);
+ if((content == NULL) || (xmlSecIsEmptyString(content) == 1)) {
+ if(content != NULL) {
+ xmlFree(content);
+ }
+
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data),
+ "content is an empty string");
+ return(-1);
+ }
+
+ return(0);
+ }
+
+ cert = xmlSecMSCngX509CertBase64DerRead(content);
+ if(cert == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509CertBase64DerRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(data, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+
+ }
+
+ xmlFree(content);
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509IssuerSerialNodeRead:
+ *
+ * The MSCng reader for the <X509IssuerSerial> XML element.
+ */
+static int
+xmlSecMSCngX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyDataStorePtr store;
+ xmlNodePtr cur;
+ xmlChar* issuerName;
+ xmlChar* issuerSerial;
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
+
+ store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCngX509StoreId);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ cur = xmlSecGetNextElementNode(node->children);
+ if(cur == NULL) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ return(0);
+ }
+
+ /* handle X509IssuerName */
+ if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509IssuerName,
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ issuerName = xmlNodeGetContent(cur);
+ if(issuerName == NULL) {
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data),
+ "empty");
+ return(-1);
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+ if(cur == NULL) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ return(0);
+ }
+
+ /* handle X509SerialNumber */
+ if(!xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509SerialNumber,
+ xmlSecKeyDataGetName(data));
+ xmlFree(issuerName);
+ return(-1);
+ }
+
+ issuerSerial = xmlNodeGetContent(cur);
+ if(issuerSerial == NULL) {
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data),
+ "empty");
+ xmlFree(issuerSerial);
+ return(-1);
+ }
+
+ cur = xmlSecGetNextElementNode(cur->next);
+ if(cur != NULL) {
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
+ xmlFree(issuerSerial);
+ xmlFree(issuerName);
+ return(-1);
+ }
+
+ cert = xmlSecMSCngX509StoreFindCert(store, NULL, issuerName, issuerSerial,
+ NULL, keyInfoCtx);
+ if(cert == NULL) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "issuerName=%s;issuerSerial=%s",
+ xmlSecErrorsSafeString(issuerName),
+ xmlSecErrorsSafeString(issuerSerial));
+ xmlFree(issuerSerial);
+ xmlFree(issuerName);
+ return(-1);
+ }
+
+ xmlFree(issuerSerial);
+ xmlFree(issuerName);
+ return(0);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(data, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
+ CertFreeCertificateContext(cert);
+ xmlFree(issuerSerial);
+ xmlFree(issuerName);
+ return(-1);
+ }
+
+ xmlFree(issuerSerial);
+ xmlFree(issuerName);
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509SKINodeRead:
+ *
+ * The MSCng reader for the <X509SKI> XML element.
+ */
+static int
+xmlSecMSCngX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyDataStorePtr store;
+ xmlChar* ski;
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
+
+ store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCngX509StoreId);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ ski = xmlNodeGetContent(node);
+ if((ski == NULL) || (xmlSecIsEmptyString(ski) == 1)) {
+ if(ski != NULL) {
+ xmlFree(ski);
+ }
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data),
+ "empty");
+ return(-1);
+ }
+ return(0);
+ }
+
+ cert = xmlSecMSCngX509StoreFindCert(store, NULL, NULL, NULL, ski, keyInfoCtx);
+ if(cert == NULL){
+ xmlFree(ski);
+
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "ski=%s", xmlSecErrorsSafeString(ski));
+ return(-1);
+ }
+ return(0);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(data, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
+ CertFreeCertificateContext(cert);
+ xmlFree(ski);
+ return(-1);
+ }
+
+ xmlFree(ski);
+ return(0);
+}
+
+static PCCRL_CONTEXT
+xmlSecMSCngX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ PCCRL_CONTEXT crl = NULL;
+
+ xmlSecAssert2(buf != NULL, NULL);
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
+ xmlSecAssert2(size > 0, NULL);
+
+ crl = CertCreateCRLContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, buf, size);
+
+ if(crl == NULL) {
+ xmlSecMSCngLastError("CertCreateCRLContext", NULL);
+ return(NULL);
+ }
+
+ return(crl);
+}
+
+static PCCRL_CONTEXT
+xmlSecMSCngX509CrlBase64DerRead(xmlChar* buf, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ int ret;
+
+ xmlSecAssert2(buf != NULL, NULL);
+
+ /* usual trick with base64 decoding in-place */
+ ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
+ return(NULL);
+ }
+
+ return(xmlSecMSCngX509CrlDerRead((xmlSecByte*)buf, ret, keyInfoCtx));
+}
+
+static int
+xmlSecMSCngX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlChar *content;
+ PCCRL_CONTEXT crl;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ content = xmlNodeGetContent(node);
+ if((content == NULL) || (xmlSecIsEmptyString(content) == 1)) {
+ if(content != NULL) {
+ xmlFree(content);
+ }
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
+ return(-1);
+ }
+ return(0);
+ }
+
+ crl = xmlSecMSCngX509CrlBase64DerRead(content, keyInfoCtx);
+ if(crl == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509CrlBase64DerRead",
+ xmlSecKeyDataGetName(data));
+ xmlFree(content);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCrl(data, crl);
+ if (ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(data));
+ xmlFree(content);
+ CertFreeCRLContext(crl);
+ return(-1);
+ }
+
+ xmlFree(content);
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509DataNodeRead:
+ *
+ * The MSCng reader for the <X509Data> XML element.
+ */
+static int
+xmlSecMSCngX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlNodePtr cur;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ for(cur = xmlSecGetNextElementNode(node->children);
+ cur != NULL;
+ cur = xmlSecGetNextElementNode(cur->next)) {
+ if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
+ ret = xmlSecMSCngX509CertificateNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CertificateNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
+ ret = xmlSecMSCngX509SubjectNameNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509SubjectNameNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
+ ret = xmlSecMSCngX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509IssuerSerialNodeRead", NULL);
+ return(-1);
+ }
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
+ ret = xmlSecMSCngX509SKINodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509SKINodeRead", NULL);
+ return(-1);
+ }
+ } else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
+ ret = xmlSecMSCngX509CRLNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CRLNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ } else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ }
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509CertGetTime:
+ *
+ * Converts FILETIME timestamp into time_t. See
+ * <https://msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx>
+ * for details.
+ */
+static int
+xmlSecMSCngX509CertGetTime(FILETIME in, time_t* out) {
+ xmlSecAssert2(out != NULL, -1);
+
+ *out = in.dwHighDateTime;
+ *out <<= 32;
+ *out |= in.dwLowDateTime;
+ /* 100 nanoseconds -> seconds */
+ *out /= 10000;
+ /* 1601-01-01 epoch -> 1970-01-01 epoch */
+ *out -= 11644473600000;
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data,
+ xmlSecKeyPtr key, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecMSCngX509DataCtxPtr ctx;
+ xmlSecKeyDataStorePtr store;
+ PCCERT_CONTEXT cert;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id), -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+ xmlSecAssert2(keyInfoCtx->keysMngr != NULL, -1);
+
+ if(xmlSecKeyGetValue(key) != NULL) {
+ return(0);
+ }
+
+ ctx = xmlSecMSCngX509DataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->hMemStore != 0, -1);
+
+ if(ctx->cert != NULL) {
+ return(0);
+ }
+
+ store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCngX509StoreId);
+ if(store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ cert = xmlSecMSCngX509StoreVerify(store, ctx->hMemStore, keyInfoCtx);
+ if(cert != NULL) {
+ int ret;
+ PCCERT_CONTEXT certCopy;
+ xmlSecKeyDataPtr keyValue = NULL;
+
+ ctx->cert = CertDuplicateCertificateContext(cert);
+ if(ctx->cert == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ /* copy the certificate, so it can be adopted according to the key data
+ * type */
+ certCopy = CertDuplicateCertificateContext(ctx->cert);
+ if(certCopy == NULL) {
+ xmlSecMSCngLastError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ if((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) {
+ keyValue = xmlSecMSCngCertAdopt(certCopy, xmlSecKeyDataTypePrivate);
+ if(keyValue == NULL) {
+ xmlSecInternalError("xmlSecMSCngCertAdopt",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ } else if((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePublic) != 0) {
+ keyValue = xmlSecMSCngCertAdopt(certCopy, xmlSecKeyDataTypePublic);
+ if(keyValue == NULL) {
+ xmlSecInternalError("xmlSecMSCngCertAdopt",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ }
+
+ /* verify that keyValue matches the key requirements */
+ if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataGetName(data));
+ xmlSecKeyDataDestroy(keyValue);
+ return(-1);
+ }
+
+ ret = xmlSecKeySetValue(key, keyValue);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
+ xmlSecKeyDataDestroy(keyValue);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngX509CertGetTime(ctx->cert->pCertInfo->NotBefore,
+ &(key->notValidBefore));
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CertGetTime",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngX509CertGetTime(ctx->cert->pCertInfo->NotAfter,
+ &(key->notValidAfter));
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CertGetTime",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
+ } else if((keyInfoCtx->flags &
+ XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND,
+ xmlSecKeyDataGetName(data), NULL);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyDataPtr data;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataX509Id, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ data = xmlSecKeyEnsureData(key, id);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngX509DataNodeRead(data, node, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509DataNodeRead",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngX509CertificateNodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlChar* buf;
+ xmlNodePtr child;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(cert->pbCertEncoded != NULL, -1);
+ xmlSecAssert2(cert->cbCertEncoded > 0, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ buf = xmlSecBase64Encode(cert->pbCertEncoded, cert->cbCertEncoded,
+ keyInfoCtx->base64LineSize);
+ if(buf == NULL) {
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
+ return(-1);
+ }
+
+ child = xmlSecEnsureEmptyChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
+ if(child == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ xmlNodeSetContent(child, buf);
+ xmlFree(buf);
+
+ return(0);
+}
+
+static xmlChar*
+xmlSecMSCngX509NameWrite(PCERT_NAME_BLOB nm) {
+ LPTSTR resT = NULL;
+ xmlChar *res = NULL;
+ DWORD csz;
+
+
+ xmlSecAssert2(nm->pbData != NULL, NULL);
+ xmlSecAssert2(nm->cbData > 0, NULL);
+
+ csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, NULL, 0);
+ if(csz <= 0) {
+ xmlSecMSCngLastError("CertNameToStr", NULL);
+ return(NULL);
+ }
+
+ resT = (LPTSTR)xmlMalloc(sizeof(TCHAR) * (csz + 1));
+ if (NULL == resT) {
+ xmlSecMallocError(sizeof(TCHAR) * (csz + 1), NULL);
+ return (NULL);
+ }
+
+ csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, resT, csz + 1);
+ if (csz <= 0) {
+ xmlSecMSCngLastError("CertNameToStr", NULL);
+ xmlFree(resT);
+ return(NULL);
+ }
+
+ res = xmlSecWin32ConvertTstrToUtf8(resT);
+ if (NULL == res) {
+ xmlSecInternalError("xmlSecWin32ConvertTstrToUtf8", NULL);
+ xmlFree(resT);
+ return(NULL);
+ }
+
+ xmlFree(resT);
+ return(res);
+}
+
+static int
+xmlSecMSCngX509SubjectNameNodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node) {
+ xmlChar* buf = NULL;
+ xmlNodePtr cur = NULL;
+ int ret;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+
+ buf = xmlSecMSCngX509NameWrite(&(cert->pCertInfo->Subject));
+ if(buf == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509NameWrite", NULL);
+ return(-1);
+ }
+
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ /* done */
+ xmlFree(buf);
+ return(0);
+}
+
+static int
+xmlSecMSCngASN1IntegerWrite(xmlNodePtr node, PCRYPT_INTEGER_BLOB num) {
+ xmlSecBn bn;
+ int ret;
+
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(num != NULL, -1);
+
+ ret = xmlSecBnInitialize(&bn, num->cbData + 1);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBnInitialize", NULL, "size=%ld",
+ num->cbData + 1);
+ return(-1);
+ }
+
+ ret = xmlSecBnSetData(&bn, num->pbData, num->cbData);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnSetData", NULL);
+ xmlSecBnFinalize(&bn);
+ return(-1);
+ }
+
+ /* SerialNumber is little-endian, see <https://msdn.microsoft.com/en-us/library/windows/desktop/aa377200(v=vs.85).aspx>.
+ * xmldsig wants big-endian, so enable reversing */
+ ret = xmlSecBnSetNodeValue(&bn, node, xmlSecBnDec, 1, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnSetNodeValue", NULL);
+ xmlSecBnFinalize(&bn);
+ return(-1);
+ }
+
+ xmlSecBnFinalize(&bn);
+ return(0);
+}
+
+static int
+xmlSecMSCngX509IssuerSerialNodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node) {
+ xmlNodePtr cur;
+ xmlNodePtr issuerNameNode;
+ xmlNodePtr issuerNumberNode;
+ xmlChar* buf;
+ int ret;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+
+ /* create xml nodes */
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ return(-1);
+ }
+
+ issuerNameNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ if(issuerNameNode == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ return(-1);
+ }
+
+ issuerNumberNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ if(issuerNumberNode == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ return(-1);
+ }
+
+ /* write data */
+ buf = xmlSecMSCngX509NameWrite(&(cert->pCertInfo->Issuer));
+ if(buf == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509NameWrite", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ xmlFree(buf);
+
+ ret = xmlSecMSCngASN1IntegerWrite(issuerNumberNode, &(cert->pCertInfo->SerialNumber));
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngASN1IntegerWrite", NULL);
+ return(-1);
+ }
+ return(0);
+}
+
+static xmlChar*
+xmlSecMSCngX509SKIWrite(PCCERT_CONTEXT cert) {
+ xmlChar *res = NULL;
+ DWORD dwSize;
+ BYTE *bSKI = NULL;
+ PCERT_EXTENSION pCertExt;
+
+ xmlSecAssert2(cert != NULL, NULL);
+
+ /* First check if the SKI extension actually exists, otherwise we get a SHA1 hash of the cert */
+ pCertExt = CertFindExtension(szOID_SUBJECT_KEY_IDENTIFIER, cert->pCertInfo->cExtension, cert->pCertInfo->rgExtension);
+ if (pCertExt == NULL) {
+ xmlSecMSCngLastError("CertFindExtension", NULL);
+ return (NULL);
+ }
+
+ if (!CertGetCertificateContextProperty(cert, CERT_KEY_IDENTIFIER_PROP_ID, NULL, &dwSize) || dwSize < 1) {
+ xmlSecMSCngLastError("CertGetCertificateContextProperty", NULL);
+ return (NULL);
+ }
+ bSKI = xmlMalloc(dwSize);
+ if (bSKI == NULL) {
+ xmlSecMallocError(dwSize, NULL);
+ return (NULL);
+ }
+
+ if (!CertGetCertificateContextProperty(cert, CERT_KEY_IDENTIFIER_PROP_ID, bSKI, &dwSize)) {
+ xmlSecMSCngLastError("CertGetCertificateContextProperty", NULL);
+ xmlFree(bSKI);
+ return (NULL);
+ }
+
+ if (bSKI == NULL) {
+ return(NULL);
+ }
+
+ res = xmlSecBase64Encode(bSKI, dwSize, 0);
+ if(res == NULL) {
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
+ xmlFree(bSKI);
+ return(NULL);
+ }
+ xmlFree(bSKI);
+
+ return(res);
+}
+
+static int
+xmlSecMSCngX509SKINodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node) {
+ xmlChar *buf = NULL;
+ xmlNodePtr cur = NULL;
+ int ret;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+
+ buf = xmlSecMSCngX509SKIWrite(cert);
+ if(buf == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509SKIWrite", NULL);
+ return(-1);
+ }
+
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
+ if(cur == NULL) {
+ xmlSecInternalError("xmlSecEnsureEmptyChild", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ xmlFree(buf);
+ return(0);
+}
+
+static int
+xmlSecMSCngX509CRLNodeWrite(PCCRL_CONTEXT crl, xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecAssert2(crl != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ xmlSecNotImplementedError(NULL);
+
+ return(-1);
+}
+
+static int
+xmlSecMSCngKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ int content;
+ xmlSecKeyDataPtr keyData;
+ xmlSecMSCngX509DataCtxPtr x509DataCtx;
+ PCCERT_CONTEXT cert = NULL;
+ HCERTSTORE certs;
+ PCCRL_CONTEXT crlCtx = NULL;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataX509Id, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(node != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ content = xmlSecX509DataGetNodeContent(node, keyInfoCtx);
+ if(content < 0) {
+ xmlSecInternalError("xmlSecX509DataGetNodeContent",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ if(content == 0) {
+ /* no content -> writer the default */
+ content = XMLSEC_X509DATA_DEFAULT;
+ }
+
+ keyData = xmlSecKeyGetData(key, id);
+ if(keyData == NULL) {
+ /* nothing to do */
+ return(0);
+ }
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(keyData, xmlSecMSCngKeyDataX509Id), -1);
+ x509DataCtx = xmlSecMSCngX509DataGetCtx(keyData);
+ certs = x509DataCtx->hMemStore;
+
+ /* write certificates */
+ while((cert = CertEnumCertificatesInStore(certs, cert)) != NULL) {
+ if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
+ ret = xmlSecMSCngX509CertificateNodeWrite(cert, node, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CertificateNodeWrite",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ }
+
+ if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
+ ret = xmlSecMSCngX509SubjectNameNodeWrite(cert, node);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509SubjectNameNodeWrite",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ }
+
+ if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
+ ret = xmlSecMSCngX509IssuerSerialNodeWrite(cert, node);
+ if(ret< 0) {
+ xmlSecInternalError("xmlSecMSCngX509IssuerSerialNodeWrite",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ }
+
+ if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
+ ret = xmlSecMSCngX509SKINodeWrite(cert, node);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509SKINodeWrite",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ }
+ }
+
+ /* write CRLs */
+ while((crlCtx = CertEnumCRLsInStore(certs, crlCtx)) != NULL) {
+ ret = xmlSecMSCngX509CRLNodeWrite(crlCtx, node, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509CRLNodeWrite",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+ }
+
+ return(0);
+}
+
+static void
+xmlSecMSCngKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id));
+ xmlSecAssert(output != NULL);
+
+ xmlSecNotImplementedError(NULL);
+}
+
+static void
+xmlSecMSCngKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCngKeyDataX509Id));
+ xmlSecAssert(output != NULL);
+
+ xmlSecNotImplementedError(NULL);
+}
+
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataX509Klass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCngX509DataSize,
+
+ /* data */
+ xmlSecNameX509Data,
+ xmlSecKeyDataUsageKeyInfoNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefX509Data, /* const xmlChar* href; */
+ xmlSecNodeX509Data, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCngKeyDataX509Initialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCngKeyDataX509Duplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCngKeyDataX509Finalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCngKeyDataX509GetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ NULL, /* xmlSecKeyDataGetSizeMethod getSize; */
+ xmlSecMSCngKeyDataX509GetIdentifier, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ xmlSecMSCngKeyDataX509XmlRead, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ xmlSecMSCngKeyDataX509XmlWrite, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCngKeyDataX509DebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCngKeyDataX509DebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataX509GetKlass:
+ *
+ * The MSCng X509 key data klass.
+ *
+ * Returns: the X509 data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataX509GetKlass(void) {
+ return(&xmlSecMSCngKeyDataX509Klass);
+}
+
+/**************************************************************************
+ *
+ * Raw X509 Certificate processing
+ *
+ *
+ *************************************************************************/
+static int
+xmlSecMSCngKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
+ const xmlSecByte* buf, xmlSecSize bufSize,
+ xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlSecKeyDataPtr data;
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(id == xmlSecMSCngKeyDataRawX509CertId, -1);
+ xmlSecAssert2(key != NULL, -1);
+ xmlSecAssert2(buf != NULL, -1);
+ xmlSecAssert2(bufSize > 0, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ cert = xmlSecMSCngX509CertDerRead(buf, bufSize);
+ if(cert == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509CertDerRead", NULL);
+ return(-1);
+ }
+
+ data = xmlSecKeyEnsureData(key, xmlSecMSCngKeyDataX509Id);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
+ CertFreeCertificateContext(cert);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509AdoptCert(data, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509AdoptCert",
+ xmlSecKeyDataKlassGetName(id));
+ CertFreeCertificateContext(cert);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static xmlSecKeyDataKlass xmlSecMSCngKeyDataRawX509CertKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ sizeof(xmlSecKeyData),
+
+ /* data */
+ xmlSecNameRawX509Cert,
+ xmlSecKeyDataUsageRetrievalMethodNodeBin,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefRawX509Cert, /* const xmlChar* href; */
+ NULL, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ NULL, /* xmlSecKeyDataInitializeMethod initialize; */
+ NULL, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ NULL, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ NULL, /* xmlSecKeyDataGetTypeMethod getType; */
+ NULL, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ xmlSecMSCngKeyDataRawX509CertBinRead, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ NULL, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ NULL, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngKeyDataRawX509CertGetKlass:
+ *
+ * The raw X509 certificates key data klass.
+ *
+ * Returns: raw X509 certificates key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCngKeyDataRawX509CertGetKlass(void) {
+ return(&xmlSecMSCngKeyDataRawX509CertKlass);
+}
+
+#endif /* XMLSEC_NO_X509 */
diff --git a/src/mscng/x509vfy.c b/src/mscng/x509vfy.c
new file mode 100644
index 00000000..8940ba3d
--- /dev/null
+++ b/src/mscng/x509vfy.c
@@ -0,0 +1,1215 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2018 Miklos Vajna. All Rights Reserved.
+ */
+/**
+ * SECTION:x509vfy
+ * @Short_description: X509 certificates verification support functions for Microsoft Cryptography API: Next Generation (CNG).
+ * @Stability: Private
+ *
+ */
+
+#include "globals.h"
+
+#ifndef XMLSEC_NO_X509
+
+#include <string.h>
+
+#include <windows.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/base64.h>
+#include <xmlsec/bn.h>
+#include <xmlsec/errors.h>
+
+#include <xmlsec/mscng/crypto.h>
+#include <xmlsec/mscng/x509.h>
+
+typedef struct _xmlSecMSCngX509StoreCtx xmlSecMSCngX509StoreCtx,
+ *xmlSecMSCngX509StoreCtxPtr;
+struct _xmlSecMSCngX509StoreCtx {
+ HCERTSTORE trusted;
+ HCERTSTORE trustedMemStore;
+ HCERTSTORE untrusted;
+ HCERTSTORE untrustedMemStore;
+};
+
+#define xmlSecMSCngX509StoreGetCtx(store) \
+ ((xmlSecMSCngX509StoreCtxPtr)(((xmlSecByte*)(store)) + \
+ sizeof(xmlSecKeyDataStoreKlass)))
+#define xmlSecMSCngX509StoreSize \
+ (sizeof(xmlSecKeyDataStoreKlass) + sizeof(xmlSecMSCngX509StoreCtx))
+
+static void
+xmlSecMSCngX509StoreFinalize(xmlSecKeyDataStorePtr store) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId));
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert(ctx != NULL);
+
+ if(ctx->trusted != NULL) {
+ ret = CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_CHECK_FLAG);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertCloseStore", xmlSecKeyDataStoreGetName(store));
+ }
+ }
+
+ if(ctx->trustedMemStore != NULL) {
+ ret = CertCloseStore(ctx->trustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertCloseStore", xmlSecKeyDataStoreGetName(store));
+ }
+ }
+
+ if(ctx->untrusted != NULL) {
+ ret = CertCloseStore(ctx->untrusted, CERT_CLOSE_STORE_CHECK_FLAG);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertCloseStore", xmlSecKeyDataStoreGetName(store));
+ }
+ }
+
+ if(ctx->untrustedMemStore != NULL) {
+ ret = CertCloseStore(ctx->untrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertCloseStore", xmlSecKeyDataStoreGetName(store));
+ }
+ }
+
+ memset(ctx, 0, sizeof(xmlSecMSCngX509StoreCtx));
+}
+
+/**
+ * xmlSecMSCngX509StoreAdoptKeyStore:
+ * @store: the pointer to X509 key data store klass.
+ * @keyStore: the pointer to keys store.
+ *
+ * Adds @keyStore to the list of key stores.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngX509StoreAdoptKeyStore(xmlSecKeyDataStorePtr store, HCERTSTORE keyStore) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ xmlSecAssert2(keyStore != NULL, -1);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->trusted != NULL, -1);
+
+ ret = CertAddStoreToCollection(ctx->trusted, keyStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 2);
+ if(ret != TRUE) {
+ xmlSecMSCngLastError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509StoreAdoptTrustedStore:
+ * @store: the pointer to X509 key data store klass.
+ * @trustedStore: the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of trusted certs stores.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngX509StoreAdoptTrustedStore(xmlSecKeyDataStorePtr store, HCERTSTORE trustedStore) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ xmlSecAssert2( trustedStore != NULL, -1);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->trusted != NULL, -1);
+
+ ret = CertAddStoreToCollection(ctx->trusted , trustedStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 3);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509StoreAdoptUntrustedStore:
+ * @store: the pointer to X509 key data store klass.
+ * @untrustedStore: the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of untrusted certs stores.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngX509StoreAdoptUntrustedStore(xmlSecKeyDataStorePtr store, HCERTSTORE untrustedStore) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ xmlSecAssert2(untrustedStore != NULL, -1);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->untrusted != NULL, -1);
+
+ ret = CertAddStoreToCollection(ctx->untrusted, untrustedStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 2);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngX509StoreInitialize(xmlSecKeyDataStorePtr store) {
+ int ret;
+ xmlSecMSCngX509StoreCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ memset(ctx, 0, sizeof(xmlSecMSCngX509StoreCtx));
+
+ /* create a trusted store that will be a collection of other stores */
+ ctx->trusted = CertOpenStore(
+ CERT_STORE_PROV_COLLECTION,
+ 0,
+ 0,
+ 0,
+ NULL);
+ if(ctx->trusted == NULL) {
+ xmlSecMSCngLastError("CertOpenStore", xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ /* create an actual trusted store */
+ ctx->trustedMemStore = CertOpenStore(
+ CERT_STORE_PROV_MEMORY,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_STORE_CREATE_NEW_FLAG,
+ NULL);
+ if(ctx->trustedMemStore == NULL) {
+ xmlSecMSCngLastError("CertOpenStore", xmlSecKeyDataStoreGetName(store));
+ xmlSecMSCngX509StoreFinalize(store);
+ return(-1);
+ }
+
+ /* add the store to the trusted collection */
+ ret = CertAddStoreToCollection(
+ ctx->trusted,
+ ctx->trustedMemStore,
+ CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG,
+ 1);
+ if(ret == 0) {
+ xmlSecMSCngLastError("CertAddStoreToCollection", xmlSecKeyDataStoreGetName(store));
+ xmlSecMSCngX509StoreFinalize(store);
+ return(-1);
+ }
+
+ /* create an untrusted store that will be a collection of other stores */
+ ctx->untrusted = CertOpenStore(
+ CERT_STORE_PROV_COLLECTION,
+ 0,
+ 0,
+ 0,
+ NULL);
+ if(ctx->untrusted == NULL) {
+ xmlSecMSCngLastError("CertOpenStore", xmlSecKeyDataStoreGetName(store));
+ xmlSecMSCngX509StoreFinalize(store);
+ return(-1);
+ }
+
+ /* create an actual untrusted store */
+ ctx->untrustedMemStore = CertOpenStore(
+ CERT_STORE_PROV_MEMORY,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_STORE_CREATE_NEW_FLAG,
+ NULL);
+ if(ctx->untrustedMemStore == NULL) {
+ xmlSecMSCngLastError("CertOpenStore", xmlSecKeyDataStoreGetName(store));
+ xmlSecMSCngX509StoreFinalize(store);
+ return(-1);
+ }
+
+ /* add the store to the untrusted collection */
+ ret = CertAddStoreToCollection(
+ ctx->untrusted,
+ ctx->untrustedMemStore,
+ CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG,
+ 1);
+ if(ret == 0) {
+ xmlSecMSCngLastError("CertAddStoreToCollection", xmlSecKeyDataStoreGetName(store));
+ xmlSecMSCngX509StoreFinalize(store);
+ return(-1);
+ }
+
+ return(0);
+}
+
+static xmlSecKeyDataStoreKlass xmlSecMSCngX509StoreKlass = {
+ sizeof(xmlSecKeyDataStoreKlass),
+ xmlSecMSCngX509StoreSize,
+
+ /* data */
+ xmlSecNameX509Store, /* const xmlChar* name; */
+
+ /* constructors/destructor */
+ xmlSecMSCngX509StoreInitialize, /* xmlSecKeyDataStoreInitializeMethod initialize; */
+ xmlSecMSCngX509StoreFinalize, /* xmlSecKeyDataStoreFinalizeMethod finalize; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCngX509StoreGetKlass:
+ *
+ * The MSCng X509 certificates key data store klass.
+ *
+ * Returns: pointer to MSCng X509 certificates key data store klass.
+ */
+xmlSecKeyDataStoreId
+xmlSecMSCngX509StoreGetKlass(void) {
+ return(&xmlSecMSCngX509StoreKlass);
+}
+
+/**
+ * xmlSecMSCngX509StoreAdoptCert:
+ * @store: the pointer to X509 key data store klass.
+ * @cert: the pointer to PCCERT_CONTEXT X509 certificate.
+ * @type: the certificate type (trusted/untrusted).
+ *
+ * Adds trusted (root) or untrusted certificate to the store.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCngX509StoreAdoptCert(xmlSecKeyDataStorePtr store, PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ HCERTSTORE hCertStore;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ xmlSecAssert2(pCert != NULL, -1);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->trusted != NULL, -1);
+
+ if(type == xmlSecKeyDataTypeTrusted) {
+ hCertStore = ctx->trusted;
+ } else if(type == xmlSecKeyDataTypeNone) {
+ hCertStore = ctx->untrusted;
+ } else {
+ xmlSecNotImplementedError(NULL);
+ return(-1);
+ }
+
+ xmlSecAssert2(hCertStore != NULL, -1);
+ ret = CertAddCertificateContextToStore(
+ hCertStore,
+ pCert,
+ CERT_STORE_ADD_ALWAYS,
+ NULL);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertAddCertificateContextToStore", xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngCheckRevocation:
+ * @store: may contain a CRL
+ * @cert: the certificate that is revoked (or not)
+ *
+ * Checks if @cert is in the CRL of @store.
+ *
+ * Returns: 0 on success or a negative value if an errors occurs.
+ */
+static int
+xmlSecMSCngCheckRevocation(HCERTSTORE store, PCCERT_CONTEXT cert) {
+ PCCRL_CONTEXT crlCtx = NULL;
+ PCRL_ENTRY crlEntry = NULL;
+ int ret;
+
+ xmlSecAssert2(store != NULL, -1);
+ xmlSecAssert2(cert != NULL, -1);
+
+ while((crlCtx = CertEnumCRLsInStore(store, crlCtx)) != NULL) {
+ ret = CertFindCertificateInCRL(cert,
+ crlCtx,
+ 0,
+ NULL,
+ &crlEntry);
+ if(ret == 0) {
+ continue;
+ }
+ if(crlEntry == NULL) {
+ continue;
+ }
+
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED, NULL,
+ "cert found in CRL");
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509StoreContainsCert:
+ * @store: the certificate store
+ * @subject: the name of the subject or issuer to find
+ * @cert: the certificate
+ *
+ * Determines if cert is found in store.
+ *
+ * Returns: 1 and 0 if find does or does not succeed, or a negative value if an
+ * error occurs.
+ */
+static int
+xmlSecMSCngX509StoreContainsCert(HCERTSTORE store, CERT_NAME_BLOB* name,
+ PCCERT_CONTEXT cert)
+{
+ PCCERT_CONTEXT issuerCert = NULL;
+ DWORD flags;
+ int ret;
+
+ xmlSecAssert2(store != NULL, -1);
+ xmlSecAssert2(name != NULL, -1);
+ xmlSecAssert2(cert != NULL, -1);
+
+ issuerCert = CertFindCertificateInStore(store,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ name,
+ NULL);
+ if(issuerCert != NULL) {
+ flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
+ ret = CertVerifySubjectCertificateContext(cert,
+ issuerCert,
+ &flags);
+ if(ret == 0) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ NULL,
+ "CertVerifySubjectCertificateContext");
+ CertFreeCertificateContext(issuerCert);
+ return(-1);
+ }
+ CertFreeCertificateContext(issuerCert);
+ return(1);
+ }
+
+ return(0);
+}
+
+static int
+xmlSecMSCngVerifyCertTime(PCCERT_CONTEXT cert, LPFILETIME time) {
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(cert->pCertInfo != NULL, -1);
+ xmlSecAssert2(time != NULL, -1);
+
+ if(CompareFileTime(&cert->pCertInfo->NotBefore, time) == 1) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ NULL,
+ "CompareFileTime");
+ return(-1);
+ }
+
+ if(CompareFileTime(&cert->pCertInfo->NotAfter, time) == -1) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ NULL,
+ "CompareFileTime");
+ return(-1);
+ }
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509StoreVerifyCertificateOwn:
+ * @cert: the certificate to verify.
+ * @time: pointer to FILETIME that we are interested in
+ * @trustedStore: trusted certificates added via xmlSecMSCngX509StoreAdoptCert().
+ * @certStore: the untrusted certificates stack.
+ * @store: key data store, name used for error reporting only.
+ *
+ * Verifies @cert based on trustedStore (ignoring system trusted certificates).
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+static int
+xmlSecMSCngX509StoreVerifyCertificateOwn(PCCERT_CONTEXT cert,
+ FILETIME* time, HCERTSTORE trustedStore, HCERTSTORE untrustedStore, HCERTSTORE certStore,
+ xmlSecKeyDataStorePtr store) {
+ PCCERT_CONTEXT issuerCert = NULL;
+ DWORD flags;
+ int ret;
+
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(trustedStore != NULL, -1);
+ xmlSecAssert2(certStore != NULL, -1);
+ xmlSecAssert2(store != NULL, -1);
+
+ ret = xmlSecMSCngVerifyCertTime(cert, time);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngVerifyCertTime",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ ret = xmlSecMSCngCheckRevocation(certStore, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngCheckRevocation",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+
+ /* does trustedStore contain cert directly? */
+ ret = xmlSecMSCngX509StoreContainsCert(trustedStore,
+ &cert->pCertInfo->Subject, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509StoreContainsCert",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+ if(ret == 1) {
+ return(0);
+ }
+
+ /* does trustedStore contain the issuer cert? */
+ ret = xmlSecMSCngX509StoreContainsCert(trustedStore,
+ &cert->pCertInfo->Issuer, cert);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509StoreContainsCert",
+ xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+ if(ret == 1) {
+ return(0);
+ }
+
+ /* is cert self-signed? no recursion in that case */
+ if(CertCompareCertificateName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ &cert->pCertInfo->Subject,
+ &cert->pCertInfo->Issuer)) {
+ return(-1);
+ }
+
+ /* the same checks recursively for the issuer cert in certStore */
+ issuerCert = CertFindCertificateInStore(certStore,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cert->pCertInfo->Issuer,
+ NULL);
+ if(issuerCert != NULL) {
+ flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
+ ret = CertVerifySubjectCertificateContext(cert, issuerCert, &flags);
+ if(ret == 0) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "CertVerifySubjectCertificateContext");
+ CertFreeCertificateContext(issuerCert);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngX509StoreVerifyCertificateOwn(issuerCert, time,
+ trustedStore, untrustedStore, certStore, store);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509StoreVerifyCertificateOwn", xmlSecKeyDataStoreGetName(store));
+ CertFreeCertificateContext(issuerCert);
+ return(-1);
+ }
+ CertFreeCertificateContext(issuerCert);
+ return(0);
+ }
+
+ /* the same checks recursively for the issuer cert in untrustedStore */
+ issuerCert = CertFindCertificateInStore(untrustedStore,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cert->pCertInfo->Issuer,
+ NULL);
+ if(issuerCert != NULL) {
+ flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
+ ret = CertVerifySubjectCertificateContext(cert, issuerCert, &flags);
+ if(ret == 0) {
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "CertVerifySubjectCertificateContext");
+ CertFreeCertificateContext(issuerCert);
+ return(-1);
+ }
+
+ ret = xmlSecMSCngX509StoreVerifyCertificateOwn(issuerCert, time,
+ trustedStore, untrustedStore, certStore, store);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCngX509StoreVerifyCertificateOwn", xmlSecKeyDataStoreGetName(store));
+ CertFreeCertificateContext(issuerCert);
+ return(-1);
+ }
+ CertFreeCertificateContext(issuerCert);
+ return(0);
+ }
+
+ return(-1);
+}
+
+/**
+ * xmlSecMSCngX509StoreVerifyCertificateSystem:
+ * @cert: the certificate we check
+ * @time: pointer to FILETIME that we are interested in
+ * @untrustedStore: untrusted certificates added via API
+ * @docStore: untrusted certificates/CRLs extracted from a document
+ *
+ * Verifies @cert based on system trusted certificates.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+static int
+xmlSecMSCngX509StoreVerifyCertificateSystem(PCCERT_CONTEXT cert,
+ FILETIME* time, HCERTSTORE untrustedStore, HCERTSTORE docStore) {
+ PCCERT_CHAIN_CONTEXT pChainContext = NULL;
+ CERT_CHAIN_PARA chainPara;
+ HCERTSTORE chainStore = NULL;
+ int res = -1;
+ int ret;
+
+ /* initialize data structures */
+ memset(&chainPara, 0, sizeof(CERT_CHAIN_PARA));
+ chainPara.cbSize = sizeof(CERT_CHAIN_PARA);
+
+ /* create additional store for CertGetCertificateChain() */
+ chainStore = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, 0, NULL);
+ if(chainStore == NULL) {
+ xmlSecMSCngLastError("CertOpenStore", NULL);
+ goto end;
+ }
+
+ ret = CertAddStoreToCollection(chainStore, docStore, 0, 0);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertAddStoreToCollection", NULL);
+ goto end;
+ }
+
+ ret = CertAddStoreToCollection(chainStore, untrustedStore, 0, 0);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertAddStoreToCollection", NULL);
+ goto end;
+ }
+
+ /* build a chain using CertGetCertificateChain
+ and the certificate retrieved */
+ ret = CertGetCertificateChain(NULL, cert, time, chainStore, &chainPara,
+ CERT_CHAIN_REVOCATION_CHECK_CHAIN, NULL, &pChainContext);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertGetCertificateChain", NULL);
+ goto end;
+ }
+
+ if (pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_REVOCATION_STATUS_UNKNOWN) {
+ CertFreeCertificateChain(pChainContext);
+ pChainContext = NULL;
+ ret = CertGetCertificateChain(NULL, cert, time, chainStore, &chainPara,
+ CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT, NULL,
+ &pChainContext);
+ if(ret == FALSE) {
+ xmlSecMSCngLastError("CertGetCertificateChain", NULL);
+ goto end;
+ }
+ }
+
+ if(pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_NO_ERROR) {
+ res = 0;
+ }
+
+end:
+ if(pChainContext != NULL) {
+ CertFreeCertificateChain(pChainContext);
+ }
+
+ if(chainStore != NULL) {
+ CertCloseStore(chainStore, 0);
+ }
+
+ return (res);
+}
+
+/**
+ * xmlSecMSCngUnixTimeToFileTime:
+ *
+ * Converts time_t into FILETIME timestamp. See xmlSecMSCngX509CertGetTime()
+ * for details.
+ */
+static int
+xmlSecMSCngUnixTimeToFileTime(time_t in, LPFILETIME out) {
+ /* 64-bit value */
+ LONGLONG ll;
+
+ xmlSecAssert2(out != NULL, -1);
+
+ /* seconds -> 100 nanoseconds */
+ /* 1970-01-01 epoch -> 1601-01-01 epoch */
+ ll = Int32x32To64(in, 10000000) + 116444736000000000;
+ out->dwLowDateTime = (DWORD)ll;
+ out->dwHighDateTime = ll >> 32;
+
+ return(0);
+}
+
+/**
+ * xmlSecMSCngX509StoreVerifyCertificate:
+ * @store: the pointer to X509 certificate context store klass.
+ * @cert: the certificate to verify.
+ * @certStore: the untrusted certificates stack.
+ * @keyInfoCtx: the pointer to <dsig:KeyInfo/> element processing context.
+ *
+ * Verifies @cert.
+ *
+ * Returns: 0 on success or a negative value if an error occurs.
+ */
+static int
+xmlSecMSCngX509StoreVerifyCertificate(xmlSecKeyDataStorePtr store,
+ PCCERT_CONTEXT cert, HCERTSTORE certStore, xmlSecKeyInfoCtx* keyInfoCtx) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ FILETIME fTime;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), -1);
+ xmlSecAssert2(cert != NULL, -1);
+ xmlSecAssert2(cert->pCertInfo != NULL, -1);
+ xmlSecAssert2(certStore != NULL, -1);
+ xmlSecAssert2(keyInfoCtx != NULL, -1);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->trusted != NULL, -1);
+
+ if(keyInfoCtx->certsVerificationTime > 0) {
+ xmlSecMSCngUnixTimeToFileTime(keyInfoCtx->certsVerificationTime,
+ &fTime);
+ } else {
+ /* current time */
+ GetSystemTimeAsFileTime(&fTime);
+ }
+
+ /* verify based on the own trusted certificates */
+ ret = xmlSecMSCngX509StoreVerifyCertificateOwn(cert,
+ &fTime, ctx->trusted, ctx->untrusted, certStore, store);
+ if(ret >= 0) {
+ return(0);
+ }
+
+ /* verify based on the system certificates */
+ ret = xmlSecMSCngX509StoreVerifyCertificateSystem(cert,
+ &fTime, ctx->untrusted, certStore);
+ if(ret >= 0) {
+ return(0);
+ }
+
+ return(-1);
+}
+
+/**
+ * xmlSecMSCngX509StoreVerify:
+ * @store: the pointer to X509 certificate context store klass.
+ * @certs: the untrusted certificates stack.
+ * @keyInfoCtx: the pointer to <dsig:KeyInfo/> element processing context.
+ *
+ * Verifies @certs list.
+ *
+ * Returns: pointer to the first verified certificate from @certs.
+ */
+PCCERT_CONTEXT
+xmlSecMSCngX509StoreVerify(xmlSecKeyDataStorePtr store, HCERTSTORE certs,
+ xmlSecKeyInfoCtx* keyInfoCtx) {
+ PCCERT_CONTEXT cert = NULL;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), NULL);
+ xmlSecAssert2(certs != NULL, NULL);
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
+
+ while((cert = CertEnumCertificatesInStore(certs, cert)) != NULL) {
+ PCCERT_CONTEXT foundCert = NULL;
+ int skip = 0;
+ xmlSecAssert2(cert->pCertInfo != NULL, NULL);
+
+ /* is cert the issuer of a certificate in certs? if so, skip it */
+ do {
+ foundCert = CertFindCertificateInStore(certs,
+ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ 0,
+ CERT_FIND_ISSUER_NAME,
+ &(cert->pCertInfo->Subject),
+ foundCert);
+ /* don't skip self-signed certificates */
+ if((foundCert != NULL) &&
+ !CertCompareCertificateName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+ &(foundCert->pCertInfo->Subject),
+ &(foundCert->pCertInfo->Issuer))) {
+ skip = 1;
+ }
+ } while(skip == 0 && foundCert != NULL);
+ if(foundCert != NULL) {
+ CertFreeCertificateContext(foundCert);
+ }
+ if(skip == 0) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) != 0) {
+ return(cert);
+ }
+
+ /* need to actually verify the certificate */
+ ret = xmlSecMSCngX509StoreVerifyCertificate(store, cert, certs, keyInfoCtx);
+ if(ret == 0) {
+ return(cert);
+ }
+ }
+ }
+
+ return(NULL);
+}
+
+static LPTSTR
+xmlSecMSCngX509GetCertName(const xmlChar* name) {
+ xmlChar* copy;
+ xmlChar* p;
+ LPTSTR res;
+
+ xmlSecAssert2(name != 0, NULL);
+
+ /* emailAddress= results in an error, E= does not, so replace the former */
+ copy = xmlStrdup(name);
+ if(copy == NULL) {
+ xmlSecStrdupError(name, NULL);
+ return(NULL);
+ }
+
+ while((p = (xmlChar*)xmlStrstr(copy, BAD_CAST "emailAddress=")) != NULL) {
+ memcpy(p, " E=", 13);
+ }
+
+ res = xmlSecWin32ConvertUtf8ToTstr(copy);
+ if(res == NULL) {
+ xmlSecInternalError("xmlSecWin32ConvertUtf8ToTstr", NULL);
+ xmlFree(copy);
+ return(NULL);
+ }
+
+ xmlFree(copy);
+
+ return(res);
+}
+
+static BYTE*
+xmlSecMSCngCertStrToName(DWORD dwCertEncodingType, LPTSTR pszX500, DWORD dwStrType, DWORD* len) {
+ BYTE* str = NULL;
+ LPCTSTR ppszError = NULL;
+
+ xmlSecAssert2(pszX500 != NULL, NULL);
+ xmlSecAssert2(len != NULL, NULL);
+
+ if (!CertStrToName(dwCertEncodingType, pszX500, dwStrType,
+ NULL, NULL, len, &ppszError)) {
+ /* this might not be an error, string might just not exist */
+ return(NULL);
+ }
+
+ str = (BYTE *)xmlMalloc(sizeof(TCHAR) * ((*len) + 1));
+ if(str == NULL) {
+ xmlSecMallocError(sizeof(TCHAR) * ((*len) + 1), NULL);
+ return(NULL);
+ }
+ memset(str, 0, (*len) + 1);
+
+ if (!CertStrToName(dwCertEncodingType, pszX500, dwStrType,
+ NULL, str, len, NULL)) {
+ xmlSecMSCngLastError("CertStrToName", NULL);
+ xmlFree(str);
+ return(NULL);
+ }
+
+ return(str);
+}
+
+static PCCERT_CONTEXT
+xmlSecMSCngX509FindCertByIssuer(HCERTSTORE store, LPTSTR wcIssuer,
+ xmlSecBnPtr issuerSerialBn, DWORD dwCertEncodingType) {
+ xmlSecAssert2(store != NULL, NULL);
+ xmlSecAssert2(wcIssuer != NULL, NULL);
+ xmlSecAssert2(issuerSerialBn != NULL, NULL);
+
+ PCCERT_CONTEXT res = NULL;
+ CERT_INFO certInfo;
+ BYTE* bdata;
+ DWORD len;
+
+
+ xmlSecAssert2(store != NULL, NULL);
+ xmlSecAssert2(wcIssuer != NULL, NULL);
+ xmlSecAssert2(issuerSerialBn != NULL, NULL);
+
+ certInfo.SerialNumber.cbData = xmlSecBnGetSize(issuerSerialBn);
+ certInfo.SerialNumber.pbData = xmlSecBnGetData(issuerSerialBn);
+
+
+ /* CASE 1: UTF8, DN */
+ if (NULL == res) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcIssuer,
+ CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG | CERT_OID_NAME_STR,
+ &len);
+ if(bdata != NULL) {
+ certInfo.Issuer.cbData = len;
+ certInfo.Issuer.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_CERT,
+ &certInfo,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 2: UTF8, REVERSE DN */
+ if (NULL == res) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcIssuer,
+ CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG | CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
+ &len);
+ if(bdata != NULL) {
+ certInfo.Issuer.cbData = len;
+ certInfo.Issuer.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_CERT,
+ &certInfo,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 3: UNICODE, DN */
+ if (NULL == res) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcIssuer,
+ CERT_OID_NAME_STR,
+ &len);
+ if(bdata != NULL) {
+ certInfo.Issuer.cbData = len;
+ certInfo.Issuer.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_CERT,
+ &certInfo,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 4: UNICODE, REVERSE DN */
+ if (NULL == res) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcIssuer,
+ CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
+ &len);
+ if(bdata != NULL) {
+ certInfo.Issuer.cbData = len;
+ certInfo.Issuer.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_CERT,
+ &certInfo,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ return (res);
+}
+
+static PCCERT_CONTEXT
+xmlSecMSCngX509FindCert(HCERTSTORE store, xmlChar* subjectName,
+ xmlChar* issuerName, xmlChar* issuerSerial, xmlChar* ski) {
+ PCCERT_CONTEXT cert;
+ int ret;
+
+ xmlSecAssert2(store != 0, NULL);
+
+ if(subjectName != NULL) {
+ LPTSTR wcSubjectName;
+
+ wcSubjectName = xmlSecMSCngX509GetCertName(subjectName);
+ if(wcSubjectName == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509GetCertName", NULL);
+ return(NULL);
+ }
+
+ cert = xmlSecMSCngX509FindCertBySubject(store, wcSubjectName,
+ PKCS_7_ASN_ENCODING | X509_ASN_ENCODING);
+ xmlFree(wcSubjectName);
+
+ return(cert);
+ }
+
+ if(issuerName != NULL && issuerSerial != NULL) {
+ xmlSecBn issuerSerialBn;
+ LPTSTR wcIssuerName = NULL;
+
+ ret = xmlSecBnInitialize(&issuerSerialBn, 0);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnInitialize", NULL);
+ return(NULL);
+ }
+
+ ret = xmlSecBnFromDecString(&issuerSerialBn, issuerSerial);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnFromDecString", NULL);
+ xmlSecBnFinalize(&issuerSerialBn);
+ return(NULL);
+ }
+
+ /* xmlSecMSCngX509FindCertByIssuer() wants this in the opposite order */
+ ret = xmlSecBnReverse(&issuerSerialBn);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBnReverse", NULL);
+ xmlSecBnFinalize(&issuerSerialBn);
+ return(NULL);
+ }
+
+ wcIssuerName = xmlSecMSCngX509GetCertName(issuerName);
+ if(wcIssuerName == NULL) {
+ xmlSecInternalError("xmlSecMSCngX509GetCertName", NULL);
+ xmlSecBnFinalize(&issuerSerialBn);
+ return(NULL);
+ }
+
+ cert = xmlSecMSCngX509FindCertByIssuer(store, wcIssuerName,
+ &issuerSerialBn, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING);
+ xmlFree(wcIssuerName);
+ xmlSecBnFinalize(&issuerSerialBn);
+
+ return(cert);
+ }
+
+ if(ski != NULL) {
+ CRYPT_HASH_BLOB blob;
+ xmlChar* binSki;
+ int binSkiLen;
+
+ binSki = xmlStrdup(ski);
+ if(binSki == NULL) {
+ xmlSecStrdupError(ski, NULL);
+ return (NULL);
+ }
+
+ /* base64 decode "in place" */
+ binSkiLen = xmlSecBase64Decode(binSki, (xmlSecByte*)binSki, xmlStrlen(binSki));
+ if(binSkiLen < 0) {
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
+ xmlFree(binSki);
+ return(NULL);
+ }
+
+ blob.pbData = binSki;
+ blob.cbData = binSkiLen;
+ cert = CertFindCertificateInStore(store,
+ PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,
+ 0,
+ CERT_FIND_KEY_IDENTIFIER,
+ &blob,
+ NULL);
+ xmlFree(binSki);
+
+ return(cert);
+ }
+
+ return(NULL);
+}
+
+/**
+ * xmlSecMSCngX509StoreFindCert:
+ * @store: the pointer to X509 key data store klass.
+ * @subjectName: the desired certificate name.
+ * @issuerName: the desired certificate issuer name.
+ * @issuerSerial: the desired certificate issuer serial number.
+ * @ski: the desired certificate SKI.
+ * @keyInfoCtx: the pointer to <dsig:KeyInfo/> element processing context.
+ *
+ * Searches @store for a certificate that matches given criteria.
+ *
+ * Returns: pointer to found certificate or NULL if certificate is not found
+ * or an error occurs.
+ */
+PCCERT_CONTEXT
+xmlSecMSCngX509StoreFindCert(xmlSecKeyDataStorePtr store, xmlChar *subjectName,
+ xmlChar *issuerName, xmlChar *issuerSerial, xmlChar *ski,
+ xmlSecKeyInfoCtx* keyInfoCtx) {
+ xmlSecMSCngX509StoreCtxPtr ctx;
+ PCCERT_CONTEXT cert = NULL;
+
+ xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCngX509StoreId), NULL);
+ xmlSecAssert2(keyInfoCtx != NULL, NULL);
+
+ ctx = xmlSecMSCngX509StoreGetCtx(store);
+ xmlSecAssert2(ctx != NULL, NULL);
+
+ /* search untrusted certs store */
+ if(ctx->untrusted != NULL) {
+ cert = xmlSecMSCngX509FindCert(ctx->untrusted, subjectName,
+ issuerName, issuerSerial, ski);
+ }
+
+ /* search trusted certs store */
+ if(cert == NULL && ctx->trusted != NULL) {
+ cert = xmlSecMSCngX509FindCert(ctx->trusted, subjectName,
+ issuerName, issuerSerial, ski);
+ }
+
+ return(cert);
+}
+
+/**
+ * xmlSecMSCngX509FindCertBySubject:
+ * @store: the pointer to certs store
+ * @wcSubject: the cert subject (Unicode)
+ * @dwCertEncodingType: the cert encoding type
+ *
+ * Searches for a cert with given @subject in the @store
+ *
+ * Returns: cert handle on success or NULL otherwise
+ */
+PCCERT_CONTEXT
+xmlSecMSCngX509FindCertBySubject(HCERTSTORE store, LPTSTR wcSubject,
+ DWORD dwCertEncodingType) {
+ PCCERT_CONTEXT res = NULL;
+ CERT_NAME_BLOB cnb;
+ BYTE* bdata;
+ DWORD len;
+
+ xmlSecAssert2(store != NULL, NULL);
+ xmlSecAssert2(wcSubject != NULL, NULL);
+
+ /* CASE 1: UTF8, DN */
+ if(res == NULL) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcSubject,
+ CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG | CERT_OID_NAME_STR,
+ &len);
+ if(bdata != NULL) {
+ cnb.cbData = len;
+ cnb.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cnb,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 2: UTF8, REVERSE DN */
+ if(res == NULL) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcSubject,
+ CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG | CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
+ &len);
+ if(bdata != NULL) {
+ cnb.cbData = len;
+ cnb.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cnb,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 3: UNICODE, DN */
+ if(res == NULL) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcSubject,
+ CERT_OID_NAME_STR,
+ &len);
+ if(bdata != NULL) {
+ cnb.cbData = len;
+ cnb.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cnb,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ /* CASE 4: UNICODE, REVERSE DN */
+ if(res == NULL) {
+ bdata = xmlSecMSCngCertStrToName(dwCertEncodingType,
+ wcSubject,
+ CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
+ &len);
+ if(bdata != NULL) {
+ cnb.cbData = len;
+ cnb.pbData = bdata;
+
+ res = CertFindCertificateInStore(store,
+ dwCertEncodingType,
+ 0,
+ CERT_FIND_SUBJECT_NAME,
+ &cnb,
+ NULL);
+ xmlFree(bdata);
+ }
+ }
+
+ return(res);
+}
+
+#endif /* XMLSEC_NO_X509 */
diff --git a/src/mscrypto/Makefile.am b/src/mscrypto/Makefile.am
index 5cea654b..20aedc57 100644
--- a/src/mscrypto/Makefile.am
+++ b/src/mscrypto/Makefile.am
@@ -41,10 +41,6 @@ libxmlsec1_mscrypto_la_SOURCES =\
xmlsec-mingw.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_mscrypto_la_SOURCES += ../strings.c
-endif
-
libxmlsec1_mscrypto_la_LIBADD = \
$(MSCRYPTO_LIBS) \
$(LIBXSLT_LIBS) \
diff --git a/src/mscrypto/app.c b/src/mscrypto/app.c
index bcb0ea19..3f5ab179 100644
--- a/src/mscrypto/app.c
+++ b/src/mscrypto/app.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for Microsoft Crypto API.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -18,6 +26,8 @@
#include <xmlsec/keys.h>
#include <xmlsec/transforms.h>
#include <xmlsec/errors.h>
+#include <xmlsec/keysdata.h>
+#include <xmlsec/xmltree.h>
#include <xmlsec/mscrypto/app.h>
#include <xmlsec/mscrypto/crypto.h>
@@ -26,6 +36,10 @@
#include <xmlsec/mscrypto/x509.h>
#include "private.h"
+#ifndef PKCS12_NO_PERSIST_KEY
+/* Windows Server 2003 and Windows XP: This value is not supported. */
+# define PKCS12_NO_PERSIST_KEY 0x00008000
+#endif
/* I don't see any other way then to use a global var to get the
* config info to the mscrypto keysstore :( WK
@@ -52,38 +66,18 @@ xmlSecMSCryptoAppInit(const char* config) {
if (NULL != config && strlen(config) > 0) {
if (gXmlSecMSCryptoAppCertStoreName != NULL) {
/* This should not happen, initialize twice */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "config=%s, config already set",
- xmlSecErrorsSafeString(config));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_CONFIG, NULL,
+ "config=%s, config already set",
+ xmlSecErrorsSafeString(config));
return (-1);
}
-#ifdef UNICODE
- gXmlSecMSCryptoAppCertStoreName = xmlSecMSCryptoConvertLocaleToUnicode(config);
+ gXmlSecMSCryptoAppCertStoreName = xmlSecWin32ConvertUtf8ToTstr((const xmlChar *)config);
if (gXmlSecMSCryptoAppCertStoreName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoConvertLocaleToUnicode",
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "config=%s",
- xmlSecErrorsSafeString(config));
+ xmlSecInternalError2("xmlSecWin32ConvertUtf8ToTstr", NULL,
+ "config=%s", xmlSecErrorsSafeString(config));
return (-1);
}
-#else /* UNICODE */
- gXmlSecMSCryptoAppCertStoreName = xmlStrdup(config);
- if (gXmlSecMSCryptoAppCertStoreName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlStrdup",
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "config=%s",
- xmlSecErrorsSafeString(config));
- return (-1);
- }
-#endif /* UNICODE */
}
return(0);
@@ -150,33 +144,21 @@ xmlSecMSCryptoAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
case xmlSecKeyDataFormatPkcs12:
key = xmlSecMSCryptoAppPkcs12Load(filename, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppPkcs12Load",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoAppPkcs12Load", NULL);
return(NULL);
}
break;
case xmlSecKeyDataFormatCertDer:
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return (NULL);
}
@@ -185,11 +167,7 @@ xmlSecMSCryptoAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
xmlSecBufferGetSize(&buffer), format,
pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppKeyLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoAppKeyLoadMemory", NULL);
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -197,11 +175,8 @@ xmlSecMSCryptoAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
break;
default:
/* Any other format like PEM keys is currently not supported */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
@@ -235,47 +210,33 @@ xmlSecMSCryptoAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlS
xmlSecAssert2(data != NULL, NULL);
xmlSecAssert2(dataSize > 0, NULL);
xmlSecAssert2(format == xmlSecKeyDataFormatCertDer, NULL);
+ UNREFERENCED_PARAMETER(pwd);
+ UNREFERENCED_PARAMETER(pwdCallback);
+ UNREFERENCED_PARAMETER(pwdCallbackCtx);
pCert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, data, dataSize);
if (NULL == pCert) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCreateCertificateContext",
- XMLSEC_ERRORS_R_IO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertCreateCertificateContext", NULL);
goto done;
}
x509Data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecMSCryptoKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataX509Id)", NULL);
goto done;
}
tmpcert = CertDuplicateCertificateContext(pCert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecMSCryptoKeyDataX509AdoptKeyCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
CertFreeCertificateContext(tmpcert);
goto done;
}
@@ -283,45 +244,31 @@ xmlSecMSCryptoAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlS
keyData = xmlSecMSCryptoCertAdopt(pCert, xmlSecKeyDataTypePublic);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoCertAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoCertAdopt",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
pCert = NULL;
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
keyData = NULL;
ret = xmlSecKeyAdoptData(key, x509Data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
x509Data = NULL;
@@ -378,22 +325,14 @@ xmlSecMSCryptoAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(-1);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return (-1);
}
@@ -401,11 +340,7 @@ xmlSecMSCryptoAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
ret = xmlSecMSCryptoAppKeyCertLoadMemory(key, xmlSecBufferGetData(&buffer),
xmlSecBufferGetSize(&buffer), format);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppKeyCertLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoAppKeyCertLoadMemory", NULL);
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -438,12 +373,7 @@ xmlSecMSCryptoAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xml
kdata = xmlSecKeyEnsureData(key, xmlSecMSCryptoKeyDataX509Id);
if(kdata == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecMSCryptoKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyEnsureData(xmlSecMSCryptoKeyDataX509Id)", NULL);
return(-1);
}
@@ -454,32 +384,22 @@ xmlSecMSCryptoAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xml
case xmlSecKeyDataFormatCertDer:
pCert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, data, dataSize);
if (NULL == pCert) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCreateCertificateContext",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "format=%d", format);
+ xmlSecInternalError2("CertCreateCertificateContext", NULL,
+ "format=%d", format);
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(kdata, pCert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(kdata)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(kdata));
CertFreeCertificateContext(pCert);
return(-1);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", (int)format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(-1);
}
@@ -511,31 +431,19 @@ xmlSecMSCryptoAppPkcs12Load(const char *filename,
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return (NULL);
}
if(xmlSecBufferGetData(&buffer) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidDataError("data buffer is empty", NULL);
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -544,11 +452,7 @@ xmlSecMSCryptoAppPkcs12Load(const char *filename,
xmlSecBufferGetSize(&buffer), pwd,
pwdCallback, pwdCallbackCtx);
if (key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppPkcs12LoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoAppPkcs12LoadMemory", NULL);
xmlSecBufferFinalize(&buffer);
return(NULL);
}
@@ -580,116 +484,93 @@ xmlSecMSCryptoAppPkcs12LoadMemory(const xmlSecByte* data,
PCCERT_CONTEXT tmpcert = NULL;
PCCERT_CONTEXT pCert = NULL;
WCHAR* wcPwd = NULL;
+ DWORD dwFlags;
xmlSecKeyDataPtr x509Data = NULL;
xmlSecKeyDataPtr keyData = NULL;
xmlSecKeyPtr key = NULL;
- int ret;
+ int ret;
+ DWORD dwData = 0;
+ DWORD dwDataLen;
xmlSecAssert2(data != NULL, NULL);
xmlSecAssert2(dataSize > 1, NULL);
xmlSecAssert2(pwd != NULL, NULL);
+ UNREFERENCED_PARAMETER(pwdCallback);
+ UNREFERENCED_PARAMETER(pwdCallbackCtx);
memset(&pfx, 0, sizeof(pfx));
pfx.pbData = (BYTE *)data;
pfx.cbData = dataSize;
if(FALSE == PFXIsPFXBlob(&pfx)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PFXIsPFXBlob",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%ld",
- pfx.cbData);
+ xmlSecMSCryptoError2("PFXIsPFXBlob", NULL,
+ "size=%ld", (long int)pfx.cbData);
goto done;
}
- wcPwd = xmlSecMSCryptoConvertLocaleToUnicode(pwd);
+ wcPwd = xmlSecWin32ConvertLocaleToUnicode(pwd);
if (wcPwd == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoConvertLocaleToUnicode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "wcPwd");
+ xmlSecInternalError("xmlSecWin32ConvertLocaleToUnicode(pw)", NULL);
goto done;
}
if (FALSE == PFXVerifyPassword(&pfx, wcPwd, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PFXVerifyPassword",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("PFXVerifyPassword", NULL);
goto done;
}
- hCertStore = PFXImportCertStore(&pfx, wcPwd, CRYPT_EXPORTABLE | PKCS12_NO_PERSIST_KEY);
+ dwFlags = CRYPT_EXPORTABLE;
+ if (!xmlSecImportGetPersistKey()) {
+ dwFlags |= PKCS12_NO_PERSIST_KEY;
+ }
+ hCertStore = PFXImportCertStore(&pfx, wcPwd, dwFlags);
if (NULL == hCertStore) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PFXImportCertStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("PFXImportCertStore", NULL);
goto done;
}
x509Data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecMSCryptoKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataX509Id)", NULL);
goto done;
}
- while (pCert = CertEnumCertificatesInStore(hCertStore, pCert)) {
- DWORD dwData = 0;
- DWORD dwDataLen = sizeof(DWORD);
+ while (1) {
+ pCert = CertEnumCertificatesInStore(hCertStore, pCert);
+ if(pCert == NULL) {
+ break;
+ }
+ dwDataLen = sizeof(DWORD);
+ dwData = 0;
/* Find the certificate that has the private key */
if((TRUE == CertGetCertificateContextProperty(pCert, CERT_KEY_SPEC_PROP_ID, &dwData, &dwDataLen)) && (dwData > 0)) {
tmpcert = CertDuplicateCertificateContext(pCert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
keyData = xmlSecMSCryptoCertAdopt(tmpcert, xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoCertAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoCertAdopt",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
- tmpcert = NULL;
+ tmpcert = NULL;
tmpcert = CertDuplicateCertificateContext(pCert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecMSCryptoKeyDataX509AdoptKeyCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
tmpcert = NULL;
@@ -698,55 +579,39 @@ xmlSecMSCryptoAppPkcs12LoadMemory(const xmlSecByte* data,
/* load certificate in the x509 key data */
tmpcert = CertDuplicateCertificateContext(pCert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
tmpcert = NULL;
}
if (keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppPkcs12Load",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "private key not found in PKCS12 file");
+ /* private key not found in PKCS12 file */
+ xmlSecInternalError2("xmlSecMSCryptoAppPkcs12Load",
+ xmlSecKeyDataGetName(x509Data),
+ "private key not found in PKCS12 file", NULL);
goto done;
}
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -755,12 +620,8 @@ xmlSecMSCryptoAppPkcs12LoadMemory(const xmlSecByte* data,
ret = xmlSecKeyAdoptData(key, x509Data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -812,22 +673,14 @@ xmlSecMSCryptoAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(-1);
}
ret = xmlSecBufferReadFile(&buffer, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferReadFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecBufferReadFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return (-1);
}
@@ -835,12 +688,8 @@ xmlSecMSCryptoAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
ret = xmlSecMSCryptoAppKeysMngrCertLoadMemory(mngr, xmlSecBufferGetData(&buffer),
xmlSecBufferGetSize(&buffer), format, type);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoAppKeysMngrCertLoadMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecMSCryptoAppKeysMngrCertLoadMemory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -878,11 +727,7 @@ xmlSecMSCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecMSCryptoX509StoreId)", NULL);
return(-1);
}
@@ -892,31 +737,20 @@ xmlSecMSCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte
pCert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
data, dataSize);
if (NULL == pCert) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCreateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertCreateCertificateContext", NULL);
return (-1);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(-1);
}
xmlSecAssert2(pCert != NULL, -1);
ret = xmlSecMSCryptoX509StoreAdoptCert(x509Store, pCert, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509StoreAdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509StoreAdoptCert", NULL);
CertFreeCertificateContext(pCert);
return(-1);
}
@@ -943,21 +777,14 @@ xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore(xmlSecKeysMngrPtr mngr, HCERTSTORE
x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId) ;
if( x509Store == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecKeysMngrGetDataStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1) ;
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecMSCryptoX509StoreId)", NULL);
+ return(-1) ;
}
if( xmlSecMSCryptoX509StoreAdoptKeyStore( x509Store, keyStore ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
- "xmlSecMSCryptoX509StoreAdoptKeyStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1) ;
+ xmlSecInternalError("xmlSecMSCryptoX509StoreAdoptKeyStore",
+ xmlSecKeyDataStoreGetName(x509Store));
+ return(-1) ;
}
return (0) ;
@@ -982,21 +809,14 @@ xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore(xmlSecKeysMngrPtr mngr, HCERTS
x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId ) ;
if( x509Store == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecKeysMngrGetDataStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1) ;
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore", NULL);
+ return(-1) ;
}
if( xmlSecMSCryptoX509StoreAdoptTrustedStore( x509Store, trustedStore ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
- "xmlSecMSCryptoX509StoreAdoptKeyStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1) ;
+ xmlSecInternalError("xmlSecMSCryptoX509StoreAdoptKeyStore",
+ xmlSecKeyDataStoreGetName(x509Store));
+ return(-1) ;
}
return(0);
@@ -1020,25 +840,18 @@ xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore(xmlSecKeysMngrPtr mngr, HCER
xmlSecAssert2( untrustedStore != NULL, -1 ) ;
x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId);
- if( x509Store == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecKeysMngrGetDataStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+ if(x509Store == NULL) {
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore", NULL);
+ return(-1);
+ }
- if( xmlSecMSCryptoX509StoreAdoptUntrustedStore( x509Store, untrustedStore ) < 0) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
- "xmlSecMSCryptoX509StoreAdoptKeyStore" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+ if(xmlSecMSCryptoX509StoreAdoptUntrustedStore(x509Store, untrustedStore) < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509StoreAdoptKeyStore",
+ xmlSecKeyDataStoreGetName(x509Store));
+ return(-1);
+ }
- return(0) ;
+ return(0) ;
}
#endif /* XMLSEC_NO_X509 */
@@ -1064,21 +877,13 @@ xmlSecMSCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecMSCryptoKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecMSCryptoX509StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -1086,11 +891,7 @@ xmlSecMSCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecMSCryptoKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeysMngrInit", NULL);
return(-1);
}
@@ -1118,21 +919,13 @@ xmlSecMSCryptoAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr ke
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecMSCryptoKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -1159,21 +952,14 @@ xmlSecMSCryptoAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecMSCryptoKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecMSCryptoKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -1200,21 +986,14 @@ xmlSecMSCryptoAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filenam
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecMSCryptoKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename%s", xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecMSCryptoKeysStoreSave", NULL,
+ "filename%s", xmlSecErrorsSafeString(filename));
return(-1);
}
diff --git a/src/mscrypto/certkeys.c b/src/mscrypto/certkeys.c
index 1cf0e554..226e9c80 100644
--- a/src/mscrypto/certkeys.c
+++ b/src/mscrypto/certkeys.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:certkeys
+ * @Short_description: Certificate keys support functions for Microsoft Crypto API.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -50,7 +58,7 @@ typedef struct _xmlSecMSCryptoKeyDataCtx xmlSecMSCryptoKeyDataCtx,
#ifdef XMLSEC_MSCRYPTO_NT4
/*-
- * A wrapper of HCRYPTKEY, a reference countor is introduced, the function is
+ * A wrapper of HCRYPTKEY, a reference counter is introduced, the function is
* the same as CryptDuplicateKey. Because the CryptDuplicateKey is not support
* by WINNT 4.0, the wrapper will enable the library work on WINNT 4.0
*/
@@ -60,7 +68,7 @@ struct _mscrypt_key {
} ;
/*-
- * A wrapper of HCRYPTPROV, a reference countor is introduced, the function is
+ * A wrapper of HCRYPTPROV, a reference counter is introduced, the function is
* the same as CryptContextAddRef. Because the CryptContextAddRef is not support
* by WINNT 4.0, the wrapper will enable the library work on WINNT 4.0
*/
@@ -98,12 +106,13 @@ struct _xmlSecMSCryptoKeyDataCtx {
/******************************** Provider *****************************************/
#define xmlSecMSCryptoKeyDataCtxGetProvider(ctx) (ctx)->hProv
-static void
+static int
xmlSecMSCryptoKeyDataCtxCreateProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
- ctx->hProv = 0;
- ctx->fCallerFreeProv = FALSE;
+ ctx->hProv = 0;
+ ctx->fCallerFreeProv = FALSE;
+ return(0);
}
static void
@@ -111,20 +120,21 @@ xmlSecMSCryptoKeyDataCtxDestroyProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
xmlSecAssert(ctx != NULL);
if ((ctx->hProv != 0) && (ctx->fCallerFreeProv)) {
- CryptReleaseContext(ctx->hProv, 0);
+ CryptReleaseContext(ctx->hProv, 0);
}
- ctx->hProv = 0;
- ctx->fCallerFreeProv = FALSE;
+ ctx->hProv = 0;
+ ctx->fCallerFreeProv = FALSE;
}
-static void
+static int
xmlSecMSCryptoKeyDataCtxSetProvider(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTPROV hProv, BOOL fCallerFreeProv)
{
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
ctx->hProv = hProv;
ctx->fCallerFreeProv = fCallerFreeProv;
+ return(0);
}
static int
@@ -136,11 +146,7 @@ xmlSecMSCryptoKeyDataCtxDuplicateProvider(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xm
if(ctxSrc->hProv != 0) {
if(!CryptContextAddRef(ctxSrc->hProv, NULL, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptContextAddRef",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptContextAddRef", NULL);
return(-1);
}
@@ -154,11 +160,12 @@ xmlSecMSCryptoKeyDataCtxDuplicateProvider(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xm
/******************************** Key *****************************************/
#define xmlSecMSCryptoKeyDataCtxGetKey(ctx) ((ctx)->hKey)
-static void
+static int
xmlSecMSCryptoKeyDataCtxCreateKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
ctx->hKey = 0;
+ return(0);
}
static void
@@ -171,12 +178,13 @@ xmlSecMSCryptoKeyDataCtxDestroyKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
ctx->hKey = 0;
}
-static void
+static int
xmlSecMSCryptoKeyDataCtxSetKey(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTKEY hKey) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
ctx->hKey = hKey;
+ return(0);
}
static int
@@ -187,11 +195,7 @@ xmlSecMSCryptoKeyDataCtxDuplicateKey(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecM
xmlSecMSCryptoKeyDataCtxDestroyKey(ctxDst);
if (ctxSrc->hKey != 0) {
if (!CryptDuplicateKey(ctxSrc->hKey, NULL, 0, &(ctxDst->hKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptDuplicateKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptDuplicateKey", NULL);
return(-1);
}
}
@@ -204,58 +208,62 @@ xmlSecMSCryptoKeyDataCtxDuplicateKey(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecM
/******************************** Provider *****************************************/
#define xmlSecMSCryptoKeyDataCtxGetProvider(ctx) (((ctx)->p_prov) ? ((ctx)->p_prov->hProv) : 0)
-static void
+static int
xmlSecMSCryptoKeyDataCtxCreateProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
- ctx->p_prov = (struct _mscrypt_prov*)xmlMalloc(sizeof(struct _mscrypt_prov));
- if(ctx->p_prov == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE,
- "mscrypt_create_prov" ,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE
- );
- }
+ ctx->p_prov = (struct _mscrypt_prov*)xmlMalloc(sizeof(struct _mscrypt_prov));
+ if(ctx->p_prov == NULL) {
+ xmlSecMallocError(sizeof(struct _mscrypt_prov), NULL);
+ return(-1);
+ }
memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
+ return(0);
}
static void
xmlSecMSCryptoKeyDataCtxDestroyProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
xmlSecAssert(ctx != NULL);
- if(ctx->p_prov != NULL) {
- if(InterlockedDecrement(&(ctx->p_prov->refcnt)) <= 0) {
- if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
- CryptReleaseContext(ctx->p_prov->hProv, 0) ;
- }
+ if(ctx->p_prov != NULL) {
+ if(InterlockedDecrement(&(ctx->p_prov->refcnt)) <= 0) {
+ if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
+ CryptReleaseContext(ctx->p_prov->hProv, 0) ;
+ }
memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
- xmlFree(ctx->p_prov) ;
- }
- ctx->p_prov = NULL;
+ xmlFree(ctx->p_prov) ;
}
+ ctx->p_prov = NULL;
+ }
}
-static void
+static int
xmlSecMSCryptoKeyDataCtxSetProvider(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTPROV hProv, BOOL fCallerFreeProv)
{
- xmlSecAssert(ctx != NULL);
+ int ret;
+
+ xmlSecAssert2(ctx != NULL, -1);
xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
if((ctx->p_prov != NULL) && (ctx->p_prov->refcnt == 1)) {
- if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
- CryptReleaseContext(ctx->p_prov->hProv, 0) ;
- }
+ if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
+ CryptReleaseContext(ctx->p_prov->hProv, 0) ;
+ }
memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
} else {
xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
- xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
+ ret = xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxCreateProvider", NULL);
+ return(-1);
+ }
}
ctx->p_prov->hProv = hProv;
ctx->p_prov->fCallerFreeProv = fCallerFreeProv;
ctx->p_prov->refcnt = 1;
+ return(0);
}
static int
@@ -276,20 +284,17 @@ xmlSecMSCryptoKeyDataCtxDuplicateProvider(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xm
/******************************** Key *****************************************/
#define xmlSecMSCryptoKeyDataCtxGetKey(ctx) (((ctx)->p_key) ? ((ctx)->p_key->hKey) : 0)
-static void
+static int
xmlSecMSCryptoKeyDataCtxCreateKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
- ctx->p_key = (struct _mscrypt_key*)xmlMalloc(sizeof(struct _mscrypt_key));
- if(ctx->p_key == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE,
- "mscrypt_create_key" ,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE
- );
- }
+ ctx->p_key = (struct _mscrypt_key*)xmlMalloc(sizeof(struct _mscrypt_key));
+ if(ctx->p_key == NULL ) {
+ xmlSecMallocError(sizeof(struct _mscrypt_key), NULL);
+ return(-1);
+ }
memset(ctx->p_key, 0, sizeof(struct _mscrypt_key));
+ return(0);
}
static void
@@ -308,21 +313,27 @@ xmlSecMSCryptoKeyDataCtxDestroyKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
}
}
-static void
+static int
xmlSecMSCryptoKeyDataCtxSetKey(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTKEY hKey) {
- xmlSecAssert(ctx != NULL);
+ int ret;
+ xmlSecAssert2(ctx != NULL, -1);
if((ctx->p_key != NULL) && (ctx->p_key->refcnt == 1)) {
- if(ctx->p_key->hKey != 0) {
- CryptDestroyKey(ctx->p_key->hKey) ;
- }
+ if(ctx->p_key->hKey != 0) {
+ CryptDestroyKey(ctx->p_key->hKey) ;
+ }
memset(ctx->p_key, 0, sizeof(struct _mscrypt_key));
} else {
xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
- xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+ ret = xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxCreateKey", NULL);
+ return(-1);
+ }
}
ctx->p_key->hKey = hKey;
ctx->p_key->refcnt = 1;
+ return(0);
}
static int
@@ -361,12 +372,13 @@ xmlSecMSCryptoKeyDataCtxDestroyCert(xmlSecMSCryptoKeyDataCtxPtr ctx) {
ctx->pCert = NULL;
}
-static void
+static int
xmlSecMSCryptoKeyDataCtxSetCert(xmlSecMSCryptoKeyDataCtxPtr ctx, PCCERT_CONTEXT pCert) {
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
xmlSecMSCryptoKeyDataCtxDestroyCert(ctx);
ctx->pCert = pCert;
+ return(0);
}
static int
@@ -378,11 +390,7 @@ xmlSecMSCryptoKeyDataCtxDuplicateCert(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSec
if(ctxSrc->pCert != NULL) {
ctxDst->pCert = xmlSecMSCryptoCertDup(ctxSrc->pCert);
if(ctxDst->pCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoPCCDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoPCCDup", NULL);
return(-1);
}
}
@@ -416,6 +424,7 @@ static int
xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
HCRYPTKEY hKey = 0;
+ int ret;
xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), -1);
@@ -445,34 +454,30 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
&hProv,
&(ctx->dwKeySpec),
&fCallerFreeProv)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptAcquireCertificatePrivateKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptAcquireCertificatePrivateKey", NULL);
return(-1);
}
- xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
+ ret = xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetProvider", NULL);
+ return(-1);
+ }
} else if((type & xmlSecKeyDataTypePublic) != 0){
HCRYPTPROV hProv;
hProv = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, FALSE);
if (hProv == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider", NULL);
+ return(-1);
+ }
+ ret = xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, TRUE);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetProvider", NULL);
return(-1);
}
- xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, TRUE);
ctx->dwKeySpec = 0;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Unsupported keytype");
+ xmlSecInvalidIntegerTypeError("keytype", type, "supported keytype", NULL);
return(-1);
}
@@ -480,23 +485,27 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
* is needed. The key handle is needed for de/encrypting and for
* verifying of a signature, *not* for signing. We could call
* CryptImportPublicKeyInfo in xmlSecMSCryptoKeyDataGetKey instead
- * so no unnessecary calls to CryptImportPublicKeyInfo are being
+ * so no unnecessary calls to CryptImportPublicKeyInfo are being
* made. WK
*/
if(!CryptImportPublicKeyInfo(xmlSecMSCryptoKeyDataCtxGetProvider(ctx),
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
&(pCert->pCertInfo->SubjectPublicKeyInfo),
&hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptImportPublicKeyInfo",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptImportPublicKeyInfo", NULL);
return(-1);
}
- xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
- xmlSecMSCryptoKeyDataCtxSetCert(ctx, pCert);
+ ret = xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetKey", NULL);
+ return(-1);
+ }
+ ret = xmlSecMSCryptoKeyDataCtxSetCert(ctx, pCert);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetCert", NULL);
+ return(-1);
+ }
return(0);
}
@@ -508,6 +517,7 @@ xmlSecMSCryptoKeyDataAdoptKey(xmlSecKeyDataPtr data,
DWORD dwKeySpec,
xmlSecKeyDataType type) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), -1);
@@ -517,9 +527,21 @@ xmlSecMSCryptoKeyDataAdoptKey(xmlSecKeyDataPtr data,
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
- xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
- xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
- xmlSecMSCryptoKeyDataCtxSetCert(ctx, NULL);
+ ret = xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetProvider", NULL);
+ return(-1);
+ }
+ ret = xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetKey", NULL);
+ return(-1);
+ }
+ ret = xmlSecMSCryptoKeyDataCtxSetCert(ctx, NULL);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxSetCert", NULL);
+ return(-1);
+ }
ctx->dwKeySpec = dwKeySpec;
ctx->type = type;
@@ -546,6 +568,7 @@ xmlSecMSCryptoKeyDataGetKey(xmlSecKeyDataPtr data, xmlSecKeyDataType type) {
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, 0);
+ UNREFERENCED_PARAMETER(type);
return(xmlSecMSCryptoKeyDataCtxGetKey(ctx));
}
@@ -571,11 +594,7 @@ xmlSecMSCryptoKeyDataGetDecryptKey(xmlSecKeyDataPtr data) {
xmlSecAssert2(ctx != NULL, 0);
if( !CryptGetUserKey(xmlSecMSCryptoKeyDataCtxGetProvider(ctx), AT_KEYEXCHANGE, &(hKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetUserKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGetUserKey", NULL);
return(0);
}
return (hKey);
@@ -645,6 +664,44 @@ xmlSecMSCryptoKeyDataGetMSCryptoKeySpec(xmlSecKeyDataPtr data) {
return(ctx->dwKeySpec);
}
+/**
+ * xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo:
+ * @data: the key data
+ *
+ * Gets key provider info.
+ *
+ * Returns: the key provider info.
+ */
+PCRYPT_KEY_PROV_INFO
+xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo(xmlSecKeyDataPtr data) {
+ xmlSecMSCryptoKeyDataCtxPtr ctx;
+ LPBYTE pInfoData = NULL;
+ DWORD dwInfoDataLength = 0;
+
+ xmlSecAssert2(data != NULL, NULL);
+
+ ctx = xmlSecMSCryptoKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, NULL);
+ xmlSecAssert2(ctx->pCert != NULL, NULL);
+
+ if(!CertGetCertificateContextProperty(ctx->pCert, CERT_KEY_PROV_INFO_PROP_ID, NULL, &dwInfoDataLength)) {
+ xmlSecMSCryptoError("CertGetCertificateContextProperty", NULL);
+ return NULL;
+ }
+
+ if(dwInfoDataLength > 0) {
+ pInfoData = malloc(dwInfoDataLength * sizeof(BYTE));
+
+ if(!CertGetCertificateContextProperty(ctx->pCert, CERT_KEY_PROV_INFO_PROP_ID, pInfoData, &dwInfoDataLength)) {
+ xmlSecMSCryptoError("CertGetCertificateContextProperty", NULL);
+ free(pInfoData);
+ return NULL;
+ }
+ }
+
+ return (PCRYPT_KEY_PROV_INFO)pInfoData;
+}
+
static int
xmlSecMSCryptoKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecMSCryptoKeyDataCtxPtr ctxDst;
@@ -662,29 +719,20 @@ xmlSecMSCryptoKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecAssert2(ctxSrc != NULL, -1);
if(xmlSecMSCryptoKeyDataCtxDuplicateProvider(ctxDst, ctxSrc) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataCtxDuplicateProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxDuplicateProvider",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
if(xmlSecMSCryptoKeyDataCtxDuplicateKey(ctxDst, ctxSrc) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataCtxDuplicateKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxDuplicateKey",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
if(xmlSecMSCryptoKeyDataCtxDuplicateCert(ctxDst, ctxSrc) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataCtxDuplicateCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxDuplicateCert",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
@@ -695,21 +743,31 @@ xmlSecMSCryptoKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
return(0);
}
-static void
+static int
xmlSecMSCryptoKeyDataInitialize(xmlSecKeyDataPtr data) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
- xmlSecAssert(xmlSecKeyDataIsValid(data));
- xmlSecAssert(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize));
+ xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), -1);
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
- xmlSecAssert(ctx != NULL);
+ xmlSecAssert2(ctx != NULL, -1);
memset(ctx, 0, sizeof(xmlSecMSCryptoKeyDataCtx));
- xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
- xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+ ret = xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxCreateProvider", NULL);
+ return(-1);
+ }
+ ret = xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataCtxCreateKey", NULL);
+ return(-1);
+ }
xmlSecMSCryptoKeyDataCtxCreateCert(ctx);
+ return(0);
}
static void
@@ -748,11 +806,7 @@ xmlSecMSCryptoKeyDataGetSize(xmlSecKeyDataPtr data) {
DWORD lenlen = sizeof(DWORD);
if (!CryptGetKeyParam(xmlSecMSCryptoKeyDataCtxGetKey(ctx), KP_KEYLEN, (BYTE *)&length, &lenlen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext", NULL);
return(0);
}
return(length);
@@ -795,11 +849,7 @@ PCCERT_CONTEXT xmlSecMSCryptoCertDup(PCCERT_CONTEXT pCert) {
ret = CertDuplicateCertificateContext(pCert);
if(ret == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext", NULL);
return(NULL);
}
@@ -829,11 +879,7 @@ xmlSecMSCryptoCertAdopt(PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
if (!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_RSA_RSA)) {
data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataRsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataRsaId)", NULL);
return(NULL);
}
}
@@ -843,11 +889,7 @@ xmlSecMSCryptoCertAdopt(PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
if (!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_X957_DSA /*szOID_DSALG_SIGN*/)) {
data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataDsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataDsaId)", NULL);
return(NULL);
}
}
@@ -859,22 +901,34 @@ xmlSecMSCryptoCertAdopt(PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_MAGPRO_PUBKEY_SIGN_R3410_94_CP)) {
data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataGost2001Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoKeyDataGost2001Id");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataGost2001Id)", NULL);
return(NULL);
}
}
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if (!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_CP_GOST_R3410_12_256) ||
+ !strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_CP_GOST_R3411_12_256_R3410)) {
+ data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataGost2012_256Id);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataGost2012_256Id)", NULL);
+ return(NULL);
+ }
+ }
+ if (!strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_CP_GOST_R3410_12_512) ||
+ !strcmp(pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId, szOID_CP_GOST_R3411_12_512_R3410)) {
+ data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataGost2012_512Id);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataGost2012_512Id)", NULL);
+ return(NULL);
+ }
+ }
+#endif /* XMLSEC_NO_GOST2012 */
if (NULL == data) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "PCCERT_CONTEXT key type %s not supported", pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId);
+ xmlSecInvalidStringTypeError("PCCERT_CONTEXT key type",
+ pCert->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId,
+ "unsupported keytype", NULL);
return(NULL);
}
@@ -882,11 +936,7 @@ xmlSecMSCryptoCertAdopt(PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
ret = xmlSecMSCryptoKeyDataAdoptCert(data, pCert, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoPCCDataAdoptPCC",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoPCCDataAdoptPCC", NULL);
xmlSecKeyDataDestroy(data);
return(NULL);
}
@@ -1023,10 +1073,15 @@ xmlSecMSCryptoKeyDataRsaGetKlass(void) {
static int
xmlSecMSCryptoKeyDataRsaInitialize(xmlSecKeyDataPtr data) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataRsaId), xmlSecKeyDataTypeUnknown);
- xmlSecMSCryptoKeyDataInitialize(data);
+ ret = xmlSecMSCryptoKeyDataInitialize(data);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataInitialize", NULL);
+ return(-1);
+ }
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
@@ -1072,43 +1127,32 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- "key already has a value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
return(-1);
}
/* initialize buffers */
ret = xmlSecBnInitialize(&modulus, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "modulus");
+ xmlSecInternalError("xmlSecBnInitialize(modulus)",
+ xmlSecKeyDataKlassGetName(id));;
return(-1);
}
ret = xmlSecBnInitialize(&exponent, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "exponent");
+ xmlSecInternalError("xmlSecBnInitialize(exponent)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&modulus);
return(-1);
}
ret = xmlSecBufferInitialize(&blob, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "blob");
+ xmlSecInternalError("xmlSecBufferInitialize(blob)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&modulus);
xmlSecBnFinalize(&exponent);
return(-1);
@@ -1119,45 +1163,28 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAModulus,
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&modulus, cur, xmlSecBnBase64, 1);
- if((ret < 0) || (xmlSecBnGetSize(&modulus) == 0)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ if((ret < 0) || (xmlSecBnGetSize(&modulus) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(modulus)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Exponent node. It is REQUIRED because we do not support Seed and PgenCounter*/
- if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAExponent, xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&exponent, cur, xmlSecBnBase64, 1);
if((ret < 0) || (xmlSecBnGetSize(&exponent) == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecBnGetNodeValue(exponent)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1169,11 +1196,7 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
goto done;
}
@@ -1181,11 +1204,9 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
blobBufferLen = sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY) + xmlSecBnGetSize(&modulus);
ret = xmlSecBufferSetSize(&blob, blobBufferLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blobBufferLen);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecKeyDataKlassGetName(id),
+ "size=%d", blobBufferLen);
goto done;
}
@@ -1202,12 +1223,9 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
pubKey->bitlen = xmlSecBnGetSize(&modulus) * 8; /* Number of bits in prime modulus */
pubKey->pubexp = 0;
if(sizeof(pubKey->pubexp) < xmlSecBnGetSize(&exponent)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "exponent size=%d",
- xmlSecBnGetSize(&exponent));
+ xmlSecInvalidSizeLessThanError("exponent size",
+ sizeof(pubKey->pubexp), xmlSecBnGetSize(&exponent),
+ NULL);
goto done;
}
xmlSecAssert2(xmlSecBnGetData(&exponent) != NULL, -1);
@@ -1220,40 +1238,28 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* Now that we have the blob, import */
hProv = xmlSecMSCryptoFindProvider(xmlSecMSCryptoProviderInfo_Rsa, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(hProv == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
if (!CryptImportKey(hProv, xmlSecBufferGetData(&blob), xmlSecBufferGetSize(&blob), 0, 0, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptImportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptImportKey",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecMSCryptoKeyDataAdoptKey(data, hProv, TRUE, hKey, 0, xmlSecKeyDataTypePublic);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataAdoptKey",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
hProv = 0;
@@ -1261,11 +1267,8 @@ xmlSecMSCryptoKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
goto done;
}
@@ -1315,40 +1318,29 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(xmlSecMSCryptoKeyDataCtxGetKey(ctx) != 0, -1);
if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecBufferInitialize(&buf, dwBlobLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%ld", dwBlobLen);
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id),
+ "size=%ld", dwBlobLen);
return(-1);
}
blob = xmlSecBufferGetData(&buf);
if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
if (dwBlobLen < sizeof(PUBLICKEYSTRUC)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "blobLen=%ld", dwBlobLen);
+ xmlSecInvalidSizeLessThanError("Key blob", dwBlobLen, sizeof(PUBLICKEYSTRUC),
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -1356,20 +1348,18 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* check PUBLICKEYSTRUC */
pubKeyStruc = (PUBLICKEYSTRUC*)blob;
if(pubKeyStruc->bVersion != 0x02) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bVersion=%d", pubKeyStruc->bVersion);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKeyStruc->bVersion=%ld",
+ (long int)pubKeyStruc->bVersion);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(pubKeyStruc->bType != PUBLICKEYBLOB) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bType=%d", (int)pubKeyStruc->bType);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKeyStruc->bType=%ld",
+ (long int)pubKeyStruc->bType);
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -1377,22 +1367,19 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* check RSAPUBKEY */
pubKey = (RSAPUBKEY *)(blob + sizeof(PUBLICKEYSTRUC));
if(pubKey->magic != 0x31415352) { /* RSA public key magic */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKey->magic=0x%08lx", pubKey->magic);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKey->magic=0x%08lx",
+ (long int)pubKey->magic);
xmlSecBufferFinalize(&buf);
return(-1);
}
modulusLen = pubKey->bitlen / 8;
if (dwBlobLen < sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY) + modulusLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "blobLen=%ld; modulusLen=%d", dwBlobLen, modulusLen);
+ xmlSecInvalidSizeLessThanError("Key blob",
+ dwBlobLen, sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY) + modulusLen,
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -1401,24 +1388,16 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node */
cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
ret = xmlSecBnBlobSetNodeValue(blob, modulusLen, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -1426,12 +1405,8 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Exponent node. */
cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -1445,18 +1420,15 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBnBlobSetNodeValue(blob, exponentLen, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
/* next is PrivateExponent node: not supported in MSCrypto */
+ /* done */
xmlSecBufferFinalize(&buf);
return(0);
}
@@ -1476,6 +1448,7 @@ xmlSecMSCryptoKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), xmlSecKeyDataTypeUnknown);
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataRsaId), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
@@ -1483,33 +1456,24 @@ xmlSecMSCryptoKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits,
/* get provider */
hProv = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(hProv == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecKeyDataGetName(data));
goto done;
}
dwKeySpec = AT_KEYEXCHANGE | AT_SIGNATURE;
dwSize = ((sizeBits << 16) | CRYPT_EXPORTABLE);
if (!CryptGenKey(hProv, CALG_RSA_SIGN, dwSize, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CryptGenKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGenKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
ret = xmlSecMSCryptoKeyDataAdoptKey(data, hProv, TRUE, hKey, dwKeySpec,
xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
hProv = 0;
@@ -1723,10 +1687,15 @@ xmlSecMSCryptoKeyDataDsaGetKlass(void) {
static int
xmlSecMSCryptoKeyDataDsaInitialize(xmlSecKeyDataPtr data) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataDsaId), xmlSecKeyDataTypeUnknown);
- xmlSecMSCryptoKeyDataInitialize(data);
+ ret = xmlSecMSCryptoKeyDataInitialize(data);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataInitialize", NULL);
+ return(-1);
+ }
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
@@ -1774,43 +1743,32 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- "key already has a value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
return(-1);
}
/* initialize buffers */
ret = xmlSecBnInitialize(&p, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "p");
+ xmlSecInternalError("xmlSecBnInitialize(p)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecBnInitialize(&q, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "q");
+ xmlSecInternalError("xmlSecBnInitialize(q)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&p);
return(-1);
}
ret = xmlSecBnInitialize(&g, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "g");
+ xmlSecInternalError("xmlSecBnInitialize(g)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&p);
xmlSecBnFinalize(&q);
return(-1);
@@ -1818,11 +1776,8 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBnInitialize(&y, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "y");
+ xmlSecInternalError("xmlSecBnInitialize(y)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&p);
xmlSecBnFinalize(&q);
xmlSecBnFinalize(&g);
@@ -1831,11 +1786,8 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBufferInitialize(&blob, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "blob");
+ xmlSecInternalError("xmlSecBufferInitialize(blob)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBnFinalize(&p);
xmlSecBnFinalize(&q);
xmlSecBnFinalize(&g);
@@ -1848,67 +1800,40 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is P node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAP, xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&p, cur, xmlSecBnBase64, 1);
- if((ret < 0) || (xmlSecBnGetSize(&p) == 0)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ if((ret < 0) || (xmlSecBnGetSize(&p) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(p)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Q node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAQ, xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&q, cur, xmlSecBnBase64, 1);
- if((ret < 0) || (xmlSecBnGetSize(&q) == 0)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ if((ret < 0) || (xmlSecBnGetSize(&q) == 0)) {
+ xmlSecInternalError("xmlSecBnGetNodeValue(q)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is G node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAG, xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&g, cur, xmlSecBnBase64, 1);
if((ret < 0) || (xmlSecBnGetSize(&q) == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecBnGetNodeValue(g)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1922,21 +1847,13 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Y node. */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAY, xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecBnGetNodeValue(&y, cur, xmlSecBnBase64, 1);
if((ret < 0) || (xmlSecBnGetSize(&y) == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnGetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecBnGetNodeValue(y)",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1957,11 +1874,7 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id))
goto done;
}
@@ -1969,11 +1882,7 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
blobBufferLen = sizeof(PUBLICKEYSTRUC) + sizeof(DSSPUBKEY) + 3 * xmlSecBnGetSize(&p) + 0x14 + sizeof(DSSSEED);
ret = xmlSecBufferSetSize(&blob, blobBufferLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blobBufferLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", blobBufferLen);
goto done;
}
@@ -1999,11 +1908,8 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* set q */
if(xmlSecBnGetSize(&q) > 0x14) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "q",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d > 0x14", xmlSecBnGetSize(&q));
+ xmlSecInvalidSizeLessThanError("DSA key q",
+ xmlSecBnGetSize(&q), 0x14, NULL);
goto done;
}
xmlSecAssert2(xmlSecBnGetData(&q) != NULL, -1);
@@ -2017,13 +1923,10 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* set generator */
if(xmlSecBnGetSize(&g) > xmlSecBnGetSize(&p)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "g",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d > %d",
- xmlSecBnGetSize(&g),
- xmlSecBnGetSize(&p));
+ xmlSecInvalidSizeMoreThanError("DSA key g",
+ xmlSecBnGetSize(&g),
+ xmlSecBnGetSize(&p),
+ NULL);
goto done;
}
xmlSecAssert2(xmlSecBnGetData(&g) != NULL, -1);
@@ -2036,13 +1939,10 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* Public key */
if(xmlSecBnGetSize(&y) > xmlSecBnGetSize(&p)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "y",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d > %d",
- xmlSecBnGetSize(&y),
- xmlSecBnGetSize(&p));
+ xmlSecInvalidSizeMoreThanError("DSA key y",
+ xmlSecBnGetSize(&y),
+ xmlSecBnGetSize(&p),
+ NULL);
goto done;
}
xmlSecAssert2(xmlSecBnGetData(&y) != NULL, -1);
@@ -2060,41 +1960,29 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
hProv = xmlSecMSCryptoFindProvider(xmlSecMSCryptoProviderInfo_Dss, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(hProv == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
/* import the key blob */
if (!CryptImportKey(hProv, xmlSecBufferGetData(&blob), xmlSecBufferGetSize(&blob), 0, 0, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptImportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptImportKey",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
goto done;
}
ret = xmlSecMSCryptoKeyDataAdoptKey(data, hProv, TRUE, hKey, 0, xmlSecKeyDataTypePublic);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
hProv = 0;
@@ -2102,11 +1990,8 @@ xmlSecMSCryptoKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL;
@@ -2159,40 +2044,29 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(xmlSecMSCryptoKeyDataCtxGetKey(ctx) != 0, -1);
if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptExportKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecBufferInitialize(&buf, dwBlobLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%ld", dwBlobLen);
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecKeyDataKlassGetName(id),
+ "size=%ld", dwBlobLen);
return(-1);
}
blob = xmlSecBufferGetData(&buf);
if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
if (dwBlobLen < sizeof(PUBLICKEYSTRUC)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "blobLen=%ld", dwBlobLen);
+ xmlSecInvalidSizeLessThanError("Key blob", dwBlobLen, sizeof(PUBLICKEYSTRUC),
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2200,20 +2074,18 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* check PUBLICKEYSTRUC */
pubKeyStruc = (PUBLICKEYSTRUC*)blob;
if(pubKeyStruc->bVersion != 0x02) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bVersion=%d", pubKeyStruc->bVersion);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKeyStruc->bVersion=%ld",
+ (long int)pubKeyStruc->bVersion);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(pubKeyStruc->bType != PUBLICKEYBLOB) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bType=%d", (int)pubKeyStruc->bType);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKeyStruc->bType=%ld",
+ (long int)pubKeyStruc->bType);
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2221,11 +2093,10 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* check DSSPUBKEY */
pubKey = (DSSPUBKEY*)(blob + sizeof(PUBLICKEYSTRUC));
if(pubKey->magic != 0x31535344) { /* DSS key magic */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKey->magic=0x%08lx", pubKey->magic);
+ xmlSecMSCryptoError2("CryptExportKey",
+ xmlSecKeyDataKlassGetName(id),
+ "pubKey->magic=0x%08lx",
+ (long int)pubKey->magic);
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2233,11 +2104,9 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* we assume that sizeof(q) < 0x14, sizeof(g) <= sizeof(p) and sizeof(y) <= sizeof(p) */
if (dwBlobLen < sizeof(PUBLICKEYSTRUC) + sizeof(DSSPUBKEY) + 3 * keyLen + 0x14 + sizeof(DSSSEED)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "blobLen=%ld; keyLen=%d", dwBlobLen, keyLen);
+ xmlSecInvalidSizeLessThanError("Key blob",
+ dwBlobLen, sizeof(PUBLICKEYSTRUC) + sizeof(DSSPUBKEY) + 3 * keyLen + 0x14 + sizeof(DSSSEED),
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2246,24 +2115,16 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is P node */
cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
ret = xmlSecBnBlobSetNodeValue(blob, keyLen, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2272,12 +2133,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Q node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2287,12 +2144,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBnBlobSetNodeValue(blob, len, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2301,12 +2154,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is G node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2316,12 +2165,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBnBlobSetNodeValue(blob, len, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2332,12 +2177,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Y node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2347,12 +2188,8 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecBnBlobSetNodeValue(blob, len, cur, xmlSecBnBase64, 1, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecBnBlobSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecBnBlobSetNodeValue(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -2376,38 +2213,30 @@ xmlSecMSCryptoKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xml
xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), xmlSecKeyDataTypeUnknown);
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataDsaId), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
hProv = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(hProv == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecKeyDataGetName(data));
return(-1);
}
dwKeySpec = AT_SIGNATURE;
dwSize = ((sizeBits << 16) | CRYPT_EXPORTABLE);
if (!CryptGenKey(hProv, CALG_DSS_SIGN, dwSize, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CryptGenKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGenKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
ret = xmlSecMSCryptoKeyDataAdoptKey(data, hProv, TRUE, hKey, dwKeySpec,
xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
hProv = 0;
@@ -2555,10 +2384,15 @@ xmlSecMSCryptoKeyDataGost2001GetKlass(void) {
static int
xmlSecMSCryptoKeyDataGost2001Initialize(xmlSecKeyDataPtr data) {
xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2001Id), xmlSecKeyDataTypeUnknown);
- xmlSecMSCryptoKeyDataInitialize(data);
+ ret = xmlSecMSCryptoKeyDataInitialize(data);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataInitialize", NULL);
+ return(-1);
+ }
ctx = xmlSecMSCryptoKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
@@ -2612,4 +2446,318 @@ xmlSecMSCryptoKeyDataGost2001DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
xmlSecMSCryptoKeyDataGost2001GetSize(data));
}
-#endif /* XMLSEC_NO_GOST*/
+#endif /* XMLSEC_NO_GOST */
+
+
+#ifndef XMLSEC_NO_GOST2012
+
+/**************************************************************************
+ *
+ * GOST2012 256 xml key representation processing.
+ *
+ *************************************************************************/
+static int xmlSecMSCryptoKeyDataGost2012_256Initialize(xmlSecKeyDataPtr data);
+static int xmlSecMSCryptoKeyDataGost2012_256Duplicate(xmlSecKeyDataPtr dst,
+ xmlSecKeyDataPtr src);
+static void xmlSecMSCryptoKeyDataGost2012_256Finalize(xmlSecKeyDataPtr data);
+static int xmlSecMSCryptoKeyDataGost2012_256XmlRead (xmlSecKeyDataId id,
+ xmlSecKeyPtr key,
+ xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
+static int xmlSecMSCryptoKeyDataGost2012_256XmlWrite(xmlSecKeyDataId id,
+ xmlSecKeyPtr key,
+ xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
+static int xmlSecMSCryptoKeyDataGost2012_256Generate(xmlSecKeyDataPtr data,
+ xmlSecSize sizeBits,
+ xmlSecKeyDataType type);
+
+static xmlSecKeyDataType xmlSecMSCryptoKeyDataGost2012_256GetType(xmlSecKeyDataPtr data);
+static xmlSecSize xmlSecMSCryptoKeyDataGost2012_256GetSize(xmlSecKeyDataPtr data);
+static void xmlSecMSCryptoKeyDataGost2012_256DebugDump(xmlSecKeyDataPtr data,
+ FILE* output);
+static void xmlSecMSCryptoKeyDataGost2012_256DebugXmlDump(xmlSecKeyDataPtr data,
+ FILE* output);
+
+static xmlSecKeyDataKlass xmlSecMSCryptoKeyDataGost2012_256Klass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCryptoKeyDataSize,
+
+ /* data */
+ xmlSecNameGostR3410_2012_256KeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefGostR3410_2012_256KeyValue, /* const xmlChar* href; */
+ xmlSecNodeGostR3410_2012_256KeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCryptoKeyDataGost2012_256Initialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCryptoKeyDataGost2012_256Duplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCryptoKeyDataGost2012_256Finalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecMSCryptoKeyDataGost2001Generate,*/ /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCryptoKeyDataGost2012_256GetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCryptoKeyDataGost2012_256GetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCryptoKeyDataGost2012_256DebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCryptoKeyDataGost2012_256DebugXmlDump,/* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/* Ordered list of providers to search for algorithm implementation using
+ * xmlSecMSCryptoFindProvider() function
+ *
+ * MUST END with { NULL, 0 } !!!
+ */
+static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Gost2012_256[] = {
+ { CRYPTOPRO_CSP_256, PROV_GOST_2012_256 },
+ { NULL, 0 }
+};
+
+/**
+ * xmlSecMSCryptoKeyDataGost2001GetKlass:
+ *
+ * The GOST2012_256 key data klass.
+ *
+ * Returns: pointer to GOST2012_256 key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCryptoKeyDataGost2012_256GetKlass(void) {
+ return(&xmlSecMSCryptoKeyDataGost2012_256Klass);
+}
+
+
+static int
+xmlSecMSCryptoKeyDataGost2012_256Initialize(xmlSecKeyDataPtr data) {
+ xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_256Id), xmlSecKeyDataTypeUnknown);
+
+ ret = xmlSecMSCryptoKeyDataInitialize(data);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataInitialize", NULL);
+ return(-1);
+ }
+
+ ctx = xmlSecMSCryptoKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ ctx->providers = xmlSecMSCryptoProviderInfo_Gost2012_256;
+ return(0);
+}
+
+static int
+xmlSecMSCryptoKeyDataGost2012_256Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCryptoKeyDataGost2012_256Id), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCryptoKeyDataGost2012_256Id), -1);
+
+ return(xmlSecMSCryptoKeyDataDuplicate(dst, src));
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_256Finalize(xmlSecKeyDataPtr data) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_256Id));
+
+ xmlSecMSCryptoKeyDataFinalize(data);
+}
+
+static xmlSecKeyDataType
+xmlSecMSCryptoKeyDataGost2012_256GetType(xmlSecKeyDataPtr data) {
+ return(xmlSecMSCryptoKeyDataGetType(data));
+}
+
+static xmlSecSize
+xmlSecMSCryptoKeyDataGost2012_256GetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_256Id), 0);
+
+ return xmlSecMSCryptoKeyDataGetSize(data);
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_256DebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_256Id));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== dsa key: size = %d\n",
+ xmlSecMSCryptoKeyDataGost2012_256GetSize(data));
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_256DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_256Id));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<GOST2012_256KeyValue size=\"%d\" />\n",
+ xmlSecMSCryptoKeyDataGost2012_256GetSize(data));
+}
+
+
+/**************************************************************************
+ *
+ * GOST2012 512 xml key representation processing.
+ *
+ *************************************************************************/
+static int xmlSecMSCryptoKeyDataGost2012_512Initialize(xmlSecKeyDataPtr data);
+static int xmlSecMSCryptoKeyDataGost2012_512Duplicate(xmlSecKeyDataPtr dst,
+ xmlSecKeyDataPtr src);
+static void xmlSecMSCryptoKeyDataGost2012_512Finalize(xmlSecKeyDataPtr data);
+static int xmlSecMSCryptoKeyDataGost2012_512XmlRead (xmlSecKeyDataId id,
+ xmlSecKeyPtr key,
+ xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
+static int xmlSecMSCryptoKeyDataGost2012_512XmlWrite(xmlSecKeyDataId id,
+ xmlSecKeyPtr key,
+ xmlNodePtr node,
+ xmlSecKeyInfoCtxPtr keyInfoCtx);
+static int xmlSecMSCryptoKeyDataGost2012_512Generate(xmlSecKeyDataPtr data,
+ xmlSecSize sizeBits,
+ xmlSecKeyDataType type);
+
+static xmlSecKeyDataType xmlSecMSCryptoKeyDataGost2012_512GetType(xmlSecKeyDataPtr data);
+static xmlSecSize xmlSecMSCryptoKeyDataGost2012_512GetSize(xmlSecKeyDataPtr data);
+static void xmlSecMSCryptoKeyDataGost2012_512DebugDump(xmlSecKeyDataPtr data,
+ FILE* output);
+static void xmlSecMSCryptoKeyDataGost2012_512DebugXmlDump(xmlSecKeyDataPtr data,
+ FILE* output);
+
+static xmlSecKeyDataKlass xmlSecMSCryptoKeyDataGost2012_512Klass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecMSCryptoKeyDataSize,
+
+ /* data */
+ xmlSecNameGostR3410_2012_512KeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefGostR3410_2012_512KeyValue, /* const xmlChar* href; */
+ xmlSecNodeGostR3410_2012_512KeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecMSCryptoKeyDataGost2012_512Initialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecMSCryptoKeyDataGost2012_512Duplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecMSCryptoKeyDataGost2012_512Finalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecMSCryptoKeyDataGost2001Generate,*/ /* xmlSecKeyDataGenerateMethod generate; */
+
+ /* get info */
+ xmlSecMSCryptoKeyDataGost2012_512GetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecMSCryptoKeyDataGost2012_512GetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+
+ /* read/write */
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecMSCryptoKeyDataGost2012_512DebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecMSCryptoKeyDataGost2012_512DebugXmlDump,/* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/* Ordered list of providers to search for algorithm implementation using
+ * xmlSecMSCryptoFindProvider() function
+ *
+ * MUST END with { NULL, 0 } !!!
+ */
+static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Gost2012_512[] = {
+ { CRYPTOPRO_CSP_512, PROV_GOST_2012_512 },
+ { NULL, 0 }
+};
+
+/**
+ * xmlSecMSCryptoKeyDataGost2001GetKlass:
+ *
+ * The GOST2012_512 key data klass.
+ *
+ * Returns: pointer to GOST2012_512 key data klass.
+ */
+xmlSecKeyDataId
+xmlSecMSCryptoKeyDataGost2012_512GetKlass(void) {
+ return(&xmlSecMSCryptoKeyDataGost2012_512Klass);
+}
+
+
+static int
+xmlSecMSCryptoKeyDataGost2012_512Initialize(xmlSecKeyDataPtr data) {
+ xmlSecMSCryptoKeyDataCtxPtr ctx;
+ int ret;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_512Id), xmlSecKeyDataTypeUnknown);
+
+ ret = xmlSecMSCryptoKeyDataInitialize(data);
+ if(ret != 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataInitialize", NULL);
+ return(-1);
+ }
+
+ ctx = xmlSecMSCryptoKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+
+ ctx->providers = xmlSecMSCryptoProviderInfo_Gost2012_512;
+ return(0);
+}
+
+static int
+xmlSecMSCryptoKeyDataGost2012_512Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecMSCryptoKeyDataGost2012_512Id), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecMSCryptoKeyDataGost2012_512Id), -1);
+
+ return(xmlSecMSCryptoKeyDataDuplicate(dst, src));
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_512Finalize(xmlSecKeyDataPtr data) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_512Id));
+
+ xmlSecMSCryptoKeyDataFinalize(data);
+}
+
+static xmlSecKeyDataType
+xmlSecMSCryptoKeyDataGost2012_512GetType(xmlSecKeyDataPtr data) {
+ return(xmlSecMSCryptoKeyDataGetType(data));
+}
+
+static xmlSecSize
+xmlSecMSCryptoKeyDataGost2012_512GetSize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_512Id), 0);
+
+ return xmlSecMSCryptoKeyDataGetSize(data);
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_512DebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_512Id));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== dsa key: size = %d\n",
+ xmlSecMSCryptoKeyDataGost2012_512GetSize(data));
+}
+
+static void
+xmlSecMSCryptoKeyDataGost2012_512DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataGost2012_512Id));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<GOST2012_512KeyValue size=\"%d\" />\n",
+ xmlSecMSCryptoKeyDataGost2012_512GetSize(data));
+}
+
+#endif /* XMLSEC_NO_GOST2012 */
diff --git a/src/mscrypto/ciphers.c b/src/mscrypto/ciphers.c
index 2ac3da03..f4e8c4f8 100644
--- a/src/mscrypto/ciphers.c
+++ b/src/mscrypto/ciphers.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -72,11 +80,7 @@ xmlSecMSCryptoBlockCipherCtxInit(xmlSecMSCryptoBlockCipherCtxPtr ctx,
/* iv len == block len */
dwBlockLenLen = sizeof(DWORD);
if (!CryptGetKeyParam(ctx->cryptKey, KP_BLOCKLEN, (BYTE *)&dwBlockLen, &dwBlockLenLen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptGetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGetKeyParam", cipherName);
return(-1);
}
@@ -84,65 +88,48 @@ xmlSecMSCryptoBlockCipherCtxInit(xmlSecMSCryptoBlockCipherCtxPtr ctx,
xmlSecAssert2(blockLen > 0, -1);
if(encrypt) {
unsigned char* iv;
- size_t outSize;
+ xmlSecSize outSize;
/* allocate space for IV */
outSize = xmlSecBufferGetSize(out);
ret = xmlSecBufferSetSize(out, outSize + blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + blockLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + blockLen);
return(-1);
}
iv = xmlSecBufferGetData(out) + outSize;
/* generate and use random iv */
if(!CryptGenRandom(ctx->cryptProvider, blockLen, iv)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptGenRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "len=%d", blockLen);
+ xmlSecMSCryptoError2("CryptGenRandom", cipherName,
+ "len=%d", blockLen);
return(-1);
}
if(!CryptSetKeyParam(ctx->cryptKey, KP_IV, iv, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyParam", cipherName);
return(-1);
}
} else {
/* if we don't have enough data, exit and hope that
* we'll have iv next time */
- if(xmlSecBufferGetSize(in) < (size_t)blockLen) {
+ if(xmlSecBufferGetSize(in) < XMLSEC_SIZE_BAD_CAST(blockLen)) {
return(0);
}
xmlSecAssert2(xmlSecBufferGetData(in) != NULL, -1);
/* set iv */
if (!CryptSetKeyParam(ctx->cryptKey, KP_IV, xmlSecBufferGetData(in), 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyParam", cipherName);
return(-1);
}
/* and remove from input */
ret = xmlSecBufferRemoveHead(in, blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blockLen);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", blockLen);
return(-1);
}
@@ -158,7 +145,7 @@ xmlSecMSCryptoBlockCipherCtxUpdate(xmlSecMSCryptoBlockCipherCtxPtr ctx,
int encrypt,
const xmlChar* cipherName,
xmlSecTransformCtxPtr transformCtx) {
- size_t inSize, inBlocks, outSize;
+ xmlSecSize inSize, inBlocks, outSize;
int blockLen;
unsigned char* outBuf;
unsigned char* inBuf;
@@ -173,11 +160,7 @@ xmlSecMSCryptoBlockCipherCtxUpdate(xmlSecMSCryptoBlockCipherCtxPtr ctx,
dwBlockLenLen = sizeof(DWORD);
if (!CryptGetKeyParam(ctx->cryptKey, KP_BLOCKLEN, (BYTE *)&dwBlockLen, &dwBlockLenLen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyParam", cipherName);
return(-1);
}
blockLen = dwBlockLen / 8;
@@ -186,27 +169,24 @@ xmlSecMSCryptoBlockCipherCtxUpdate(xmlSecMSCryptoBlockCipherCtxPtr ctx,
inSize = xmlSecBufferGetSize(in);
outSize = xmlSecBufferGetSize(out);
- if(inSize < (size_t)blockLen) {
+ if(inSize < XMLSEC_SIZE_BAD_CAST(blockLen)) {
return(0);
}
if(encrypt) {
- inBlocks = inSize / ((size_t)blockLen);
+ inBlocks = inSize / XMLSEC_SIZE_BAD_CAST(blockLen);
} else {
/* we want to have the last block in the input buffer
* for padding check */
- inBlocks = (inSize - 1) / ((size_t)blockLen);
+ inBlocks = (inSize - 1) / XMLSEC_SIZE_BAD_CAST(blockLen);
}
- inSize = inBlocks * ((size_t)blockLen);
+ inSize = inBlocks * XMLSEC_SIZE_BAD_CAST(blockLen);
/* we write out the input size plus may be one block */
ret = xmlSecBufferSetMaxSize(out, outSize + inSize + blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + inSize + blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + inSize + blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -217,52 +197,35 @@ xmlSecMSCryptoBlockCipherCtxUpdate(xmlSecMSCryptoBlockCipherCtxPtr ctx,
dwCLen = inSize;
if(encrypt) {
if(!CryptEncrypt(ctx->cryptKey, 0, FALSE, 0, outBuf, &dwCLen, inSize + blockLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt", cipherName);
return(-1);
}
} else {
if (!CryptDecrypt(ctx->cryptKey, 0, FALSE, 0, outBuf, &dwCLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptSetKeyDecrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyDecrypt", cipherName);
return(-1);
}
}
/* Check if we really have de/encrypted the numbers of bytes that we requested */
if (dwCLen != inSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptEn/Decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%ld", dwCLen);
+ xmlSecInternalError2("CryptEn/Decrypt", cipherName,
+ "size=%ld", dwCLen);
return(-1);
}
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + inSize);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + inSize);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
return(0);
@@ -275,7 +238,7 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
int encrypt,
const xmlChar* cipherName,
xmlSecTransformCtxPtr transformCtx) {
- size_t inSize, outSize;
+ xmlSecSize inSize, outSize;
int blockLen, outLen = 0;
unsigned char* inBuf;
unsigned char* outBuf;
@@ -290,11 +253,7 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
dwBlockLenLen = sizeof(DWORD);
if (!CryptGetKeyParam(ctx->cryptKey, KP_BLOCKLEN, (BYTE *)&dwBlockLen, &dwBlockLenLen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptGetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGetKeyParam", cipherName);
return(-1);
}
blockLen = dwBlockLen / 8;
@@ -304,40 +263,29 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
outSize = xmlSecBufferGetSize(out);
if(encrypt != 0) {
- xmlSecAssert2(inSize < (size_t)blockLen, -1);
+ xmlSecAssert2(inSize < XMLSEC_SIZE_BAD_CAST(blockLen), -1);
/* create padding */
ret = xmlSecBufferSetMaxSize(in, blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", blockLen);
return(-1);
}
inBuf = xmlSecBufferGetData(in);
/* create random padding */
- if((size_t)blockLen > (inSize + 1)) {
+ if(XMLSEC_SIZE_BAD_CAST(blockLen) > (inSize + 1)) {
if (!CryptGenRandom(ctx->cryptProvider, blockLen - inSize - 1, inBuf + inSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptGenRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGenRandom", cipherName);
return(-1);
}
}
- inBuf[blockLen - 1] = blockLen - inSize;
+ inBuf[blockLen - 1] = (unsigned char)(blockLen - inSize);
inSize = blockLen;
} else {
- if(inSize != (size_t)blockLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data=%d;block=%d", inSize, blockLen);
+ if(inSize != XMLSEC_SIZE_BAD_CAST(blockLen)) {
+ xmlSecInvalidSizeError("Input data", inSize, blockLen, cipherName);
return(-1);
}
inBuf = xmlSecBufferGetData(in);
@@ -346,11 +294,8 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
/* process last block */
ret = xmlSecBufferSetMaxSize(out, outSize + 2 * blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + 2 * blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + 2 * blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -361,43 +306,28 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
/* Set process last block to false, since we handle padding ourselves, and MSCrypto padding
* can be skipped. I hope this will work .... */
if(!CryptEncrypt(ctx->cryptKey, 0, FALSE, 0, outBuf, &dwCLen, inSize + blockLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt", cipherName);
return(-1);
}
} else {
if (!CryptDecrypt(ctx->cryptKey, 0, FALSE, 0, outBuf, &dwCLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptDecrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptDecrypt", cipherName);
return(-1);
}
}
/* Check if we really have de/encrypted the numbers of bytes that we requested */
if (dwCLen != inSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "CryptEn/Decrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%ld", dwCLen);
+ xmlSecInternalError2("CryptEn/Decrypt", cipherName,
+ "size=%ld", dwCLen);
return(-1);
}
if(encrypt == 0) {
/* check padding */
if(inSize < outBuf[blockLen - 1]) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "padding=%d;buffer=%d",
- outBuf[blockLen - 1], inSize);
+ xmlSecInvalidSizeLessThanError("Input data padding",
+ inSize, outBuf[blockLen - 1], cipherName);
return(-1);
}
outLen = inSize - outBuf[blockLen - 1];
@@ -408,22 +338,16 @@ xmlSecMSCryptoBlockCipherCtxFinal(xmlSecMSCryptoBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
@@ -499,7 +423,6 @@ xmlSecMSCryptoBlockCipherCheckId(xmlSecTransformPtr transform) {
static int
xmlSecMSCryptoBlockCipherInitialize(xmlSecTransformPtr transform) {
xmlSecMSCryptoBlockCipherCtxPtr ctx;
- int ret;
xmlSecAssert2(xmlSecMSCryptoBlockCipherCheckId(transform), -1);
xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecMSCryptoBlockCipherSize), -1);
@@ -538,33 +461,21 @@ xmlSecMSCryptoBlockCipherInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_AES */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ctx->cryptProvider = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->cryptProvider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* Create dummy key to be able to import plain session keys */
if (!xmlSecMSCryptoCreatePrivateExponentOneKey(ctx->cryptProvider, &(ctx->pubPrivKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoCreatePrivateExponentOneKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecMSCryptoError("xmlSecMSCryptoCreatePrivateExponentOneKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -643,12 +554,8 @@ xmlSecMSCryptoBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key)
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) < ctx->keySize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=%d;expected=%d",
- xmlSecBufferGetSize(buffer), ctx->keySize);
+ xmlSecInvalidKeyDataSizeError(xmlSecBufferGetSize(buffer), ctx->keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -664,11 +571,8 @@ xmlSecMSCryptoBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key)
TRUE,
&(ctx->cryptKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -706,20 +610,14 @@ xmlSecMSCryptoBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecT
transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoBlockCipherCtxInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoBlockCipherCtxInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
if((ctx->ctxInitialized == 0) && (last != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "not enough data to initialize transform");
+ xmlSecInvalidDataError("not enough data to initialize transform",
+ xmlSecTransformGetName(transform));
return(-1);
}
if(ctx->ctxInitialized != 0) {
@@ -727,11 +625,8 @@ xmlSecMSCryptoBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecT
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoBlockCipherCtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoBlockCipherCtxUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -742,11 +637,8 @@ xmlSecMSCryptoBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecT
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoBlockCipherCtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoBlockCipherCtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -758,11 +650,7 @@ xmlSecMSCryptoBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecT
/* the only way we can get here is if there is no enough data in the input */
xmlSecAssert2(last == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/mscrypto/crypto.c b/src/mscrypto/crypto.c
index aea9685e..72473a4b 100644
--- a/src/mscrypto/crypto.c
+++ b/src/mscrypto/crypto.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -8,6 +9,13 @@
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2005-2006 Cryptocom LTD (http://www.cryptocom.ru).
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for Microsoft Crypto API.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -25,36 +33,14 @@
#include <xmlsec/mscrypto/x509.h>
#include "private.h"
-#if defined(__MINGW32__)
-/* NOTE mingw.org project don't define any xxx_s function and may
- * be never will define them.
- *
- * In this file is save to use non _s function as into destination
- * buffer program code copy empty string and the size of source buffer
- * (XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE=4096) is enough for any
- * encoding. Also program code don't check result of _s functions.
- */
-
-static int
-strcpy_s(char *dest, size_t n, const char *src) {
- strcpy(dest, src);
- return(0);
-}
-
-static int
-wcscpy_s(wchar_t *dest, size_t n, const wchar_t *src) {
- wcscpy(dest, src);
- return(0);
-}
-#endif
#define XMLSEC_CONTAINER_NAME_A "xmlsec-key-container"
#define XMLSEC_CONTAINER_NAME_W L"xmlsec-key-container"
#ifdef UNICODE
#define XMLSEC_CONTAINER_NAME XMLSEC_CONTAINER_NAME_W
-#else
+#else /* UNICODE */
#define XMLSEC_CONTAINER_NAME XMLSEC_CONTAINER_NAME_A
-#endif
+#endif /* UNICODE */
static xmlSecCryptoDLFunctionsPtr gXmlSecMSCryptoFunctions = NULL;
@@ -115,6 +101,11 @@ xmlSecCryptoGetFunctions_mscrypto(void) {
gXmlSecMSCryptoFunctions->keyDataGost2001GetKlass = xmlSecMSCryptoKeyDataGost2001GetKlass;
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ gXmlSecMSCryptoFunctions->keyDataGostR3410_2012_256GetKlass = xmlSecMSCryptoKeyDataGost2012_256GetKlass;
+ gXmlSecMSCryptoFunctions->keyDataGostR3410_2012_512GetKlass = xmlSecMSCryptoKeyDataGost2012_512GetKlass;
+#endif /* XMLSEC_NO_GOST2012*/
+
#ifndef XMLSEC_NO_X509
gXmlSecMSCryptoFunctions->keyDataX509GetKlass = xmlSecMSCryptoKeyDataX509GetKlass;
gXmlSecMSCryptoFunctions->keyDataRawX509CertGetKlass = xmlSecMSCryptoKeyDataRawX509CertGetKlass;
@@ -161,6 +152,14 @@ xmlSecCryptoGetFunctions_mscrypto(void) {
gXmlSecMSCryptoFunctions->transformGost2001GostR3411_94GetKlass = xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass;
#endif /* XMLSEC_NO_GOST */
+#ifndef XMLSEC_NO_GOST2012
+ gXmlSecMSCryptoFunctions->transformGostR3411_2012_256GetKlass = xmlSecMSCryptoTransformGostR3411_2012_256GetKlass;
+ gXmlSecMSCryptoFunctions->transformGostR3410_2012GostR3411_2012_256GetKlass = xmlSecMSCryptoTransformGost2012_256GetKlass;
+
+ gXmlSecMSCryptoFunctions->transformGostR3411_2012_512GetKlass = xmlSecMSCryptoTransformGostR3411_2012_512GetKlass;
+ gXmlSecMSCryptoFunctions->transformGostR3410_2012GostR3411_2012_512GetKlass = xmlSecMSCryptoTransformGost2012_512GetKlass;
+#endif /* XMLSEC_NO_GOST2012 */
+
#ifndef XMLSEC_NO_GOST
gXmlSecMSCryptoFunctions->transformGostR3411_94GetKlass = xmlSecMSCryptoTransformGostR3411_94GetKlass;
#endif /* XMLSEC_NO_GOST */
@@ -273,11 +272,7 @@ int
xmlSecMSCryptoInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
@@ -286,11 +281,7 @@ xmlSecMSCryptoInit (void) {
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_mscrypto()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
return(0);
@@ -330,21 +321,13 @@ xmlSecMSCryptoKeysMngrInit(xmlSecKeysMngrPtr mngr) {
x509Store = xmlSecKeyDataStoreCreate(xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecMSCryptoX509StoreId");
+ xmlSecInternalError("xmlSecKeyDataStoreCreate(xmlSecMSCryptoX509StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptDataStore(mngr, x509Store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptDataStore", NULL);
xmlSecKeyDataStoreDestroy(x509Store);
return(-1);
}
@@ -354,7 +337,6 @@ xmlSecMSCryptoKeysMngrInit(xmlSecKeysMngrPtr mngr) {
return(0);
}
-
static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Random[] = {
{ MS_STRONG_PROV, PROV_RSA_FULL },
{ MS_ENHANCED_PROV, PROV_RSA_FULL },
@@ -372,7 +354,7 @@ static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Random[] = {
* Returns: 0 on success or a negative value otherwise.
*/
int
-xmlSecMSCryptoGenerateRandom(xmlSecBufferPtr buffer, size_t size) {
+xmlSecMSCryptoGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
HCRYPTPROV hProv = 0;
int ret;
@@ -381,29 +363,18 @@ xmlSecMSCryptoGenerateRandom(xmlSecBufferPtr buffer, size_t size) {
ret = xmlSecBufferSetSize(buffer, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", size);
return(-1);
}
hProv = xmlSecMSCryptoFindProvider(xmlSecMSCryptoProviderInfo_Random, NULL, CRYPT_VERIFYCONTEXT, FALSE);
if (0 == hProv) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider", NULL);
return(-1);
}
if (FALSE == CryptGenRandom(hProv, (DWORD)size, xmlSecBufferGetData(buffer))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGenRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGenRandom", NULL);
CryptReleaseContext(hProv,0);
return(-1);
}
@@ -412,71 +383,85 @@ xmlSecMSCryptoGenerateRandom(xmlSecBufferPtr buffer, size_t size) {
return(0);
}
-#define XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE 4096
-
/**
- * xmlSecMSCryptoErrorsDefaultCallback:
- * @file: the error location file name (__FILE__ macro).
- * @line: the error location line number (__LINE__ macro).
- * @func: the error location function name (__FUNCTION__ macro).
- * @errorObject: the error specific error object
- * @errorSubject: the error specific error subject.
- * @reason: the error code.
- * @msg: the additional error message.
+ * xmlSecMSCryptoGetErrorMessage:
+ * @dwError: the error code.
+ * @out: the output buffer.
+ * $outSize: the output buffer size.
*
- * The default errors reporting callback function.
+ * Returns the system error message for the give error code.
*/
void
-xmlSecMSCryptoErrorsDefaultCallback(const char* file, int line, const char* func,
- const char* errorObject, const char* errorSubject,
- int reason, const char* msg) {
- DWORD dwError;
- TCHAR errorT[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE];
- WCHAR errorW[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE];
- CHAR errorUTF8[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE];
- xmlChar buf[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE];
- DWORD rc;
- int ret;
+xmlSecMSCryptoGetErrorMessage(DWORD dwError, xmlChar * out, xmlSecSize outSize) {
+ LPTSTR errorText = NULL;
+ DWORD ret;
+#ifndef UNICODE
+ WCHAR errorTextW[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE];
+#endif /* UNICODE */
- dwError = GetLastError();
- rc = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
- NULL,
- dwError,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
- errorT,
- XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE,
- NULL);
-
-#ifdef UNICODE
- if(rc <= 0) {
- wcscpy_s(errorT, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, L"");
+ xmlSecAssert(out != NULL);
+ xmlSecAssert(outSize > 0);
+
+ /* Use system message tables to retrieve error text, allocate buffer on local
+ heap for error text, don't use any inserts/parameters */
+ ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
+ | FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ dwError,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+ (LPTSTR)&errorText,
+ 0,
+ NULL);
+ if((ret <= 0) || (errorText == NULL)) {
+ out[0] = '\0';
+ goto done;
}
- ret = WideCharToMultiByte(CP_UTF8, 0, errorT, -1, errorUTF8, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, NULL, NULL);
+
+#ifdef UNICODE
+ ret = WideCharToMultiByte(CP_UTF8, 0, errorText, -1, (LPSTR)out, outSize, NULL, NULL);
if(ret <= 0) {
- strcpy_s(errorUTF8, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, "");
+ out[0] = '\0';
+ goto done;
}
#else /* UNICODE */
- if(rc <= 0) {
- strcpy_s(errorT, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, "");
- }
- ret = MultiByteToWideChar(CP_ACP, 0, errorT, -1, errorW, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE);
+ ret = MultiByteToWideChar(CP_ACP, 0, errorText, -1, errorTextW, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE);
if(ret <= 0) {
- wcscpy_s(errorW, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, L"");
+ out[0] = '\0';
+ goto done;
}
- ret = WideCharToMultiByte(CP_UTF8, 0, errorW, -1, errorUTF8, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, NULL, NULL);
+ ret = WideCharToMultiByte(CP_UTF8, 0, errorTextW, -1, (LPSTR)out, outSize, NULL, NULL);
if(ret <= 0) {
- strcpy_s(errorUTF8, XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE, "");
+ out[0] = '\0';
+ goto done;
}
#endif /* UNICODE */
- if((msg != NULL) && ((*msg) != '\0')) {
- xmlSecStrPrintf(buf, sizeof(buf), BAD_CAST "%s;last error=%d (0x%08x);last error msg=%s", msg, dwError, dwError, errorUTF8);
- } else {
- xmlSecStrPrintf(buf, sizeof(buf), BAD_CAST "last error=%d (0x%08x);last error msg=%s", dwError, dwError, errorUTF8);
+done:
+ if(errorText != NULL) {
+ LocalFree(errorText);
}
- xmlSecErrorsDefaultCallback(file, line, func,
- errorObject, errorSubject,
- reason, (char*)buf);
+ return;
+}
+
+
+/**
+ * xmlSecMSCryptoErrorsDefaultCallback:
+ * @file: the error location file name (__FILE__ macro).
+ * @line: the error location line number (__LINE__ macro).
+ * @func: the error location function name (__FUNCTION__ macro).
+ * @errorObject: the error specific error object
+ * @errorSubject: the error specific error subject.
+ * @reason: the error code.
+ * @msg: the additional error message.
+ *
+ * The default errors reporting callback function. Just a pass through to the default callback.
+ */
+void
+xmlSecMSCryptoErrorsDefaultCallback(const char* file, int line, const char* func,
+ const char* errorObject, const char* errorSubject,
+ int reason, const char* msg) {
+ xmlSecErrorsDefaultCallback(file, line, func, errorObject, errorSubject, reason, msg);
}
/**
@@ -489,39 +474,7 @@ xmlSecMSCryptoErrorsDefaultCallback(const char* file, int line, const char* func
*/
LPWSTR
xmlSecMSCryptoConvertUtf8ToUnicode(const xmlChar* str) {
- LPWSTR res = NULL;
- int len;
- int ret;
-
- xmlSecAssert2(str != NULL, NULL);
-
- /* call MultiByteToWideChar first to get the buffer size */
- ret = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
- if(ret <= 0) {
- return(NULL);
- }
- len = ret + 1;
-
- /* allocate buffer */
- res = (LPWSTR)xmlMalloc(sizeof(WCHAR) * len);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(WCHAR) * len);
- return(NULL);
- }
-
- /* convert */
- ret = MultiByteToWideChar(CP_UTF8, 0, str, -1, res, len);
- if(ret <= 0) {
- xmlFree(res);
- return(NULL);
- }
-
- /* done */
- return(res);
+ return(xmlSecWin32ConvertUtf8ToUnicode(str));
}
/**
@@ -532,41 +485,9 @@ xmlSecMSCryptoConvertUtf8ToUnicode(const xmlChar* str) {
*
* Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
*/
-xmlChar*
+xmlChar*
xmlSecMSCryptoConvertUnicodeToUtf8(LPCWSTR str) {
- xmlChar * res = NULL;
- int len;
- int ret;
-
- xmlSecAssert2(str != NULL, NULL);
-
- /* call WideCharToMultiByte first to get the buffer size */
- ret = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL);
- if(ret <= 0) {
- return(NULL);
- }
- len = ret + 1;
-
- /* allocate buffer */
- res = (xmlChar*)xmlMalloc(sizeof(xmlChar) * len);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(xmlChar) * len);
- return(NULL);
- }
-
- /* convert */
- ret = WideCharToMultiByte(CP_UTF8, 0, str, -1, res, len, NULL, NULL);
- if(ret <= 0) {
- xmlFree(res);
- return(NULL);
- }
-
- /* done */
- return(res);
+ return(xmlSecWin32ConvertUnicodeToUtf8(str));
}
/**
@@ -579,39 +500,7 @@ xmlSecMSCryptoConvertUnicodeToUtf8(LPCWSTR str) {
*/
LPWSTR
xmlSecMSCryptoConvertLocaleToUnicode(const char* str) {
- LPWSTR res = NULL;
- int len;
- int ret;
-
- xmlSecAssert2(str != NULL, NULL);
-
- /* call MultiByteToWideChar first to get the buffer size */
- ret = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
- if(ret <= 0) {
- return(NULL);
- }
- len = ret;
-
- /* allocate buffer */
- res = (LPWSTR)xmlMalloc(sizeof(WCHAR) * len);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(NULL);
- }
-
- /* convert */
- ret = MultiByteToWideChar(CP_ACP, 0, str, -1, res, len);
- if(ret <= 0) {
- xmlFree(res);
- return(NULL);
- }
-
- /* done */
- return(res);
+ return(xmlSecWin32ConvertLocaleToUnicode(str));
}
/**
@@ -624,49 +513,7 @@ xmlSecMSCryptoConvertLocaleToUnicode(const char* str) {
*/
xmlChar*
xmlSecMSCryptoConvertLocaleToUtf8(const char * str) {
- LPWSTR strW = NULL;
- xmlChar * res = NULL;
- int len;
- int ret;
-
- xmlSecAssert2(str != NULL, NULL);
-
- strW = xmlSecMSCryptoConvertLocaleToUnicode(str);
- if(strW == NULL) {
- return(NULL);
- }
-
- /* call WideCharToMultiByte first to get the buffer size */
- ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, NULL, 0, NULL, NULL);
- if(ret <= 0) {
- xmlFree(strW);
- return(NULL);
- }
- len = ret + 1;
-
- /* allocate buffer */
- res = (xmlChar*)xmlMalloc(sizeof(xmlChar) * len);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(xmlChar) * len);
- xmlFree(strW);
- return(NULL);
- }
-
- /* convert */
- ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, res, len, NULL, NULL);
- if(ret <= 0) {
- xmlFree(strW);
- xmlFree(res);
- return(NULL);
- }
-
- /* done */
- xmlFree(strW);
- return(res);
+ return(xmlSecWin32ConvertLocaleToUtf8(str));
}
/**
@@ -679,49 +526,7 @@ xmlSecMSCryptoConvertLocaleToUtf8(const char * str) {
*/
char *
xmlSecMSCryptoConvertUtf8ToLocale(const xmlChar* str) {
- LPWSTR strW = NULL;
- char * res = NULL;
- int len;
- int ret;
-
- xmlSecAssert2(str != NULL, NULL);
-
- strW = xmlSecMSCryptoConvertUtf8ToUnicode(str);
- if(strW == NULL) {
- return(NULL);
- }
-
- /* call WideCharToMultiByte first to get the buffer size */
- ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, NULL, 0, NULL, NULL);
- if(ret <= 0) {
- xmlFree(strW);
- return(NULL);
- }
- len = ret + 1;
-
- /* allocate buffer */
- res = (char*)xmlMalloc(sizeof(char) * len);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(xmlChar) * len);
- xmlFree(strW);
- return(NULL);
- }
-
- /* convert */
- ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, res, len, NULL, NULL);
- if(ret <= 0) {
- xmlFree(strW);
- xmlFree(res);
- return(NULL);
- }
-
- /* done */
- xmlFree(strW);
- return(res);
+ return(xmlSecWin32ConvertUtf8ToLocale(str));
}
/**
@@ -734,11 +539,7 @@ xmlSecMSCryptoConvertUtf8ToLocale(const xmlChar* str) {
*/
xmlChar*
xmlSecMSCryptoConvertTstrToUtf8(LPCTSTR str) {
-#ifdef UNICODE
- return xmlSecMSCryptoConvertUnicodeToUtf8(str);
-#else /* UNICODE */
- return xmlSecMSCryptoConvertLocaleToUtf8(str);
-#endif /* UNICODE */
+ return(xmlSecWin32ConvertTstrToUtf8(str));
}
/**
@@ -751,11 +552,7 @@ xmlSecMSCryptoConvertTstrToUtf8(LPCTSTR str) {
*/
LPTSTR
xmlSecMSCryptoConvertUtf8ToTstr(const xmlChar* str) {
-#ifdef UNICODE
- return xmlSecMSCryptoConvertUtf8ToUnicode(str);
-#else /* UNICODE */
- return xmlSecMSCryptoConvertUtf8ToLocale(str);
-#endif /* UNICODE */
+ return(xmlSecWin32ConvertUtf8ToTstr(str));
}
/********************************************************************
diff --git a/src/mscrypto/csp_calg.h b/src/mscrypto/csp_calg.h
index 984fe347..80fd7cab 100644
--- a/src/mscrypto/csp_calg.h
+++ b/src/mscrypto/csp_calg.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -20,6 +20,9 @@
#define ALG_SID_GR3411 30
#define ALG_SID_G28147 30
+#define ALG_SID_GR3411_2012_256 33
+#define ALG_SID_GR3411_2012_512 34
+
#define ALG_SID_GR3410 30
#define ALG_SID_DH_EX_SF 30
#define ALG_SID_DH_EX_EPHEM 31
@@ -52,6 +55,9 @@
#define CALG_MAGPRO_HASH_28147_89 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAGPRO_28147_89)
+#define CALG_GR3411_2012_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_GR3411_2012_256)
+#define CALG_GR3411_2012_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_GR3411_2012_512)
+
#define CALG_MAGPRO_ENCR_28147_89 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_G28147)
#define CALG_GR3410 (ALG_CLASS_SIGNATURE | ALG_TYPE_GR3410 | ALG_SID_GR3410)
@@ -82,12 +88,22 @@
#endif
#define PROV_CRYPTOPRO_GOST 75
-#define CRYPTOPRO_CSP_A "CryptoPro CSP"
-#define CRYPTOPRO_CSP_W L"CryptoPro CSP"
+#define PROV_GOST_2012_256 80
+#define PROV_GOST_2012_512 81
+#define CRYPTOPRO_CSP_A "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
+#define CRYPTOPRO_CSP_W L"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"
+#define CRYPTOPRO_CSP_256_A "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
+#define CRYPTOPRO_CSP_256_W L"Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
+#define CRYPTOPRO_CSP_512_A "Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider"
+#define CRYPTOPRO_CSP_512_W L"Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider"
#ifdef UNICODE
#define CRYPTOPRO_CSP CRYPTOPRO_CSP_W
+#define CRYPTOPRO_CSP_256 CRYPTOPRO_CSP_256_W
+#define CRYPTOPRO_CSP_512 CRYPTOPRO_CSP_512_W
#else
#define CRYPTOPRO_CSP CRYPTOPRO_CSP_A
+#define CRYPTOPRO_CSP_256 CRYPTOPRO_CSP_256_A
+#define CRYPTOPRO_CSP_512 CRYPTOPRO_CSP_512_A
#endif
/*! @} */
diff --git a/src/mscrypto/csp_oid.h b/src/mscrypto/csp_oid.h
index e5636741..a42bd0f0 100644
--- a/src/mscrypto/csp_oid.h
+++ b/src/mscrypto/csp_oid.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -108,6 +108,16 @@
#define szOID_CP_PARAM_PK_R3410_2001_E0 "1.2.643.2.2.36.0"
#define szOID_CP_PARAM_PK_R3410_2001_E1 "1.2.643.2.2.36.1"
+/* CRYPT_PUBKEY_ALG_OID_GROUP_ID */
+#define szOID_CP_GOST_R3410_12_256 "1.2.643.7.1.1.1.1"
+#define szOID_CP_GOST_R3410_12_512 "1.2.643.7.1.1.1.2"
+#define szOID_CP_DH_12_256 "1.2.643.7.1.1.6.1"
+#define szOID_CP_DH_12_512 "1.2.643.7.1.1.6.2"
+
+/* CRYPT_SIGN_ALG_OID_GROUP_ID */
+#define szOID_CP_GOST_R3411_12_256_R3410 "1.2.643.7.1.1.3.2"
+#define szOID_CP_GOST_R3411_12_512_R3410 "1.2.643.7.1.1.3.3"
+
/*! @} */
diff --git a/src/mscrypto/digests.c b/src/mscrypto/digests.c
index 9394afdc..98251d1b 100644
--- a/src/mscrypto/digests.c
+++ b/src/mscrypto/digests.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (c) 2005-2006 Cryptocom LTD (http://www.cryptocom.ru).
*/
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -33,7 +41,7 @@ struct _xmlSecMSCryptoDigestCtx {
const xmlSecMSCryptoProviderInfo * providers;
HCRYPTHASH mscHash;
unsigned char dgst[MSCRYPTO_MAX_HASH_SIZE];
- size_t dgstSize; /* dgst size in bytes */
+ xmlSecSize dgstSize; /* dgst size in bytes */
};
/******************************************************************************
@@ -94,7 +102,19 @@ static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Gost[] = {
{ CRYPTOPRO_CSP, PROV_CRYPTOPRO_GOST },
{ NULL, 0 }
};
-#endif /*ndef XMLSEC_NO_GOST*/
+#endif /* XMLSEC_NO_GOST*/
+
+#ifndef XMLSEC_NO_GOST2012
+static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Gost2012_256[] = {
+ { CRYPTOPRO_CSP_256, PROV_GOST_2012_256 },
+ { NULL, 0 }
+};
+
+static xmlSecMSCryptoProviderInfo xmlSecMSCryptoProviderInfo_Gost2012_512[] = {
+ { CRYPTOPRO_CSP_512, PROV_GOST_2012_512 },
+ { NULL, 0 }
+};
+#endif /* XMLSEC_NO_GOST2012*/
static int
xmlSecMSCryptoDigestCheckId(xmlSecTransformPtr transform) {
@@ -135,6 +155,15 @@ xmlSecMSCryptoDigestCheckId(xmlSecTransformPtr transform) {
}
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGostR3411_2012_256Id)) {
+ return(1);
+ }
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGostR3411_2012_512Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_GOST2012*/
+
return(0);
}
@@ -193,22 +222,26 @@ xmlSecMSCryptoDigestInitialize(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGostR3411_2012_256Id)) {
+ ctx->alg_id = CALG_GR3411_2012_256;
+ ctx->providers = xmlSecMSCryptoProviderInfo_Gost2012_256;
+ } else
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGostR3411_2012_512Id)) {
+ ctx->alg_id = CALG_GR3411_2012_512;
+ ctx->providers = xmlSecMSCryptoProviderInfo_Gost2012_512;
+ } else
+#endif /* XMLSEC_NO_GOST2012*/
+
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ctx->provider = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->provider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -253,22 +286,15 @@ xmlSecMSCryptoDigestVerify(xmlSecTransformPtr transform,
xmlSecAssert2(ctx->dgstSize > 0, -1);
if(dataSize != ctx->dgstSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data_size=%d;dgst_size=%d",
- dataSize, ctx->dgstSize);
+ xmlSecInvalidSizeError("Digest", dataSize, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
if(memcmp(ctx->dgst, data, ctx->dgstSize) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest do not match");
+ xmlSecInvalidDataError("data and digest do not match",
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -307,11 +333,7 @@ xmlSecMSCryptoDigestExecute(xmlSecTransformPtr transform,
&(ctx->mscHash));
if((ret == 0) || (ctx->mscHash == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptCreateHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptCreateHash", xmlSecTransformGetName(transform));
return(-1);
}
@@ -329,21 +351,17 @@ xmlSecMSCryptoDigestExecute(xmlSecTransformPtr transform,
0);
if(ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptHashData",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecMSCryptoError2("CryptHashData",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -354,21 +372,18 @@ xmlSecMSCryptoDigestExecute(xmlSecTransformPtr transform,
retLen = MSCRYPTO_MAX_HASH_SIZE;
ret = CryptGetHashParam(ctx->mscHash,
- HP_HASHVAL,
- ctx->dgst,
- &retLen,
- 0);
-
+ HP_HASHVAL,
+ ctx->dgst,
+ &retLen,
+ 0);
if (ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptGetHashParam(HP_HASHVAL)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", MSCRYPTO_MAX_HASH_SIZE);
+ xmlSecMSCryptoError2("CryptGetHashParam(HP_HASHVAL)",
+ xmlSecTransformGetName(transform),
+ "size=%d", MSCRYPTO_MAX_HASH_SIZE);
return(-1);
}
- ctx->dgstSize = (size_t)retLen;
+ ctx->dgstSize = XMLSEC_SIZE_BAD_CAST(retLen);
xmlSecAssert2(ctx->dgstSize > 0, -1);
@@ -376,11 +391,9 @@ xmlSecMSCryptoDigestExecute(xmlSecTransformPtr transform,
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, ctx->dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ctx->dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->dgstSize);
return(-1);
}
}
@@ -390,11 +403,7 @@ xmlSecMSCryptoDigestExecute(xmlSecTransformPtr transform,
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -664,5 +673,90 @@ xmlSecTransformId
xmlSecMSCryptoTransformGostR3411_94GetKlass(void) {
return(&xmlSecMSCryptoGostR3411_94Klass);
}
+
+/******************************************************************************
+ *
+ * GOSTR3411-2012/256
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCryptoGostR3411_2012_256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCryptoDigestSize, /* size_t objSize */
+
+ xmlSecNameGostR3411_2012_256, /* const xmlChar* name; */
+ xmlSecHrefGostR3411_2012_256, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCryptoDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCryptoDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCryptoDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCryptoDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCryptoTransformGostR3411_2012_256GetKlass:
+ *
+ * GOSTR3411_2012_256 digest transform klass.
+ *
+ * Returns: pointer to GOSTR3411_2012_256 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCryptoTransformGostR3411_2012_256GetKlass(void) {
+ return(&xmlSecMSCryptoGostR3411_2012_256Klass);
+}
+
+
+/******************************************************************************
+ *
+ * GOSTR3411-2012/512
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecMSCryptoGostR3411_2012_512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* size_t klassSize */
+ xmlSecMSCryptoDigestSize, /* size_t objSize */
+
+ xmlSecNameGostR3411_2012_512, /* const xmlChar* name; */
+ xmlSecHrefGostR3411_2012_512, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+ xmlSecMSCryptoDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCryptoDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCryptoDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCryptoDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCryptoTransformGostR3411_2012_512GetKlass:
+ *
+ * GOSTR3411_2012_512 digest transform klass.
+ *
+ * Returns: pointer to GOSTR3411_2012_512 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCryptoTransformGostR3411_2012_512GetKlass(void) {
+ return(&xmlSecMSCryptoGostR3411_2012_512Klass);
+}
#endif /* XMLSEC_NO_GOST*/
diff --git a/src/mscrypto/globals.h b/src/mscrypto/globals.h
index 35cbf242..1916cea3 100644
--- a/src/mscrypto/globals.h
+++ b/src/mscrypto/globals.h
@@ -22,5 +22,62 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
+#include <windows.h>
+#include <xmlsec/xmlsec.h>
+
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+
+#define XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE 4096
+
+void xmlSecMSCryptoGetErrorMessage (DWORD dwError,
+ xmlChar * out,
+ xmlSecSize outSize);
+
+
+/**
+ * xmlSecMSCryptoError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting MSCrypto crypro errors.
+ */
+#define xmlSecMSCryptoError(errorFunction, errorObject) \
+ { \
+ DWORD dwLastError = GetLastError(); \
+ xmlChar errBuf[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE]; \
+ xmlSecMSCryptoGetErrorMessage(dwLastError, errBuf, sizeof(errBuf)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "MSCrypto error: %ld: 0x%08lx: %s", \
+ (long int)dwLastError, (long int)dwLastError, errBuf \
+ ); \
+ }
+
+/**
+ * xmlSecMSCryptoError2:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting MSCrypto crypro errors.
+ */
+#define xmlSecMSCryptoError2(errorFunction, errorObject, msg, param) \
+ { \
+ DWORD dwLastError = GetLastError(); \
+ xmlChar errBuf[XMLSEC_MSCRYPTO_ERROR_MSG_BUFFER_SIZE]; \
+ xmlSecMSCryptoGetErrorMessage(dwLastError, errBuf, sizeof(errBuf)); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ msg "MSCrypto error: %ld: 0x%08lx: %s", \
+ (param), \
+ (long int)dwLastError, (long int)dwLastError, errBuf \
+ ); \
+ }
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/mscrypto/hmac.c b/src/mscrypto/hmac.c
index 36370247..17381439 100644
--- a/src/mscrypto/hmac.c
+++ b/src/mscrypto/hmac.c
@@ -1,20 +1,30 @@
-/**
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * XMLSec library
*
- * HMAC Algorithm support (http://www.w3.org/TR/xmldsig-core/#sec-HMAC):
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ * [HMAC Algorithm support](http://www.w3.org/TR/xmldsig-core/#sec-HMAC):
* The HMAC algorithm (RFC2104 [HMAC]) takes the truncation length in bits
* as a parameter; if the parameter is not specified then all the bits of the
* hash are output. An example of an HMAC SignatureMethod element:
+ *
+ * |[<!-- language="XML" -->
* <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
* <HMACOutputLength>128</HMACOutputLength>
* </SignatureMethod>
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ * |]
*/
+
+
#ifndef XMLSEC_NO_HMAC
#include "globals.h"
@@ -82,7 +92,7 @@ struct _xmlSecMSCryptoHmacCtx {
const xmlSecMSCryptoProviderInfo * providers;
HCRYPTHASH mscHash;
unsigned char dgst[XMLSEC_MSCRYPTO_MAX_HMAC_SIZE];
- size_t dgstSize; /* dgst size in bytes */
+ xmlSecSize dgstSize; /* dgst size in bytes */
int ctxInitialized;
};
@@ -167,8 +177,6 @@ xmlSecMSCryptoHmacCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- return(0);
}
static int
@@ -221,31 +229,21 @@ xmlSecMSCryptoHmacInitialize(xmlSecTransformPtr transform) {
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ctx->provider = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->provider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* Create dummy key to be able to import plain session keys */
if (!xmlSecMSCryptoCreatePrivateExponentOneKey(ctx->provider, &(ctx->pubPrivKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoCreatePrivateExponentOneKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("xmlSecMSCryptoCreatePrivateExponentOneKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -307,23 +305,16 @@ xmlSecMSCryptoHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSec
small value
*/
if((int)ctx->dgstSize < xmlSecMSCryptoHmacGetMinOutputLength()) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "HMAC output length is too small");
- return(-1);
+ xmlSecInvalidNodeContentError(cur, xmlSecTransformGetName(transform),
+ "HMAC output length is too small");
+ return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -375,11 +366,7 @@ xmlSecMSCryptoHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=0");
+ xmlSecInvalidZeroKeyDataSizeError(xmlSecTransformGetName(transform));
return(-1);
}
@@ -400,11 +387,8 @@ xmlSecMSCryptoHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
&(ctx->cryptKey)
) || (ctx->cryptKey == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -415,11 +399,8 @@ xmlSecMSCryptoHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
0,
&(ctx->mscHash));
if((ret == 0) || (ctx->mscHash == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptCreateHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptCreateHash",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -428,11 +409,8 @@ xmlSecMSCryptoHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
hmacInfo.HashAlgid = ctx->alg_id;
ret = CryptSetHashParam(ctx->mscHash, HP_HMAC_INFO, (BYTE*)&hmacInfo, 0);
if(ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptSetHashParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetHashParam",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -464,44 +442,29 @@ xmlSecMSCryptoHmacVerify(xmlSecTransformPtr transform,
/* compare the digest size in bytes */
if(dataSize != ((ctx->dgstSize + 7) / 8)){
- /* NO COMMIT */
- xmlChar* a;
- mask = last_byte_masks[ctx->dgstSize % 8];
- ctx->dgst[dataSize - 1] &= mask;
- a = xmlSecBase64Encode(ctx->dgst, (ctx->dgstSize + 7) / 8, -1);
- fprintf(stderr, "%s\n", a);
- xmlFree(a);
-
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data=%d;dgst=%d",
- dataSize, ((ctx->dgstSize + 7) / 8));
+ xmlSecInvalidSizeError("HMAC digest",
+ dataSize, ((ctx->dgstSize + 7) / 8),
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
- /* we check the last byte separatelly */
+ /* we check the last byte separately */
xmlSecAssert2(dataSize > 0, -1);
mask = last_byte_masks[ctx->dgstSize % 8];
if((ctx->dgst[dataSize - 1] & mask) != (data[dataSize - 1] & mask)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match (last byte)");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match (last byte)");
transform->status = xmlSecTransformStatusFail;
return(0);
}
/* now check the rest of the digest */
if((dataSize > 1) && (memcmp(ctx->dgst, data, dataSize - 1) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match");
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -544,21 +507,17 @@ xmlSecMSCryptoHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
0);
if(ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptHashData",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecMSCryptoError2("CryptHashData",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -576,11 +535,9 @@ xmlSecMSCryptoHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
0);
if (ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptGetHashParam",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("CryptGetHashParam",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
xmlSecAssert2(retLen > 0, -1);
@@ -591,12 +548,9 @@ xmlSecMSCryptoHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
} else if(ctx->dgstSize <= 8 * retLen) {
retLen = ((ctx->dgstSize + 7) / 8); /* we need to truncate result digest */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "result-bits=%d;required-bits=%d",
- 8 * retLen, ctx->dgstSize);
+ xmlSecInvalidSizeLessThanError("HMAC digest (bits)",
+ 8 * retLen, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -604,11 +558,9 @@ xmlSecMSCryptoHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, retLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ctx->dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->dgstSize);
return(-1);
}
}
@@ -618,11 +570,7 @@ xmlSecMSCryptoHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/mscrypto/keysstore.c b/src/mscrypto/keysstore.c
index 8ead554c..afc4b33f 100644
--- a/src/mscrypto/keysstore.c
+++ b/src/mscrypto/keysstore.c
@@ -1,5 +1,17 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for precise wording.
+ *
+ * Copyright (C) 2003 Cordys R&D BV, All rights reserved.
+ * Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
/**
- * XMLSec library
+ * SECTION:keysstore
+ * @Short_description: Keys store implementation for Microsoft Crypto API.
+ * @Stability: Private
*
* MSCrypto keys store that uses Simple Keys Store under the hood. Uses the
* MS Certificate store as a backing store for the finding keys, but the
@@ -7,14 +19,9 @@
* So, if store->findkey is done and the key is not found in the simple
* keys store, the MS Certificate store is looked up.
* Thus, the MS Certificate store can be used to pre-load keys and becomes
- * an alternate source of keys for xmlsec
- *
- * This is free software; see Copyright file in the source
- * distribution for precise wording.
- *
- * Copyright (C) 2003 Cordys R&D BV, All rights reserved.
- * Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ * an alternate source of keys for xmlsec.
*/
+
#include "globals.h"
#include <stdlib.h>
@@ -143,25 +150,18 @@ xmlSecMSCryptoKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecMSCryptoKeysStoreId), -1);
xmlSecAssert2((uri != NULL), -1);
+ UNREFERENCED_PARAMETER(keysMngr);
doc = xmlParseFile(uri);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlParseFile",
- XMLSEC_ERRORS_R_XML_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecXmlError2("xmlParseFile", xmlSecKeyStoreGetName(store),
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
root = xmlDocGetRootElement(doc);
if(!xmlSecCheckNodeName(root, BAD_CAST "Keys", xmlSecNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(root)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=<xmlsec:Keys>");
+ xmlSecInvalidNodeError(root, BAD_CAST "Keys", xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -170,30 +170,23 @@ xmlSecMSCryptoKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeKeyInfo, xmlSecDSigNs)) {
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
}
keyInfoCtx.mode = xmlSecKeyInfoModeRead;
- keyInfoCtx.keysMngr = keysMngr;
+ keyInfoCtx.keysMngr = NULL;
keyInfoCtx.flags = XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND |
XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
keyInfoCtx.keyReq.keyId = xmlSecKeyDataIdUnknown;
@@ -202,11 +195,8 @@ xmlSecMSCryptoKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
ret = xmlSecKeyInfoNodeRead(cur, key, &keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeRead",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
@@ -217,11 +207,8 @@ xmlSecMSCryptoKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
if(xmlSecKeyIsValid(key)) {
ret = xmlSecMSCryptoKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecMSCryptoKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeysStoreAdoptKey",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
@@ -234,11 +221,7 @@ xmlSecMSCryptoKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -282,11 +265,8 @@ xmlSecMSCryptoKeysStoreInitialize(xmlSecKeyStorePtr store) {
*ss = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(*ss == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId)",
+ xmlSecKeyStoreGetName(store));
return(-1);
}
@@ -324,23 +304,18 @@ xmlSecMSCryptoKeysStoreFindCert(xmlSecKeyStorePtr store, const xmlChar* name,
hStoreHandle = CertOpenSystemStore(0, storeName);
if (NULL == hStoreHandle) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertOpenSystemStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "storeName=%s",
- xmlSecErrorsSafeString(storeName));
+ xmlSecMSCryptoError2("CertOpenSystemStore",
+ xmlSecKeyStoreGetName(store),
+ "storeName=%s",
+ xmlSecErrorsSafeString(storeName));
return(NULL);
}
/* convert name to unicode */
- wcName = xmlSecMSCryptoConvertUtf8ToTstr(name);
+ wcName = xmlSecWin32ConvertUtf8ToTstr(name);
if(wcName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecMSCryptoConvertUtf8ToUnicode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "wcName");
+ xmlSecInternalError("xmlSecWin32ConvertUtf8ToTstr(name)",
+ xmlSecKeyStoreGetName(store));
CertCloseStore(hStoreHandle, 0);
return(NULL);
}
@@ -362,7 +337,12 @@ xmlSecMSCryptoKeysStoreFindCert(xmlSecKeyStorePtr store, const xmlChar* name,
PCCERT_CONTEXT pCertCtxIter = NULL;
- while (pCertCtxIter = CertEnumCertificatesInStore(hStoreHandle, pCertCtxIter)) {
+ while (1) {
+ pCertCtxIter = CertEnumCertificatesInStore(hStoreHandle, pCertCtxIter);
+ if(pCertCtxIter == NULL) {
+ break;
+ }
+
if (TRUE != CertGetCertificateContextProperty(pCertCtxIter,
CERT_FRIENDLY_NAME_PROP_ID,
NULL,
@@ -372,11 +352,7 @@ xmlSecMSCryptoKeysStoreFindCert(xmlSecKeyStorePtr store, const xmlChar* name,
pbFriendlyName = xmlMalloc(dwPropSize);
if(pbFriendlyName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(dwPropSize, xmlSecKeyStoreGetName(store));
xmlFree(wcName);
CertCloseStore(hStoreHandle, 0);
return(NULL);
@@ -478,57 +454,37 @@ xmlSecMSCryptoKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
/* set cert in x509 data */
x509Data = xmlSecKeyDataCreate(xmlSecMSCryptoKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
pCertContext2 = CertDuplicateCertificateContext(pCertContext);
if (NULL == pCertContext2) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(x509Data, pCertContext2);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
pCertContext2 = NULL;
pCertContext2 = CertDuplicateCertificateContext(pCertContext);
if (NULL == pCertContext2) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecMSCryptoKeyDataX509AdoptKeyCert(x509Data, pCertContext2);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
pCertContext2 = NULL;
@@ -536,11 +492,7 @@ xmlSecMSCryptoKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
/* set cert in key data */
data = xmlSecMSCryptoCertAdopt(pCertContext, keyReq->keyType);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoCertAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoCertAdopt", NULL);
goto done;
}
pCertContext = NULL;
@@ -548,34 +500,22 @@ xmlSecMSCryptoKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
/* create key and add key data and x509 data to it */
key = xmlSecKeyCreate();
if (key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
ret = xmlSecKeySetValue(key, data);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL;
ret = xmlSecKeyAdoptData(key, x509Data);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
x509Data = NULL;
@@ -583,11 +523,8 @@ xmlSecMSCryptoKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
/* Set the name of the key to the given name */
ret = xmlSecKeySetName(key, name);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeySetName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetName",
+ xmlSecKeyStoreGetName(store));
goto done;
}
diff --git a/src/mscrypto/kt_rsa.c b/src/mscrypto/kt_rsa.c
index 9b4908fa..26f5639c 100644
--- a/src/mscrypto/kt_rsa.c
+++ b/src/mscrypto/kt_rsa.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * RSA Algorithms support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
*/
+/**
+ * SECTION:kt_rsa
+ * @Short_description: RSA Key Transport transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_RSA
@@ -85,9 +90,6 @@ xmlSecMSCryptoRsaPkcs1OaepCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- /* just in case */
- return(0);
}
static int
@@ -106,11 +108,8 @@ xmlSecMSCryptoRsaPkcs1OaepInitialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->oaepParams), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -124,11 +123,7 @@ xmlSecMSCryptoRsaPkcs1OaepInitialize(xmlSecTransformPtr transform) {
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
@@ -194,11 +189,8 @@ xmlSecMSCryptoRsaPkcs1OaepSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key)
ctx->data = xmlSecKeyDataDuplicate(xmlSecKeyGetValue(key));
if(ctx->data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKeyDataDuplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataDuplicate",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -227,11 +219,8 @@ xmlSecMSCryptoRsaPkcs1OaepExecute(xmlSecTransformPtr transform, int last, xmlSec
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
ret = xmlSecMSCryptoRsaPkcs1OaepProcess(transform, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoRsaPkcs1OaepProcess",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoRsaPkcs1OaepProcess",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -239,11 +228,7 @@ xmlSecMSCryptoRsaPkcs1OaepExecute(xmlSecTransformPtr transform, int last, xmlSec
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -262,7 +247,6 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
DWORD dwOutLen;
xmlSecByte * outBuf;
xmlSecByte * inBuf;
- int i;
xmlSecAssert2(xmlSecMSCryptoRsaPkcs1OaepCheckId(transform), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
@@ -286,61 +270,44 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
/* the encoded size is equal to the keys size so we could not
* process more than that */
if((transform->operation == xmlSecTransformOperationEncrypt) && (inSize >= keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected less than %d", inSize, keySize);
+ xmlSecInvalidSizeLessThanError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
} else if((transform->operation == xmlSecTransformOperationDecrypt) && (inSize != keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected %d", inSize, keySize);
+ xmlSecInvalidSizeError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = keySize;
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
if(transform->operation == xmlSecTransformOperationEncrypt) {
if(inSize > outSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "inSize=%d;outSize=%d",
- inSize, outSize);
+ xmlSecInvalidSizeLessThanError("Output data", outSize, inSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(out, xmlSecBufferGetData(in), inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
dwInLen = inSize;
dwBufLen = outSize;
if (0 == (hKey = xmlSecMSCryptoKeyDataGetKey(ctx->data, xmlSecKeyDataTypePublic))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataGetKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataGetKey",
+ xmlSecTransformGetName(transform));
return (-1);
}
@@ -360,22 +327,16 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
oaepParams.cbData = xmlSecBufferGetSize(&(ctx->oaepParams));
if (!CryptSetKeyParam(hKey, KP_OAEP_PARAMS, (const BYTE*)&oaepParams, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyParam",
+ xmlSecTransformGetName(transform));
return (-1);
}
}
/* encrypt */
if (!CryptEncrypt(hKey, 0, TRUE, ctx->dwFlags, outBuf, &dwInLen, dwBufLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt",
+ xmlSecTransformGetName(transform));
return (-1);
}
@@ -393,12 +354,10 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
outBuf = xmlSecBufferGetData(out);
ConvertEndian(inBuf, outBuf, inSize);
- if (0 == (hKey = xmlSecMSCryptoKeyDataGetDecryptKey(ctx->data))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoKeyDataGetKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ hKey = xmlSecMSCryptoKeyDataGetDecryptKey(ctx->data);
+ if (0 == hKey) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataGetKey",
+ xmlSecTransformGetName(transform));
return (-1);
}
@@ -415,22 +374,16 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
oaepParams.cbData = xmlSecBufferGetSize(&(ctx->oaepParams));
if (!CryptSetKeyParam(hKey, KP_OAEP_PARAMS, (const BYTE*)&oaepParams, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSetKeyParam",
+ xmlSecTransformGetName(transform));
return (-1);
}
}
/* decrypt */
if (!CryptDecrypt(hKey, 0, TRUE, ctx->dwFlags, outBuf, &dwOutLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptDecrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptDecrypt",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -439,21 +392,17 @@ xmlSecMSCryptoRsaPkcs1OaepProcess(xmlSecTransformPtr transform, xmlSecTransformC
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -577,11 +526,8 @@ xmlSecMSCryptoRsaOaepNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
if(xmlSecCheckNodeName(cur, xmlSecNodeRsaOAEPparams, xmlSecEncNs)) {
ret = xmlSecBufferBase64NodeContentRead(&(ctx->oaepParams), cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeDigestMethod, xmlSecDSigNs)) {
@@ -590,33 +536,24 @@ xmlSecMSCryptoRsaOaepNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
/* Algorithm attribute is required */
algorithm = xmlGetProp(cur, xmlSecAttrAlgorithm);
if(algorithm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrAlgorithm,
+ xmlSecTransformGetName(transform),
+ "empty");
return(-1);
}
/* for now we support only sha1 */
if(xmlStrcmp(algorithm, xmlSecHrefSha1) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(algorithm),
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "digest algorithm is not supported for rsa/oaep");
+ xmlSecInvalidTransfromError2(transform,
+ "digest algorithm=\"%s\" is not supported for rsa/oaep",
+ xmlSecErrorsSafeString(algorithm));
xmlFree(algorithm);
return(-1);
}
xmlFree(algorithm);
} else {
- /* not found */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ /* node not recognized */
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
diff --git a/src/mscrypto/kw_aes.c b/src/mscrypto/kw_aes.c
index 71ac447d..369f6ba6 100644
--- a/src/mscrypto/kw_aes.c
+++ b/src/mscrypto/kw_aes.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -151,44 +159,29 @@ xmlSecMSCryptoKWAesInitialize(xmlSecTransformPtr transform) {
ctx->providers = xmlSecMSCryptoProviderInfo_Aes;
ctx->keySize = XMLSEC_KW_AES256_KEY_SIZE;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ret = xmlSecBufferInitialize(&ctx->keyBuffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* find provider */
ctx->cryptProvider = xmlSecMSCryptoFindProvider(ctx->providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->cryptProvider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecMSCryptoFindProvider",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* Create dummy key to be able to import plain session keys */
if (!xmlSecMSCryptoCreatePrivateExponentOneKey(ctx->cryptProvider, &(ctx->pubPrivKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoCreatePrivateExponentOneKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecMSCryptoCreatePrivateExponentOneKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -265,12 +258,8 @@ xmlSecMSCryptoKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < ctx->keySize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key=%d;expected=%d",
- keySize, ctx->keySize);
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -278,12 +267,9 @@ xmlSecMSCryptoKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecBufferGetData(buffer),
ctx->keySize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "expected-size=%d",
- ctx->keySize);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->keySize);
return(-1);
}
@@ -319,11 +305,8 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % 8) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d(not 8 bytes aligned)", inSize);
+ xmlSecInvalidSizeNotMultipleOfError("Input data", inSize, 8,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -337,11 +320,9 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -350,11 +331,8 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -363,11 +341,8 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -375,21 +350,17 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "inSize%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -398,11 +369,7 @@ xmlSecMSCryptoKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfo
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -440,11 +407,7 @@ xmlSecMSCryptoKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
TRUE,
&cryptKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob", NULL);
return(-1);
}
xmlSecAssert2(cryptKey != 0, -1);
@@ -456,11 +419,7 @@ xmlSecMSCryptoKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
}
dwCLen = inSize;
if(!CryptEncrypt(cryptKey, 0, FALSE, 0, out, &dwCLen, outSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
@@ -496,11 +455,7 @@ xmlSecMSCryptoKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
TRUE,
&cryptKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob", NULL);
return(-1);
}
xmlSecAssert2(cryptKey != 0, -1);
@@ -512,11 +467,7 @@ xmlSecMSCryptoKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
}
dwCLen = inSize;
if(!CryptDecrypt(cryptKey, 0, FALSE, 0, out, &dwCLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptDecrypt", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
diff --git a/src/mscrypto/kw_des.c b/src/mscrypto/kw_des.c
index 227e76d5..285cfecd 100644
--- a/src/mscrypto/kw_des.c
+++ b/src/mscrypto/kw_des.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
@@ -187,55 +192,36 @@ xmlSecMSCryptoKWDes3Initialize(xmlSecTransformPtr transform) {
ctx->keyId = xmlSecMSCryptoKeyDataDesId;
ctx->keySize = XMLSEC_KW_DES3_KEY_LENGTH;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* find providers */
ctx->desCryptProvider = xmlSecMSCryptoFindProvider(ctx->desProviders, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->desCryptProvider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider(des)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecMSCryptoFindProvider(des)",
+ xmlSecTransformGetName(transform));
return(-1);
}
ctx->sha1CryptProvider = xmlSecMSCryptoFindProvider(ctx->sha1Providers, NULL, CRYPT_VERIFYCONTEXT, TRUE);
if(ctx->sha1CryptProvider == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoFindProvider(sha1)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecInternalError("xmlSecMSCryptoFindProvider(sha1)",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* Create dummy key to be able to import plain session keys */
if (!xmlSecMSCryptoCreatePrivateExponentOneKey(ctx->desCryptProvider, &(ctx->pubPrivKey))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoCreatePrivateExponentOneKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecMSCryptoError("xmlSecMSCryptoCreatePrivateExponentOneKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -311,22 +297,16 @@ xmlSecMSCryptoKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < XMLSEC_KW_DES3_KEY_LENGTH) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key length %d is not enough (%d expected)",
- keySize, XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInvalidKeyDataSizeError(keySize, XMLSEC_KW_DES3_KEY_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(&(ctx->keyBuffer), xmlSecBufferGetData(buffer), XMLSEC_KW_DES3_KEY_LENGTH);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
return(-1);
}
@@ -365,12 +345,9 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d bytes - not %d bytes aligned",
- inSize, XMLSEC_KW_DES3_BLOCK_LENGTH);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -386,11 +363,9 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -399,12 +374,9 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Encode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d",
+ keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -413,12 +385,9 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d",
+ keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -426,21 +395,17 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -449,11 +414,7 @@ xmlSecMSCryptoKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransf
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -488,11 +449,7 @@ xmlSecMSCryptoKWDes3Sha1(void * context,
0,
&mscHash);
if((ret == 0) || (mscHash == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptCreateHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptCreateHash", NULL);
return(-1);
}
@@ -502,11 +459,8 @@ xmlSecMSCryptoKWDes3Sha1(void * context,
inSize,
0);
if(ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptHashData",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecMSCryptoError2("CryptHashData", NULL,
+ "size=%d", inSize);
CryptDestroyHash(mscHash);
return(-1);
}
@@ -519,11 +473,8 @@ xmlSecMSCryptoKWDes3Sha1(void * context,
&retLen,
0);
if (ret == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetHashParam(HP_HASHVAL)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecMSCryptoError2("CryptGetHashParam(HP_HASHVAL)", NULL,
+ "size=%d", outSize);
CryptDestroyHash(mscHash);
return(-1);
}
@@ -538,7 +489,6 @@ xmlSecMSCryptoKWDes3GenerateRandom(void * context,
xmlSecByte * out, xmlSecSize outSize)
{
xmlSecMSCryptoKWDes3CtxPtr ctx = (xmlSecMSCryptoKWDes3CtxPtr)context;
- int ret;
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(ctx->desCryptProvider != 0, -1);
@@ -546,11 +496,8 @@ xmlSecMSCryptoKWDes3GenerateRandom(void * context,
xmlSecAssert2(outSize > 0, -1);
if(!CryptGenRandom(ctx->desCryptProvider, outSize, out)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGenRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "len=%d", outSize);
+ xmlSecMSCryptoError2("CryptGenRandom", NULL,
+ "len=%d", outSize);
return(-1);
}
@@ -565,7 +512,6 @@ xmlSecMSCryptoKWDes3BlockEncrypt(void * context,
xmlSecMSCryptoKWDes3CtxPtr ctx = (xmlSecMSCryptoKWDes3CtxPtr)context;
DWORD dwBlockLen, dwBlockLenLen, dwCLen;
HCRYPTKEY cryptKey = 0;
- int ret;
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(xmlSecBufferGetData(&(ctx->keyBuffer)) != NULL, -1);
@@ -587,11 +533,7 @@ xmlSecMSCryptoKWDes3BlockEncrypt(void * context,
TRUE,
&cryptKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob", NULL);
return(-1);
}
xmlSecAssert2(cryptKey != 0, -1);
@@ -599,23 +541,20 @@ xmlSecMSCryptoKWDes3BlockEncrypt(void * context,
/* iv len == block len */
dwBlockLenLen = sizeof(DWORD);
if (!CryptGetKeyParam(cryptKey, KP_BLOCKLEN, (BYTE *)&dwBlockLen, &dwBlockLenLen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGetKeyParam", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
/* set IV */
- if((ivSize < dwBlockLen / 8) || (!CryptSetKeyParam(cryptKey, KP_IV, iv, 0))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "ivSize=%d, dwBlockLen=%d",
- ivSize, dwBlockLen / 8);
+ if(ivSize < dwBlockLen / 8) {
+ xmlSecInvalidSizeLessThanError("ivSize", ivSize, dwBlockLen / 8, NULL);
+ CryptDestroyKey(cryptKey);
+ return(-1);
+ }
+
+ if(!CryptSetKeyParam(cryptKey, KP_IV, iv, 0)) {
+ xmlSecMSCryptoError("CryptSetKeyParam", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
@@ -627,11 +566,7 @@ xmlSecMSCryptoKWDes3BlockEncrypt(void * context,
}
dwCLen = inSize;
if(!CryptEncrypt(cryptKey, 0, FALSE, 0, out, &dwCLen, outSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
@@ -649,7 +584,6 @@ xmlSecMSCryptoKWDes3BlockDecrypt(void * context,
xmlSecMSCryptoKWDes3CtxPtr ctx = (xmlSecMSCryptoKWDes3CtxPtr)context;
DWORD dwBlockLen, dwBlockLenLen, dwCLen;
HCRYPTKEY cryptKey = 0;
- int ret;
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(xmlSecBufferGetData(&(ctx->keyBuffer)) != NULL, -1);
@@ -671,11 +605,7 @@ xmlSecMSCryptoKWDes3BlockDecrypt(void * context,
TRUE,
&cryptKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoImportPlainSessionBlob",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoImportPlainSessionBlob", NULL);
return(-1);
}
xmlSecAssert2(cryptKey != 0, -1);
@@ -683,23 +613,19 @@ xmlSecMSCryptoKWDes3BlockDecrypt(void * context,
/* iv len == block len */
dwBlockLenLen = sizeof(DWORD);
if (!CryptGetKeyParam(cryptKey, KP_BLOCKLEN, (BYTE *)&dwBlockLen, &dwBlockLenLen, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGetKeyParam", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
/* set IV */
- if((ivSize < dwBlockLen / 8) || (!CryptSetKeyParam(cryptKey, KP_IV, iv, 0))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSetKeyParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "ivSize=%d, dwBlockLen=%d",
- ivSize, dwBlockLen / 8);
+ if(ivSize < dwBlockLen / 8) {
+ xmlSecInvalidSizeLessThanError("ivSize", ivSize, dwBlockLen / 8, NULL);
+ CryptDestroyKey(cryptKey);
+ return(-1);
+ }
+ if(!CryptSetKeyParam(cryptKey, KP_IV, iv, 0)) {
+ xmlSecMSCryptoError("CryptSetKeyParam", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
@@ -711,11 +637,7 @@ xmlSecMSCryptoKWDes3BlockDecrypt(void * context,
}
dwCLen = inSize;
if(!CryptDecrypt(cryptKey, 0, FALSE, 0, out, &dwCLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptEncrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptEncrypt", NULL);
CryptDestroyKey(cryptKey);
return(-1);
}
diff --git a/src/mscrypto/private.h b/src/mscrypto/private.h
index 37e7b9a4..cd18c0bc 100644
--- a/src/mscrypto/private.h
+++ b/src/mscrypto/private.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* THIS IS A PRIVATE XMLSEC HEADER FILE
* DON'T USE IT IN YOUR APPLICATION
@@ -16,7 +16,7 @@
#error "private.h file contains private xmlsec definitions and should not be used outside xmlsec or xmlsec-$crypto libraries"
#endif /* XMLSEC_PRIVATE */
-#if defined(__MINGW32__)
+#if defined(__MINGW32__) && defined(XMLSEC_CUSTOM_CRYPT32)
# include "xmlsec-mingw.h"
#endif
diff --git a/src/mscrypto/signatures.c b/src/mscrypto/signatures.c
index 1806dd22..424804eb 100644
--- a/src/mscrypto/signatures.c
+++ b/src/mscrypto/signatures.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -8,6 +9,13 @@
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2005-2006 Cryptocom LTD (http://www.cryptocom.ru).
*/
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -121,13 +129,20 @@ static int xmlSecMSCryptoSignatureCheckId(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_256Id)) {
+ return(1);
+ } else
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_512Id)) {
+ return(1);
+ } else
+#endif /* XMLSEC_NO_GOST2012*/
+
/* not found */
{
return(0);
}
-
- return(0);
}
static int xmlSecMSCryptoSignatureInitialize(xmlSecTransformPtr transform) {
@@ -195,13 +210,20 @@ static int xmlSecMSCryptoSignatureInitialize(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_256Id)) {
+ ctx->digestAlgId = CALG_GR3411_2012_256;
+ ctx->keyId = xmlSecMSCryptoKeyDataGost2012_256Id;
+ } else
+ if(xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_512Id)) {
+ ctx->digestAlgId = CALG_GR3411_2012_512;
+ ctx->keyId = xmlSecMSCryptoKeyDataGost2012_512Id;
+ } else
+#endif /* XMLSEC_NO_GOST2012*/
+
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
@@ -249,11 +271,8 @@ static int xmlSecMSCryptoSignatureSetKey(xmlSecTransformPtr transform, xmlSecKey
ctx->data = xmlSecKeyDataDuplicate(value);
if(ctx->data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKeyDataDuplicate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataDuplicate",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -307,11 +326,9 @@ static int xmlSecMSCryptoSignatureVerify(xmlSecTransformPtr transform,
ret = xmlSecBufferInitialize(&tmp, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataSize=%d", dataSize);
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform),
+ "dataSize=%d", dataSize);
return(-1);
}
@@ -367,23 +384,23 @@ static int xmlSecMSCryptoSignatureVerify(xmlSecTransformPtr transform,
} else
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if (xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_256Id) ||
+ xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_512Id)) {
+ ConvertEndian(data, tmpBuf, dataSize);
+ } else
+#endif /* XMLSEC_NO_GOST2012*/
+
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Invalid algo");
+ xmlSecInvalidTypeError("Invalid signature algorithm", xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&tmp);
return(-1);
}
hKey = xmlSecMSCryptoKeyDataGetKey(ctx->data, xmlSecKeyDataTypePublic);
if (hKey == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoKeyDataGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataGetKey",
+ xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&tmp);
return(-1);
}
@@ -395,20 +412,15 @@ static int xmlSecMSCryptoSignatureVerify(xmlSecTransformPtr transform,
0)) {
dwError = GetLastError();
if (NTE_BAD_SIGNATURE == dwError) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptVerifySignature",
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "signature do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "CryptVerifySignature: signature does not verify");
transform->status = xmlSecTransformStatusFail;
xmlSecBufferFinalize(&tmp);
return(0);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "CryptVerifySignature",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptVerifySignature",
+ xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&tmp);
return (-1);
}
@@ -430,6 +442,8 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
int ret;
DWORD dwSigLen;
BYTE *tmpBuf, *outBuf;
+ int bOk;
+ PCRYPT_KEY_PROV_INFO pProviderInfo = NULL;
xmlSecAssert2(xmlSecMSCryptoSignatureCheckId(transform), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
@@ -452,20 +466,68 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
xmlSecAssert2(outSize == 0, -1);
if (0 == (hProv = xmlSecMSCryptoKeyDataGetMSCryptoProvider(ctx->data))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecMSCryptoKeyDataGetMSCryptoProvider",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("xmlSecMSCryptoKeyDataGetMSCryptoProvider",
+ xmlSecTransformGetName(transform));
return (-1);
}
- if (!CryptCreateHash(hProv, ctx->digestAlgId, 0, 0, &(ctx->mscHash))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptCreateHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ //First try create hash with provider acquired in function xmlSecMSCryptoKeyDataAdoptCert.
+ bOk = CryptCreateHash(hProv, ctx->digestAlgId, 0, 0, &(ctx->mscHash));
+
+ //Then try it with container name, provider name and type acquired from certificate context.
+ if(!bOk) {
+ pProviderInfo = xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo(ctx->data);
+
+ if(pProviderInfo == NULL) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataGetMSCryptoProviderInfo", NULL);
+ return(-1);
+ }
+
+ if(!CryptReleaseContext(hProv, 0)) {
+ xmlSecMSCryptoError("CryptReleaseContext", NULL);
+ return(-1);
+ }
+ hProv = (HCRYPTPROV)0;
+
+ if(!CryptAcquireContextW(&hProv,
+ pProviderInfo->pwszContainerName,
+ pProviderInfo->pwszProvName,
+ pProviderInfo->dwProvType,
+ 0)) {
+
+ xmlSecMSCryptoError("CryptAcquireContext", NULL);
+ return(-1);
+ }
+
+ bOk = CryptCreateHash(hProv, ctx->digestAlgId, 0, 0, &(ctx->mscHash));
+ }
+
+ //Last try it with PROV_RSA_AES provider type.
+ if(!bOk) {
+ if (!CryptReleaseContext(hProv, 0)) {
+ xmlSecMSCryptoError("CryptReleaseContext", NULL);
+ return(-1);
+ }
+ hProv = (HCRYPTPROV)0;
+
+ if(!CryptAcquireContextW(&hProv,
+ pProviderInfo->pwszContainerName,
+ NULL,
+ PROV_RSA_AES,
+ 0)) {
+ xmlSecMSCryptoError("CryptAcquireContext", NULL);
+ return(-1);
+ }
+
+ bOk = CryptCreateHash(hProv, ctx->digestAlgId, 0, 0, &(ctx->mscHash));
+ }
+
+ if(pProviderInfo != NULL) {
+ free(pProviderInfo);
+ }
+
+ if(!bOk) {
+ xmlSecMSCryptoError("CryptCreateHash", NULL);
return(-1);
}
@@ -476,21 +538,14 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
xmlSecAssert2(outSize == 0, -1);
if (!CryptHashData(ctx->mscHash, xmlSecBufferGetData(in), inSize, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptHashData",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptHashData", NULL);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -503,33 +558,23 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
if(transform->operation == xmlSecTransformOperationSign) {
dwKeySpec = xmlSecMSCryptoKeyDataGetMSCryptoKeySpec(ctx->data);
if (!CryptSignHash(ctx->mscHash, dwKeySpec, NULL, 0, NULL, &dwSigLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSignHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSignHash", NULL);
return(-1);
}
outSize = (xmlSecSize)dwSigLen;
ret = xmlSecBufferInitialize(&tmp, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
tmpBuf = xmlSecBufferGetData(&tmp);
xmlSecAssert2(tmpBuf != NULL, -1);
if (!CryptSignHash(ctx->mscHash, dwKeySpec, NULL, 0, tmpBuf, &dwSigLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptSignHash",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptSignHash", NULL);
xmlSecBufferFinalize(&tmp);
return(-1);
}
@@ -537,11 +582,9 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
xmlSecBufferFinalize(&tmp);
return(-1);
}
@@ -597,13 +640,16 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
} else
#endif /* XMLSEC_NO_GOST*/
+#ifndef XMLSEC_NO_GOST2012
+ if (xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_256Id) ||
+ xmlSecTransformCheckId(transform, xmlSecMSCryptoTransformGost2012_512Id)) {
+ ConvertEndian(tmpBuf, outBuf, outSize);
+ } else
+#endif /* XMLSEC_NO_GOST2012*/
+
{
/* We shouldn't get at this place */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Invalid algo");
+ xmlSecInvalidTypeError("Invalid signature algorithm", xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&tmp);
return(-1);
}
@@ -616,11 +662,7 @@ xmlSecMSCryptoSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTra
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -958,3 +1000,98 @@ xmlSecMSCryptoTransformGost2001GostR3411_94GetKlass(void) {
#endif /* XMLSEC_NO_GOST*/
+
+#ifndef XMLSEC_NO_GOST2012
+
+/****************************************************************************
+ *
+ * GOST R 34.10-2012 256 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecMSCryptoGost2012_256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCryptoSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameGostR3410_2012GostR3411_2012_256, /* const xmlChar* name; */
+ xmlSecHrefGostR3410_2012GostR3411_2012_256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCryptoSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCryptoSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCryptoSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCryptoSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCryptoSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCryptoSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCryptoTransformGost2012GostR3411_94GetKlass:
+ *
+ * The GOST R 34.10-2012 signature transform klass.
+ *
+ * Returns: GOST2001-GOST R 34.10-2012 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCryptoTransformGost2012_256GetKlass(void) {
+ return(&xmlSecMSCryptoGost2012_256Klass);
+}
+
+/****************************************************************************
+ *
+ * GOST R 34.10-2012 512 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecMSCryptoGost2012_512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecMSCryptoSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameGostR3410_2012GostR3411_2012_512, /* const xmlChar* name; */
+ xmlSecHrefGostR3410_2012GostR3411_2012_512, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecMSCryptoSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecMSCryptoSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecMSCryptoSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecMSCryptoSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecMSCryptoSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecMSCryptoSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecMSCryptoTransformGost2012GostR3411_94GetKlass:
+ *
+ * The GOST R 34.10-2012 signature transform klass.
+ *
+ * Returns: GOST2001-GOST R 34.10-2012 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecMSCryptoTransformGost2012_512GetKlass(void) {
+ return(&xmlSecMSCryptoGost2012_512Klass);
+}
+
+#endif /* XMLSEC_NO_GOST2012*/
+
diff --git a/src/mscrypto/symkeys.c b/src/mscrypto/symkeys.c
index 658a6d49..8d54dc73 100644
--- a/src/mscrypto/symkeys.c
+++ b/src/mscrypto/symkeys.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
*/
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -138,6 +143,7 @@ xmlSecMSCryptoSymKeyDataGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xml
xmlSecAssert2(xmlSecMSCryptoSymKeyDataCheckId(data), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
xmlSecAssert2(buffer != NULL, -1);
@@ -202,8 +208,6 @@ xmlSecMSCryptoSymKeyDataKlassCheck(xmlSecKeyDataKlass* klass) {
{
return(0);
}
-
- return(0);
}
@@ -225,9 +229,8 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
DWORD keyBlobLen;
PUBLICKEYSTRUC* pubKeyStruc;
RSAPUBKEY* rsaPubKey;
- DWORD bitLen;
+ DWORD bitLen, n;
BYTE *ptr;
- int n;
BOOL res = FALSE;
xmlSecAssert2(hProv != 0, FALSE);
@@ -238,40 +241,24 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
/* Generate the private key */
if(!CryptGenKey(hProv, AT_KEYEXCHANGE, CRYPT_EXPORTABLE, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGenKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptGenKey", NULL);
goto done;
}
/* Export the private key, we'll convert it to a private exponent of one key */
if(!CryptExportKey(hKey, 0, PRIVATEKEYBLOB, 0, NULL, &keyBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptExportKey", NULL);
goto done;
}
keyBlob = (LPBYTE)xmlMalloc(sizeof(BYTE) * keyBlobLen);
if(keyBlob == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(sizeof(BYTE) * keyBlobLen, NULL);
goto done;
}
if(!CryptExportKey(hKey, 0, PRIVATEKEYBLOB, 0, keyBlob, &keyBlobLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptExportKey", NULL);
goto done;
}
CryptDestroyKey(hKey);
@@ -279,28 +266,22 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
/* Get the bit length of the key */
if(keyBlobLen < sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "len=%ld", keyBlobLen);
+ xmlSecMSCryptoError2("CryptExportKey", NULL,
+ "len=%ld",
+ (long int)keyBlobLen);
goto done;
}
pubKeyStruc = (PUBLICKEYSTRUC*)keyBlob;
if(pubKeyStruc->bVersion != 0x02) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bVersion=%d", pubKeyStruc->bVersion);
+ xmlSecMSCryptoError2("CryptExportKey", NULL,
+ "pubKeyStruc->bVersion=%ld",
+ (long int)pubKeyStruc->bVersion);
goto done;
}
if(pubKeyStruc->bType != PRIVATEKEYBLOB) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "pubKeyStruc->bType=%d", (int)pubKeyStruc->bType);
+ xmlSecMSCryptoError2("CryptExportKey", NULL,
+ "pubKeyStruc->bType=%ld",
+ (long int)pubKeyStruc->bType);
goto done;
}
@@ -309,11 +290,9 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
/* check that we have RSA private key */
if(rsaPubKey->magic != 0x32415352) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "rsaPubKey->magic=0x%08lx", rsaPubKey->magic);
+ xmlSecMSCryptoError2("CryptExportKey", NULL,
+ "rsaPubKey->magic=0x%08lx",
+ (long int)rsaPubKey->magic);
goto done;
}
bitLen = rsaPubKey->bitlen;
@@ -335,11 +314,8 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
* BYTE privateExponent[rsapubkey.bitlen/8]; 1/8
*/
if(keyBlobLen < sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY) + bitLen / 2 + bitLen / 16) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptExportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "len=%ld", keyBlobLen);
+ xmlSecMSCryptoError2("CryptExportKey", NULL,
+ "keBlobLen=%ld", keyBlobLen);
goto done;
}
ptr = (BYTE*)(keyBlob + sizeof(PUBLICKEYSTRUC) + sizeof(RSAPUBKEY));
@@ -374,11 +350,7 @@ xmlSecMSCryptoCreatePrivateExponentOneKey(HCRYPTPROV hProv, HCRYPTKEY *hPrivateK
/* Import the exponent-of-one private key. */
if (!CryptImportKey(hProv, keyBlob, keyBlobLen, 0, 0, &hKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptImportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CryptImportKey", NULL);
goto done;
}
(*hPrivateKey) = hKey;
@@ -434,11 +406,9 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
dwFlags = 0;
}
if(!fFound) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetProvParam",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d is not supported", dwAlgId);
+ xmlSecMSCryptoError2("CryptGetProvParam", NULL,
+ "algId=%ld is not supported",
+ (long int)dwAlgId);
goto done;
}
@@ -447,21 +417,16 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
* PP_ENUMALGS_EX contains the key size without the padding so we can't use it.
*/
if(!CryptGenKey(hProv, dwAlgId, 0, &hTempKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGenKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d", dwAlgId);
+ xmlSecMSCryptoError2("CryptGenKey", NULL,
+ "algId=%ld",
+ (long int)dwAlgId);
goto done;
}
dwSize = sizeof(DWORD);
if(!CryptGetKeyParam(hTempKey, KP_KEYLEN, (LPBYTE)&dwProvSessionKeySize, &dwSize, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetKeyParam(KP_KEYLEN)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d", dwAlgId);
+ xmlSecMSCryptoError2("CryptGetKeyParam(KP_KEYLEN)", NULL,
+ "algId=%ld", (long int)dwAlgId);
goto done;
}
CryptDestroyKey(hTempKey);
@@ -469,12 +434,9 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
/* yell if key is too big */
if ((dwKeyMaterial * 8) > dwProvSessionKeySize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "dwKeyMaterial=%ld;dwProvSessionKeySize=%ld",
- dwKeyMaterial, dwProvSessionKeySize);
+ xmlSecInvalidSizeMoreThanError("Key value (bits)",
+ (dwKeyMaterial * 8), dwProvSessionKeySize,
+ NULL);
goto done;
}
} else {
@@ -484,33 +446,24 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
/* Get private key's algorithm */
dwSize = sizeof(ALG_ID);
if(!CryptGetKeyParam(hPrivateKey, KP_ALGID, (LPBYTE)&dwPrivKeyAlg, &dwSize, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetKeyParam(KP_ALGID)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d", dwAlgId);
+ xmlSecMSCryptoError2("CryptGetKeyParam(KP_ALGID)", NULL,
+ "algId=%ld",
+ (long int)dwAlgId);
goto done;
}
/* Get private key's length in bits */
dwSize = sizeof(DWORD);
if(!CryptGetKeyParam(hPrivateKey, KP_KEYLEN, (LPBYTE)&dwPublicKeySize, &dwSize, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGetKeyParam(KP_KEYLEN)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d", dwAlgId);
+ xmlSecMSCryptoError2("CryptGetKeyParam(KP_KEYLEN)", NULL,
+ "algId=%ld",
+ (long int)dwAlgId);
goto done;
}
/* 3 is for the first reserved byte after the key material and the 2 reserved bytes at the end. */
if(dwPublicKeySize / 8 < dwKeyMaterial + 3) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "dwKeyMaterial=%ld;dwPublicKeySize=%ld",
- dwKeyMaterial, dwPublicKeySize);
+ xmlSecInvalidSizeLessThanError("Key value", dwPublicKeySize / 8, dwKeyMaterial + 3, NULL);
goto done;
}
rndBlobSize = dwPublicKeySize / 8 - (dwKeyMaterial + 3);
@@ -530,11 +483,7 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
/* allocate simple blob buffer */
keyBlob = (LPBYTE)xmlMalloc(sizeof(BYTE) * keyBlobLen);
if(keyBlob == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(sizeof(BYTE) * keyBlobLen, NULL);
goto done;
}
memset(keyBlob, 0, keyBlobLen);
@@ -562,11 +511,9 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
/* Generate random data for the rest of the buffer */
if((rndBlobSize > 0) && !CryptGenRandom(hProv, rndBlobSize, pbPtr)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptGenRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "rndBlobSize=%ld", rndBlobSize);
+ xmlSecMSCryptoError2("CryptGenRandom", NULL,
+ "rndBlobSize=%ld",
+ (long int)rndBlobSize);
goto done;
}
/* aleksey: why are we doing this? */
@@ -578,11 +525,9 @@ xmlSecMSCryptoImportPlainSessionBlob(HCRYPTPROV hProv, HCRYPTKEY hPrivateKey,
keyBlob[keyBlobLen - 2] = 2;
if(!CryptImportKey(hProv, keyBlob , keyBlobLen, hPrivateKey, CRYPT_EXPORTABLE, hSessionKey)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CryptImportKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "algId=%d", dwAlgId);
+ xmlSecMSCryptoError2("CryptImportKey", NULL,
+ "algId=%ld",
+ (long int)dwAlgId);
goto done;
}
diff --git a/src/mscrypto/x509.c b/src/mscrypto/x509.c
index 0f687695..2abb5509 100644
--- a/src/mscrypto/x509.c
+++ b/src/mscrypto/x509.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -10,6 +8,12 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509
+ * @Short_description: X509 certificates implementation for Microsoft Crypto API.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
@@ -360,11 +364,8 @@ xmlSecMSCryptoKeyDataX509AdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT cert) {
xmlSecAssert2(ctx->hMemStore != 0, -1);
if (!CertAddCertificateContextToStore(ctx->hMemStore, cert, CERT_STORE_ADD_ALWAYS, NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CertAddCertificateContextToStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddCertificateContextToStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
CertFreeCertificateContext(cert);
@@ -395,8 +396,10 @@ xmlSecMSCryptoKeyDataX509GetCert(xmlSecKeyDataPtr data, xmlSecSize pos) {
xmlSecAssert2(ctx->hMemStore != 0, NULL);
xmlSecAssert2(ctx->numCerts > pos, NULL);
- while ((pCert = CertEnumCertificatesInStore(ctx->hMemStore, pCert)) && (pos > 0)) {
- pos--;
+ pCert = CertEnumCertificatesInStore(ctx->hMemStore, pCert);
+ while ((pCert != NULL) && (pos > 0)) {
+ pCert = CertEnumCertificatesInStore(ctx->hMemStore, pCert);
+ pos--;
}
return(pCert);
@@ -443,11 +446,8 @@ xmlSecMSCryptoKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, PCCRL_CONTEXT crl) {
xmlSecAssert2(ctx->hMemStore != 0, -1);
if (!CertAddCRLContextToStore(ctx->hMemStore, crl, CERT_STORE_ADD_ALWAYS, NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CertAddCRLContextToStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddCRLContextToStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ctx->numCrls++;
@@ -476,8 +476,10 @@ xmlSecMSCryptoKeyDataX509GetCrl(xmlSecKeyDataPtr data, xmlSecSize pos) {
xmlSecAssert2(ctx->hMemStore != 0, NULL);
xmlSecAssert2(ctx->numCrls > pos, NULL);
- while ((pCRL = CertEnumCRLsInStore(ctx->hMemStore, pCRL)) && (pos > 0)) {
- pos--;
+ pCRL = CertEnumCRLsInStore(ctx->hMemStore, pCRL);
+ while ((pCRL != NULL) && (pos > 0)) {
+ pCRL = CertEnumCRLsInStore(ctx->hMemStore, pCRL);
+ pos--;
}
return(pCRL);
@@ -520,11 +522,8 @@ xmlSecMSCryptoKeyDataX509Initialize(xmlSecKeyDataPtr data) {
CERT_STORE_CREATE_NEW_FLAG,
NULL);
if (ctx->hMemStore == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertOpenStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -549,31 +548,23 @@ xmlSecMSCryptoKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
*/
certSrc = xmlSecMSCryptoKeyDataX509GetCert(src, pos);
if(certSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecMSCryptoKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCert",
+ xmlSecKeyDataGetName(src),
+ "pos=%d", pos);
return(-1);
}
certDst = CertDuplicateCertificateContext(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(dst));
CertFreeCertificateContext(certDst);
return(-1);
}
@@ -584,31 +575,23 @@ xmlSecMSCryptoKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
for(pos = 0; pos < size; ++pos) {
crlSrc = xmlSecMSCryptoKeyDataX509GetCrl(src, pos);
if(crlSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecMSCryptoKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCrl",
+ xmlSecKeyDataGetName(src),
+ "pos=%d", pos);
return(-1);
}
crlDst = CertDuplicateCRLContext(crlSrc);
if(crlDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "CertDuplicateCRLContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCRLContext",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptCrl(dst, crlDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(dst));
CertFreeCRLContext(crlDst);
return(-1);
}
@@ -619,20 +602,14 @@ xmlSecMSCryptoKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(certSrc != NULL) {
certDst = CertDuplicateCertificateContext(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptKeyCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecMSCryptoKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(dst));
CertFreeCertificateContext(certDst);
return(-1);
}
@@ -656,11 +633,7 @@ xmlSecMSCryptoKeyDataX509Finalize(xmlSecKeyDataPtr data) {
if (ctx->hMemStore != 0) {
if (!CertCloseStore(ctx->hMemStore, CERT_CLOSE_STORE_FORCE_FLAG)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCloseStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("CertCloseStore", NULL);
return;
}
}
@@ -681,34 +654,23 @@ xmlSecMSCryptoKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyEnsureData(key, id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecMSCryptoX509DataNodeRead(data, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509DataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509DataNodeRead",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
- if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
- ret = xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
+ ret = xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
}
return(0);
}
@@ -728,13 +690,11 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(node != NULL, -1);
xmlSecAssert2(keyInfoCtx != NULL, -1);
- content = xmlSecX509DataGetNodeContent (node, 1, keyInfoCtx);
+ content = xmlSecX509DataGetNodeContent (node, keyInfoCtx);
if (content < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecX509DataGetNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "content=%d", content);
+ xmlSecInternalError2("xmlSecX509DataGetNodeContent",
+ xmlSecKeyDataKlassGetName(id),
+ "content=%d", content);
return(-1);
} else if(content == 0) {
/* by default we are writing certificates and crls */
@@ -753,22 +713,18 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
cert = xmlSecMSCryptoKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCert",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
ret = xmlSecMSCryptoX509CertificateNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509CertificateNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoX509CertificateNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -776,11 +732,9 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
ret = xmlSecMSCryptoX509SubjectNameNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509SubjectNameNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoX509SubjectNameNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -788,11 +742,9 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
ret = xmlSecMSCryptoX509IssuerSerialNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509IssuerSerialNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoX509IssuerSerialNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -800,11 +752,9 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
ret = xmlSecMSCryptoX509SKINodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509SKINodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoX509SKINodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -816,21 +766,17 @@ xmlSecMSCryptoKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
crl = xmlSecMSCryptoKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCrl",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
ret = xmlSecMSCryptoX509CRLNodeWrite(crl, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoX509CRLNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoX509CRLNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -874,11 +820,9 @@ xmlSecMSCryptoKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecMSCryptoKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "==== Certificate:\n");
@@ -908,11 +852,9 @@ xmlSecMSCryptoKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecMSCryptoKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecMSCryptoKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "<Certificate>\n");
@@ -940,29 +882,42 @@ xmlSecMSCryptoX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKey
ret = 0;
if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
ret = xmlSecMSCryptoX509CertificateNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509CertificateNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
ret = xmlSecMSCryptoX509SubjectNameNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509SubjectNameNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
ret = xmlSecMSCryptoX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509IssuerSerialNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
ret = xmlSecMSCryptoX509SKINodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509SKINodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
ret = xmlSecMSCryptoX509CRLNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecMSCryptoX509CRLNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation: ignore unknown nodes */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "read node failed");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
return(-1);
}
}
@@ -985,11 +940,7 @@ xmlSecMSCryptoX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -997,22 +948,16 @@ xmlSecMSCryptoX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
cert = xmlSecMSCryptoX509CertBase64DerRead(content);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoX509CertBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509CertBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext(cert);
xmlFree(content);
return(-1);
@@ -1035,29 +980,20 @@ xmlSecMSCryptoX509CertificateNodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node,
/* set base64 lines size from context */
buf = xmlSecMSCryptoX509CertBase64DerWrite(cert, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509CertBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509CertBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509Certificate)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
return(0);
@@ -1077,11 +1013,8 @@ xmlSecMSCryptoX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1091,11 +1024,7 @@ xmlSecMSCryptoX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
xmlFree(subject);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1104,12 +1033,8 @@ xmlSecMSCryptoX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
cert = xmlSecMSCryptoX509StoreFindCert(x509Store, subject, NULL, NULL, NULL, keyInfoCtx);
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "subject=%s",
- xmlSecErrorsSafeString(subject));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "subject=%s", xmlSecErrorsSafeString(subject));
xmlFree(subject);
return(-1);
}
@@ -1119,11 +1044,8 @@ xmlSecMSCryptoX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
ret = xmlSecMSCryptoKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext(cert);
xmlFree(subject);
return(-1);
@@ -1137,32 +1059,33 @@ static int
xmlSecMSCryptoX509SubjectNameNodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar* buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
buf = xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Subject));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Subject))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Subject))", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SubjectName)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
+
+ /* done */
xmlFree(buf);
return(0);
}
@@ -1183,23 +1106,16 @@ xmlSecMSCryptoX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, x
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
cur = xmlSecGetNextElementNode(node->children);
if(cur == NULL) {
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
return(-1);
}
return(0);
@@ -1207,56 +1123,32 @@ xmlSecMSCryptoX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, x
/* the first is required node X509IssuerName */
if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509IssuerName, xmlSecKeyDataGetName(data));
return(-1);
}
issuerName = xmlNodeGetContent(cur);
if(issuerName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is required node X509SerialNumber */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509SerialNumber, xmlSecKeyDataGetName(data));
xmlFree(issuerName);
return(-1);
}
issuerSerial = xmlNodeGetContent(cur);
if(issuerSerial == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
xmlFree(issuerName);
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1265,13 +1157,10 @@ xmlSecMSCryptoX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, x
cert = xmlSecMSCryptoX509StoreFindCert(x509Store, NULL, issuerName, issuerSerial, NULL, keyInfoCtx);
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "issuerName=%s;issuerSerial=%s",
- xmlSecErrorsSafeString(issuerName),
- xmlSecErrorsSafeString(issuerSerial));
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "issuerName=%s;issuerSerial=%s",
+ xmlSecErrorsSafeString(issuerName),
+ xmlSecErrorsSafeString(issuerSerial));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1284,11 +1173,8 @@ xmlSecMSCryptoX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, x
ret = xmlSecMSCryptoKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext(cert);
xmlFree(issuerSerial);
xmlFree(issuerName);
@@ -1312,61 +1198,46 @@ xmlSecMSCryptoX509IssuerSerialNodeWrite(PCCERT_CONTEXT cert,
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
/* create xml nodes */
- cur = xmlSecAddChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerSerial)", NULL);
return(-1);
}
- issuerNameNode = xmlSecAddChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ issuerNameNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
if(issuerNameNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerName)", NULL);
return(-1);
}
- issuerNumberNode = xmlSecAddChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ issuerNumberNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
if(issuerNumberNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SerialNumber)", NULL);
return(-1);
}
/* write data */
buf = xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Issuer));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Issuer))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509NameWrite(&(cert->pCertInfo->Issuer))", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNameNode)", NULL);
+ xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+
xmlFree(buf);
ret = xmlSecMSCryptoASN1IntegerWrite(issuerNumberNode, &(cert->pCertInfo->SerialNumber));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoASN1IntegerWrite(&(cert->serialNumber))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoASN1IntegerWrite(&(cert->serialNumber))", NULL);
return(-1);
}
return(0);
@@ -1386,11 +1257,8 @@ xmlSecMSCryptoX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1400,12 +1268,7 @@ xmlSecMSCryptoX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
xmlFree(ski);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1416,12 +1279,8 @@ xmlSecMSCryptoX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
xmlFree(ski);
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "ski=%s", xmlSecErrorsSafeString(ski));
return(-1);
}
return(0);
@@ -1429,11 +1288,8 @@ xmlSecMSCryptoX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
ret = xmlSecMSCryptoKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext(cert);
xmlFree(ski);
return(-1);
@@ -1447,34 +1303,34 @@ static int
xmlSecMSCryptoX509SKINodeWrite(PCCERT_CONTEXT cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar *buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
buf = xmlSecMSCryptoX509SKIWrite(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509SKIWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509SKIWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SKI)", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
- xmlFree(buf);
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1493,11 +1349,7 @@ xmlSecMSCryptoX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1505,21 +1357,15 @@ xmlSecMSCryptoX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
crl = xmlSecMSCryptoX509CrlBase64DerRead(content, keyInfoCtx);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoX509CrlBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509CrlBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
if (0 != xmlSecMSCryptoKeyDataX509AdoptCrl(data, crl)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
CertFreeCRLContext(crl);
return(-1);
@@ -1541,28 +1387,19 @@ xmlSecMSCryptoX509CRLNodeWrite(PCCRL_CONTEXT crl, xmlNodePtr node, xmlSecKeyInfo
/* set base64 lines size from context */
buf = xmlSecMSCryptoX509CrlBase64DerWrite(crl, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509CrlBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509CrlBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509CRL)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
@@ -1588,11 +1425,8 @@ xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecMSCryptoX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1606,34 +1440,24 @@ xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
ctx->keyCert = CertDuplicateCertificateContext(cert);
if(ctx->keyCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(data));
return(-1);
}
/* search key according to KeyReq */
pCert = CertDuplicateCertificateContext( ctx->keyCert ) ;
if( pCert == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CertDuplicateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
- return(-1);
+ xmlSecMSCryptoError("CertDuplicateCertificateContext",
+ xmlSecKeyDataGetName(data));
+ return(-1);
}
if( ( keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate ) == xmlSecKeyDataTypePrivate ) {
keyValue = xmlSecMSCryptoCertAdopt( pCert, xmlSecKeyDataTypePrivate ) ;
if(keyValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoCertAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoCertAdopt",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext( pCert ) ;
return(-1);
}
@@ -1641,11 +1465,8 @@ xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
} else if( ( keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePublic ) == xmlSecKeyDataTypePublic ) {
keyValue = xmlSecMSCryptoCertAdopt( pCert, xmlSecKeyDataTypePublic ) ;
if(keyValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoCertAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoCertAdopt",
+ xmlSecKeyDataGetName(data));
CertFreeCertificateContext( pCert ) ;
return(-1);
}
@@ -1654,51 +1475,36 @@ xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
/* verify that the key matches our expectations */
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
ret = xmlSecKeySetValue(key, keyValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
ret = xmlSecMSCryptoX509CertGetTime(ctx->keyCert->pCertInfo->NotBefore, &(key->notValidBefore));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidBefore");
+ xmlSecInternalError("xmlSecMSCryptoX509CertGetTime(notValidBefore)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = xmlSecMSCryptoX509CertGetTime(ctx->keyCert->pCertInfo->NotAfter, &(key->notValidAfter));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecMSCryptoX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidAfter");
+ xmlSecInternalError("xmlSecMSCryptoX509CertGetTime(notValidAfter)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND,
+ xmlSecKeyDataGetName(data), NULL);
return(-1);
}
}
@@ -1735,11 +1541,7 @@ xmlSecMSCryptoX509CertBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1756,11 +1558,7 @@ xmlSecMSCryptoX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
cert = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, buf, size);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCreateCertificateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertCreateCertificateContext", NULL);
return(NULL);
}
@@ -1778,21 +1576,13 @@ xmlSecMSCryptoX509CertBase64DerWrite(PCCERT_CONTEXT cert, int base64LineWrap) {
p = cert->pbCertEncoded;
size = cert->cbCertEncoded;
if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cert->pbCertEncoded",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("cert->pbCertEncoded", NULL);
return(NULL);
}
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
return(NULL);
}
@@ -1809,11 +1599,7 @@ xmlSecMSCryptoX509CrlBase64DerRead(xmlChar* buf,
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1833,11 +1619,7 @@ xmlSecMSCryptoX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
crl = CertCreateCRLContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, buf, size);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertCreateCRLContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertCreateCRLContext", NULL);
return(NULL);
}
@@ -1855,21 +1637,13 @@ xmlSecMSCryptoX509CrlBase64DerWrite(PCCRL_CONTEXT crl, int base64LineWrap) {
p = crl->pbCrlEncoded;
size = crl->cbCrlEncoded;
if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "crl->pbCrlEncoded",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("crl->pbCrlEncoded", NULL);
return(NULL);
}
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
return(NULL);
}
@@ -1888,42 +1662,26 @@ xmlSecMSCryptoX509NameWrite(PCERT_NAME_BLOB nm) {
csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, NULL, 0);
if(csz <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertNameToStr",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertNameToStr", NULL);
return(NULL);
}
resT = (LPTSTR)xmlMalloc(sizeof(TCHAR) * (csz + 1));
if (NULL == resT) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(WCHAR) * (csz + 1));
+ xmlSecMallocError(sizeof(TCHAR) * (csz + 1), NULL);
return (NULL);
}
csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, resT, csz + 1);
if (csz <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertNameToStr",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertNameToStr", NULL);
xmlFree(resT);
return(NULL);
}
- res = xmlSecMSCryptoConvertTstrToUtf8(resT);
+ res = xmlSecWin32ConvertTstrToUtf8(resT);
if (NULL == res) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoConvertTstrToUtf8",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecWin32ConvertTstrToUtf8", NULL);
xmlFree(resT);
return(NULL);
}
@@ -1944,21 +1702,14 @@ xmlSecMSCryptoASN1IntegerWrite(xmlNodePtr node, PCRYPT_INTEGER_BLOB num) {
ret = xmlSecBnInitialize(&bn, num->cbData + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%ld", num->cbData + 1);
+ xmlSecInternalError2("xmlSecBnInitialize", NULL,
+ "size=%ld", num->cbData + 1);
return(-1);
}
ret = xmlSecBnSetData(&bn, num->pbData, num->cbData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnSetData", NULL);
xmlSecBnFinalize(&bn);
return(-1);
}
@@ -1969,11 +1720,7 @@ xmlSecMSCryptoASN1IntegerWrite(xmlNodePtr node, PCRYPT_INTEGER_BLOB num) {
*/
ret = xmlSecBnSetNodeValue(&bn, node, xmlSecBnDec, 1, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnSetNodeValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnSetNodeValue", NULL);
xmlSecBnFinalize(&bn);
return(-1);
}
@@ -1991,44 +1738,28 @@ xmlSecMSCryptoX509SKIWrite(PCCERT_CONTEXT cert) {
xmlSecAssert2(cert != NULL, NULL);
- /* First check if the SKI extension actually exists, otherwise we get a SHA1 hash o fthe key/cert */
+ /* First check if the SKI extension actually exists, otherwise we get a SHA1 hash of the key/cert */
pCertExt = CertFindExtension(szOID_SUBJECT_KEY_IDENTIFIER, cert->pCertInfo->cExtension, cert->pCertInfo->rgExtension);
if (pCertExt == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertFindExtension",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return (NULL);
- }
+ xmlSecMSCryptoError("CertFindExtension", NULL);
+ return (NULL);
+ }
if (!CertGetCertificateContextProperty(cert, CERT_KEY_IDENTIFIER_PROP_ID, NULL, &dwSize) || dwSize < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertGetCertificateContextProperty",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return (NULL);
- }
+ xmlSecMSCryptoError("CertGetCertificateContextProperty", NULL);
+ return (NULL);
+ }
bSKI = xmlMalloc(dwSize);
if (NULL == bSKI) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(dwSize, NULL);
return (NULL);
}
if (!CertGetCertificateContextProperty(cert, CERT_KEY_IDENTIFIER_PROP_ID, bSKI, &dwSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertGetCertificateContextProperty",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlFree(bSKI);
- return (NULL);
- }
+ xmlSecMSCryptoError("CertGetCertificateContextProperty", NULL);
+ xmlFree(bSKI);
+ return (NULL);
+ }
if (NULL == bSKI) {
return(NULL);
@@ -2036,11 +1767,7 @@ xmlSecMSCryptoX509SKIWrite(PCCERT_CONTEXT cert) {
res = xmlSecBase64Encode(bSKI, dwSize, 0);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
xmlFree(bSKI);
return(NULL);
}
@@ -2065,11 +1792,7 @@ xmlSecMSCryptoX509CertDebugDump(PCCERT_CONTEXT cert, FILE* output) {
/* subject */
subject = xmlSecMSCryptoX509GetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL);
if(subject == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoX509GetNameString",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "subject");
+ xmlSecInternalError("xmlSecMSCryptoX509GetNameString(subject)", NULL);
goto done;
}
fprintf(output, "==== Subject Name: %s\n", subject);
@@ -2077,11 +1800,7 @@ xmlSecMSCryptoX509CertDebugDump(PCCERT_CONTEXT cert, FILE* output) {
/* issuer */
issuer = xmlSecMSCryptoX509GetNameString(cert, CERT_NAME_RDN_TYPE, CERT_NAME_ISSUER_FLAG, NULL);
if(issuer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoX509GetNameString",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "issuer");
+ xmlSecInternalError("xmlSecMSCryptoX509GetNameString(issuer)", NULL);
goto done;
}
fprintf(output, "==== Issuer Name: %s\n", issuer);
@@ -2116,11 +1835,7 @@ xmlSecMSCryptoX509CertDebugXmlDump(PCCERT_CONTEXT cert, FILE* output) {
/* subject */
subject = xmlSecMSCryptoX509GetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL);
if(subject == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoX509GetNameString",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "subject");
+ xmlSecInternalError("xmlSecMSCryptoX509GetNameString(subject)", NULL);
goto done;
}
fprintf(output, "<SubjectName>");
@@ -2130,11 +1845,7 @@ xmlSecMSCryptoX509CertDebugXmlDump(PCCERT_CONTEXT cert, FILE* output) {
/* issuer */
issuer = xmlSecMSCryptoX509GetNameString(cert, CERT_NAME_RDN_TYPE, CERT_NAME_ISSUER_FLAG, NULL);
if(issuer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoX509GetNameString",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "issuer");
+ xmlSecInternalError("xmlSecMSCryptoX509GetNameString(issuer)", NULL);
goto done;
}
fprintf(output, "<IssuerName>");
@@ -2237,43 +1948,30 @@ xmlSecMSCryptoKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
cert = xmlSecMSCryptoX509CertDerRead(buf, bufSize);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509CertDerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509CertDerRead", NULL);
return(-1);
}
data = xmlSecKeyEnsureData(key, xmlSecMSCryptoKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
CertFreeCertificateContext(cert);
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509AdoptCert",
+ xmlSecKeyDataKlassGetName(id));
CertFreeCertificateContext(cert);
return(-1);
}
ret = xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecMSCryptoKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
return(0);
diff --git a/src/mscrypto/x509vfy.c b/src/mscrypto/x509vfy.c
index 899cb6e3..fbc5447e 100644
--- a/src/mscrypto/x509vfy.c
+++ b/src/mscrypto/x509vfy.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -10,6 +8,13 @@
* Copyright (C) 2003 Cordys R&D BV, All rights reserved.
* Copyright (C) 2003-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509vfy
+ * @Short_description: X509 certificates verification support functions for Microsoft Crypto API.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -182,11 +187,8 @@ xmlSecMSCryptoCheckRevocation(HCERTSTORE hStore, PCCERT_CONTEXT pCert) {
while((pCrl = CertEnumCRLsInStore(hStore, pCrl)) != NULL) {
if (CertFindCertificateInCRL(pCert, pCrl, 0, NULL, &pCrlEntry) && (pCrlEntry != NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertFindCertificateInCRL",
- XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
- "cert found in crl list");
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED, NULL,
+ "CertFindCertificateInCRL: cert found in crl list");
return(FALSE);
}
}
@@ -197,7 +199,6 @@ xmlSecMSCryptoCheckRevocation(HCERTSTORE hStore, PCCERT_CONTEXT pCert) {
static void
xmlSecMSCryptoX509StoreCertError(xmlSecKeyDataStorePtr store, PCCERT_CONTEXT cert, DWORD flags) {
xmlChar * subject = NULL;
- DWORD dwSize;
xmlSecAssert(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId));
xmlSecAssert(cert != NULL);
@@ -206,47 +207,38 @@ xmlSecMSCryptoX509StoreCertError(xmlSecKeyDataStorePtr store, PCCERT_CONTEXT cer
/* get certs subject */
subject = xmlSecMSCryptoX509GetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL);
if(subject == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoX509GetNameString",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecMSCryptoX509GetNameString", NULL);
return;
}
/* print error */
if (flags & CERT_STORE_SIGNATURE_FLAG) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- xmlSecErrorsSafeString(subject),
- XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
- "signature");
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "signature failed, subject=%s",
+ xmlSecErrorsSafeString(subject));
} else if (flags & CERT_STORE_TIME_VALIDITY_FLAG) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- xmlSecErrorsSafeString(subject),
- XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s",
+ xmlSecErrorsSafeString(subject));
} else if (flags & CERT_STORE_REVOCATION_FLAG) {
if (flags & CERT_STORE_NO_CRL_FLAG) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- xmlSecErrorsSafeString(subject),
- XMLSEC_ERRORS_R_CERT_REVOKED,
- "no crl");
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_REVOKED,
+ xmlSecKeyDataStoreGetName(store),
+ "no crl, subject=%s",
+ xmlSecErrorsSafeString(subject));
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- xmlSecErrorsSafeString(subject),
- XMLSEC_ERRORS_R_CERT_REVOKED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_REVOKED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s",
+ xmlSecErrorsSafeString(subject));
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- xmlSecErrorsSafeString(subject),
- XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s",
+ xmlSecErrorsSafeString(subject));
}
xmlFree(subject);
@@ -267,90 +259,66 @@ static BOOL
xmlSecBuildChainUsingWinapi (PCCERT_CONTEXT cert, LPFILETIME pfTime,
HCERTSTORE store_untrusted, HCERTSTORE store_doc)
{
- PCCERT_CHAIN_CONTEXT pChainContext = NULL;
- CERT_CHAIN_PARA chainPara;
- BOOL rc = FALSE;
- HCERTSTORE store_add = NULL;
+ PCCERT_CHAIN_CONTEXT pChainContext = NULL;
+ CERT_CHAIN_PARA chainPara;
+ BOOL rc = FALSE;
+ HCERTSTORE store_add = NULL;
/* Initialize data structures. */
-
- memset(&chainPara, 0, sizeof(CERT_CHAIN_PARA));
- chainPara.cbSize = sizeof(CERT_CHAIN_PARA);
-
- /* Create additional store for CertGetCertificateChain() */
- store_add = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, 0, NULL);
- if (!store_add) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "chain additional collection store",
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto end;
- }
- if (!CertAddStoreToCollection(store_add, store_doc, 0, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "adding document store",
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto end;
- }
- if (!CertAddStoreToCollection(store_add, store_untrusted, 0, 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "adding untrusted store",
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto end;
- }
+ memset(&chainPara, 0, sizeof(CERT_CHAIN_PARA));
+ chainPara.cbSize = sizeof(CERT_CHAIN_PARA);
+
+ /* Create additional store for CertGetCertificateChain() */
+ store_add = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, 0, NULL);
+ if (!store_add) {
+ xmlSecMSCryptoError("CertOpenStore", NULL);
+ goto end;
+ }
+ if (!CertAddStoreToCollection(store_add, store_doc, 0, 0)) {
+ xmlSecMSCryptoError("CertAddStoreToCollection", NULL);
+ goto end;
+ }
+ if (!CertAddStoreToCollection(store_add, store_untrusted, 0, 0)) {
+ xmlSecMSCryptoError("CertAddStoreToCollection", NULL);
+ goto end;
+ }
/* Build a chain using CertGetCertificateChain
and the certificate retrieved. */
- if(!CertGetCertificateChain(
- NULL, /* use the default chain engine */
+ if(!CertGetCertificateChain(NULL, /* use the default chain engine */
cert,
- pfTime,
+ pfTime,
store_add,
&chainPara,
CERT_CHAIN_REVOCATION_CHECK_CHAIN,
- NULL,
- &pChainContext))
- {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "building certificate chain, checking root",
- "CertGetCertificateChain",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto end;
+ NULL,
+ &pChainContext)) {
+ xmlSecMSCryptoError("CertGetCertificateChain", NULL);
+ goto end;
+ }
+ if (pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_REVOCATION_STATUS_UNKNOWN) {
+ CertFreeCertificateChain(pChainContext); pChainContext = NULL;
+ if(!CertGetCertificateChain(NULL, /* use the default chain engine */
+ cert,
+ pfTime,
+ store_add,
+ &chainPara,
+ CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT,
+ NULL,
+ &pChainContext)) {
+ xmlSecMSCryptoError("CertGetCertificateChain", NULL);
+ goto end;
}
- if (pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_REVOCATION_STATUS_UNKNOWN) {
- CertFreeCertificateChain(pChainContext); pChainContext = NULL;
- if(!CertGetCertificateChain(
- NULL, /* use the default chain engine */
- cert,
- pfTime,
- store_add,
- &chainPara,
- CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT,
- NULL,
- &pChainContext))
- {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "building certificate chain, excluding root",
- "CertGetCertificateChain",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto end;
- }
}
- if (pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_NO_ERROR)
- rc = TRUE;
+ if (pChainContext->TrustStatus.dwErrorStatus == CERT_TRUST_NO_ERROR) {
+ rc = TRUE;
+ }
end:
- if (pChainContext) CertFreeCertificateChain(pChainContext);
- if (store_add) CertCloseStore(store_add, 0);
- return (rc);
+ if (pChainContext) CertFreeCertificateChain(pChainContext);
+ if (store_add) CertCloseStore(store_add, 0);
+ return (rc);
}
/**
@@ -560,8 +528,11 @@ xmlSecMSCryptoX509StoreVerify(xmlSecKeyDataStorePtr store, HCERTSTORE certs,
CertFreeCertificateContext(nextCert);
}
- if((selected == 1) && xmlSecMSCryptoX509StoreConstructCertsChain(store, cert, certs, keyInfoCtx)) {
- return(cert);
+ if(selected == 1) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) != 0
+ || xmlSecMSCryptoX509StoreConstructCertsChain(store, cert, certs, keyInfoCtx)) {
+ return(cert);
+ }
}
}
@@ -596,25 +567,20 @@ xmlSecMSCryptoX509StoreAdoptCert(xmlSecKeyDataStorePtr store, PCCERT_CONTEXT pCe
} else if(type == xmlSecKeyDataTypeNone) {
certStore = ctx->untrusted;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "type=%d", type);
+ xmlSecInvalidIntegerTypeError("type", type,
+ "xmlSecKeyDataTypeTrusted, xmlSecKeyDataTypeNone",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
/* TODO: The context to be added here is not duplicated first,
- * hopefully this will not lead to errors when closing teh store
+ * hopefully this will not lead to errors when closing the store
* and freeing the mem for all the context in the store.
*/
xmlSecAssert2(certStore != NULL, -1);
if (!CertAddCertificateContextToStore(certStore, pCert, CERT_STORE_ADD_ALWAYS, NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddCertificateContextToStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddCertificateContextToStore",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -643,11 +609,8 @@ xmlSecMSCryptoX509StoreAdoptKeyStore (xmlSecKeyDataStorePtr store, HCERTSTORE ke
xmlSecAssert2(ctx->trusted != NULL, -1);
if(!CertAddStoreToCollection ( ctx->trusted , keyStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 2)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -675,11 +638,8 @@ xmlSecMSCryptoX509StoreAdoptTrustedStore (xmlSecKeyDataStorePtr store, HCERTSTOR
xmlSecAssert2(ctx->trusted != NULL, -1);
if( !CertAddStoreToCollection ( ctx->trusted , trustedStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 3 ) ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -707,11 +667,8 @@ xmlSecMSCryptoX509StoreAdoptUntrustedStore (xmlSecKeyDataStorePtr store, HCERTST
xmlSecAssert2(ctx->untrusted != NULL, -1);
if( !CertAddStoreToCollection ( ctx->untrusted , untrustedStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 2 ) ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -735,7 +692,7 @@ xmlSecMSCryptoX509StoreEnableSystemTrustedCerts (xmlSecKeyDataStorePtr store, in
xmlSecAssert(ctx != NULL);
xmlSecAssert(ctx->untrusted != NULL);
- /* it is other way around to make default value 0 mimic old behaiviour */
+ /* it is other way around to make default value 0 mimic old behaviour */
ctx->dont_use_system_trusted_certs = !val;
}
@@ -759,11 +716,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
0,
NULL);
if(ctx->trusted == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertOpenStore",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -774,11 +728,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
CERT_STORE_CREATE_NEW_FLAG,
NULL);
if(hTrustedMemStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertOpenStore",
+ xmlSecKeyDataStoreGetName(store));
CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
ctx->trusted = NULL ;
return(-1);
@@ -786,11 +737,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
/* add the memory trusted certs store to trusted certs store collection */
if( !CertAddStoreToCollection( ctx->trusted, hTrustedMemStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1 ) ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
CertCloseStore(hTrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
ctx->trusted = NULL ;
@@ -805,11 +753,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
0,
NULL);
if(ctx->untrusted == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertOpenStore",
+ xmlSecKeyDataStoreGetName(store));
CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
ctx->trusted = NULL ;
return(-1);
@@ -822,11 +767,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
CERT_STORE_CREATE_NEW_FLAG,
NULL);
if(hUntrustedMemStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertOpenStore",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertOpenStore",
+ xmlSecKeyDataStoreGetName(store));
CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
CertCloseStore(ctx->untrusted, CERT_CLOSE_STORE_FORCE_FLAG);
ctx->trusted = NULL ;
@@ -836,11 +778,8 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
/* add the memory trusted certs store to untrusted certs store collection */
if( !CertAddStoreToCollection( ctx->untrusted, hUntrustedMemStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1 ) ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CertAddStoreToCollection",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertAddStoreToCollection",
+ xmlSecKeyDataStoreGetName(store));
CertCloseStore(ctx->untrusted, CERT_CLOSE_STORE_FORCE_FLAG);
CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
CertCloseStore(hUntrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
@@ -899,28 +838,19 @@ xmlSecMSCryptoCertStrToName(DWORD dwCertEncodingType, LPTSTR pszX500, DWORD dwSt
if (!CertStrToName(dwCertEncodingType, pszX500, dwStrType,
NULL, NULL, len, &ppszError)) {
/* this might not be an error, string might just not exist */
- DWORD dw = GetLastError();
return(NULL);
}
str = (BYTE *)xmlMalloc(sizeof(TCHAR) * ((*len) + 1));
if(str == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "len=%ld", (*len));
+ xmlSecMallocError(sizeof(TCHAR) * ((*len) + 1), NULL);
return(NULL);
}
memset(str, 0, (*len) + 1);
if (!CertStrToName(dwCertEncodingType, pszX500, dwStrType,
NULL, str, len, NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CertStrToName",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertStrToName", NULL);
xmlFree(str);
return(NULL);
}
@@ -1163,12 +1093,7 @@ xmlSecMSCryptoX509GetCertName(const xmlChar * name) {
*/
name2 = xmlStrdup(name);
if(name2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "xmlStrlen(name)=%d",
- xmlStrlen(name));
+ xmlSecStrdupError(name, NULL);
return(NULL);
}
while( (p = (xmlChar*)xmlStrstr(name2, BAD_CAST "emailAddress=")) != NULL) {
@@ -1176,13 +1101,9 @@ xmlSecMSCryptoX509GetCertName(const xmlChar * name) {
}
/* get name */
- res = xmlSecMSCryptoConvertUtf8ToTstr(name2);
+ res = xmlSecWin32ConvertUtf8ToTstr(name2);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoConvertUtf8ToTstr",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecWin32ConvertUtf8ToTstr", NULL);
xmlFree(name2);
return(NULL);
}
@@ -1209,11 +1130,7 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store,
/* get unicode subject name */
wcSubjectName = xmlSecMSCryptoX509GetCertName(subjectName);
if(wcSubjectName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509GetCertName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "wcSubjectName");
+ xmlSecInternalError("xmlSecMSCryptoX509GetCertName(subjectName)", NULL);
return(NULL);
}
@@ -1234,21 +1151,13 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store,
/* get serial number */
ret = xmlSecBnInitialize(&issuerSerialBn, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnInitialize", NULL);
return(NULL);
}
ret = xmlSecBnFromDecString(&issuerSerialBn, issuerSerial);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnInitialize", NULL);
xmlSecBnFinalize(&issuerSerialBn);
return(NULL);
}
@@ -1259,11 +1168,7 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store,
*/
ret = xmlSecBnReverse(&issuerSerialBn);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBnReverse",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBnReverse", NULL);
xmlSecBnFinalize(&issuerSerialBn);
return(NULL);
}
@@ -1271,11 +1176,7 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store,
/* get issuer name */
wcIssuerName = xmlSecMSCryptoX509GetCertName(issuerName);
if(wcIssuerName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecMSCryptoX509GetCertName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "wcIssuerName");
+ xmlSecInternalError("xmlSecMSCryptoX509GetCertName(issuerName)", NULL);
xmlSecBnFinalize(&issuerSerialBn);
return(NULL);
}
@@ -1299,23 +1200,14 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store,
binSki = xmlStrdup(ski);
if(binSki == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(ski, NULL);
return (NULL);
}
/* trick: base64 decode "in place" */
binSkiLen = xmlSecBase64Decode(binSki, (xmlSecByte*)binSki, xmlStrlen(binSki));
if(binSkiLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
xmlFree(binSki);
return(NULL);
}
@@ -1357,44 +1249,28 @@ xmlSecMSCryptoX509GetNameString(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD
/* get size first */
dwSize = CertGetNameString(pCertContext, dwType, dwFlags, pvTypePara, NULL, 0);
if(dwSize <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "CertGetNameString",
- NULL,
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertGetNameString", NULL);
return (NULL);
}
/* allocate buffer */
name = (LPTSTR)xmlMalloc(sizeof(TCHAR) * (dwSize + 1));
if(name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(sizeof(TCHAR) * (dwSize + 1), NULL);
return (NULL);
}
/* actually get the name */
dwSize = CertGetNameString(pCertContext, dwType, dwFlags, pvTypePara, name, dwSize);
if(dwSize <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "CertGetNameString",
- NULL,
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMSCryptoError("CertGetNameString", NULL);
xmlFree(name);
return (NULL);
}
- res = xmlSecMSCryptoConvertTstrToUtf8(name);
+ res = xmlSecWin32ConvertTstrToUtf8(name);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlSecMSCryptoConvertTstrToUtf8",
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecWin32ConvertTstrToUtf8", NULL);
xmlFree(name);
return (NULL);
}
diff --git a/src/mscrypto/xmlsec-mingw.h b/src/mscrypto/xmlsec-mingw.h
index da7d1d0b..e5350348 100644
--- a/src/mscrypto/xmlsec-mingw.h
+++ b/src/mscrypto/xmlsec-mingw.h
@@ -1,5 +1,5 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
diff --git a/src/nodeset.c b/src/nodeset.c
index 800f1507..be5138ad 100644
--- a/src/nodeset.c
+++ b/src/nodeset.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Enchanced nodes set
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:nodeset
+ * @Short_description: XML nodes set functions
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -20,6 +26,7 @@
#include <xmlsec/xmlsec.h>
#include <xmlsec/nodeset.h>
#include <xmlsec/errors.h>
+#include <xmlsec/private.h>
#define xmlSecGetParent(node) \
(((node)->type != XML_NAMESPACE_DECL) ? \
@@ -52,12 +59,7 @@ xmlSecNodeSetCreate(xmlDocPtr doc, xmlNodeSetPtr nodes, xmlSecNodeSetType type)
nset = (xmlSecNodeSetPtr)xmlMalloc(sizeof(xmlSecNodeSet));
if(nset == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecNodeSet)=%d",
- (int)sizeof(xmlSecNodeSet));
+ xmlSecMallocError(sizeof(xmlSecNodeSet), NULL);
return(NULL);
}
memset(nset, 0, sizeof(xmlSecNodeSet));
@@ -193,11 +195,8 @@ xmlSecNodeSetOneContains(xmlSecNodeSetPtr nset, xmlNodePtr node, xmlNodePtr pare
}
return(1);
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "type=%d", nset->type);
+ xmlSecInvalidIntegerTypeError("node set type", nset->type,
+ "supported nodeset type", NULL);
}
return(0);
@@ -246,11 +245,8 @@ xmlSecNodeSetContains(xmlSecNodeSetPtr nset, xmlNodePtr node, xmlNodePtr parent)
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_OPERATION,
- "operation=%d", cur->op);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_OPERATION, NULL,
+ "node set operation=%d", (int)cur->op);
return(-1);
}
cur = cur->next;
@@ -261,7 +257,7 @@ xmlSecNodeSetContains(xmlSecNodeSetPtr nset, xmlNodePtr node, xmlNodePtr parent)
/**
* xmlSecNodeSetAdd:
- * @nset: the pointer to currrent nodes set (or NULL).
+ * @nset: the pointer to current nodes set (or NULL).
* @newNSet: the pointer to new nodes set.
* @op: the operation type.
*
@@ -293,7 +289,7 @@ xmlSecNodeSetAdd(xmlSecNodeSetPtr nset, xmlSecNodeSetPtr newNSet,
/**
* xmlSecNodeSetAddList:
- * @nset: the pointer to currrent nodes set (or NULL).
+ * @nset: the pointer to current nodes set (or NULL).
* @newNSet: the pointer to new nodes set.
* @op: the operation type.
*
@@ -310,22 +306,14 @@ xmlSecNodeSetAddList(xmlSecNodeSetPtr nset, xmlSecNodeSetPtr newNSet, xmlSecNode
tmp1 = xmlSecNodeSetCreate(newNSet->doc, NULL, xmlSecNodeSetList);
if(tmp1 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetCreate", NULL);
return(NULL);
}
tmp1->children = newNSet;
tmp2 = xmlSecNodeSetAdd(nset, tmp1, op);
if(tmp2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetAdd", NULL);
xmlSecNodeSetDestroy(tmp1);
return(NULL);
}
@@ -477,11 +465,7 @@ xmlSecNodeSetGetChildren(xmlDocPtr doc, const xmlNodePtr parent, int withComment
nodes = xmlXPathNodeSetCreate(parent);
if(nodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPathNodeSetCreate",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlXPathNodeSetCreate", NULL);
return(NULL);
}
@@ -512,13 +496,21 @@ static int
xmlSecNodeSetDumpTextNodesWalkCallback(xmlSecNodeSetPtr nset, xmlNodePtr cur,
xmlNodePtr parent ATTRIBUTE_UNUSED,
void* data) {
+ int ret;
xmlSecAssert2(nset != NULL, -1);
xmlSecAssert2(cur != NULL, -1);
xmlSecAssert2(data != NULL, -1);
- if(cur->type == XML_TEXT_NODE) {
- xmlOutputBufferWriteString((xmlOutputBufferPtr)data,
- (char*)(cur->content));
+ UNREFERENCED_PARAMETER(parent);
+
+ if(cur->type != XML_TEXT_NODE) {
+ return(0);
+ }
+ ret = xmlOutputBufferWriteString((xmlOutputBufferPtr)data,
+ (char*)(cur->content));
+ if(ret < 0) {
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
+ return(-1);
}
return(0);
}
@@ -583,11 +575,8 @@ xmlSecNodeSetDebugDump(xmlSecNodeSetPtr nset, FILE *output) {
return;
default:
fprintf(output, "(unknown=%d)\n", nset->type);
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "type=%d", nset->type);
+ xmlSecInvalidIntegerTypeError("node set type", nset->type,
+ "supported nodeset type", NULL);
}
l = xmlXPathNodeSetGetLength(nset->nodes);
diff --git a/src/nss/Makefile.am b/src/nss/Makefile.am
index 8cd85863..e666f33c 100644
--- a/src/nss/Makefile.am
+++ b/src/nss/Makefile.am
@@ -37,10 +37,6 @@ libxmlsec1_nss_la_SOURCES =\
globals.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_nss_la_SOURCES += ../strings.c
-endif
-
libxmlsec1_nss_la_LIBADD = \
$(NSS_LIBS) \
$(LIBXSLT_LIBS) \
diff --git a/src/nss/README b/src/nss/README
index 65a0f45e..536552ed 100644
--- a/src/nss/README
+++ b/src/nss/README
@@ -1,6 +1,6 @@
WHAT VERSION OF NSS?
------------------------------------------------------------------------
-NSS 3.9 or greater and NSPR 4.4.1 or greater are required.
+NSS 3.11.1 or greater and NSPR 4.4.1 or greater are required.
KEYS MANAGER
------------------------------------------------------------------------
diff --git a/src/nss/app.c b/src/nss/app.c
index 0a9046fc..57b540a5 100644
--- a/src/nss/app.c
+++ b/src/nss/app.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for NSS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -73,22 +81,15 @@ xmlSecNssAppInit(const char* config) {
if(config) {
rv = NSS_InitReadWrite(config);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "NSS_InitReadWrite",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "config=%s",
- xmlSecErrorsSafeString(config));
+ xmlSecNssError2("NSS_InitReadWrite", NULL,
+ "config=%s",
+ xmlSecErrorsSafeString(config));
return(-1);
}
} else {
rv = NSS_NoDB_Init(NULL);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "NSS_NoDB_Init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("NSS_NoDB_Init", NULL);
return(-1);
}
}
@@ -131,11 +132,7 @@ xmlSecNssAppShutdown(void) {
PK11_LogoutAll();
rv = NSS_Shutdown();
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "NSS_Shutdown",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("NSS_Shutdown", NULL);
return(-1);
}
return(0);
@@ -149,11 +146,7 @@ xmlSecNssAppCreateSECItem(SECItem *contents, const xmlSecByte* data, xmlSecSize
contents->data = 0;
if (!SECITEM_AllocItem(NULL, contents, dataSize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECITEM_AllocItem",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SECITEM_AllocItem", NULL);
return(-1);
}
@@ -178,33 +171,21 @@ xmlSecNssAppReadSECItem(SECItem *contents, const char *fn) {
file = PR_Open(fn, PR_RDONLY, 00660);
if (file == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PR_Open",
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(fn));
+ xmlSecNssError2("PR_Open", NULL,
+ "filename=%s", xmlSecErrorsSafeString(fn));
goto done;
}
prStatus = PR_GetOpenFileInfo(file, &info);
if (prStatus != PR_SUCCESS) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PR_GetOpenFileInfo",
- XMLSEC_ERRORS_R_IO_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(fn));
+ xmlSecNssError2("PR_GetOpenFileInfo", NULL,
+ "filename=%s", xmlSecErrorsSafeString(fn));
goto done;
}
contents->data = 0;
if (!SECITEM_AllocItem(NULL, contents, info.size)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECITEM_AllocItem",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SECITEM_AllocItem", NULL);
goto done;
}
@@ -286,21 +267,13 @@ xmlSecNssAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppReadSECItem(&secItem, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppReadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppReadSECItem", NULL);
return(NULL);
}
res = xmlSecNssAppKeyLoadSECItem(&secItem, format, pwd, pwdCallback, pwdCallbackCtx);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeyLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(NULL);
}
@@ -335,21 +308,13 @@ xmlSecNssAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlSecKey
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppCreateSECItem(&secItem, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppCreateSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppCreateSECItem", NULL);
return(NULL);
}
res = xmlSecNssAppKeyLoadSECItem(&secItem, format, pwd, pwdCallback, pwdCallbackCtx);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeyLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(NULL);
}
@@ -385,22 +350,14 @@ xmlSecNssAppKeyLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format,
case xmlSecKeyDataFormatPkcs12:
key = xmlSecNssAppPkcs12LoadSECItem(secItem, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppPkcs12LoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppPkcs12LoadSECItem", NULL);
return(NULL);
}
break;
case xmlSecKeyDataFormatCertDer:
key = xmlSecNssAppKeyFromCertLoadSECItem(secItem, format);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyFromCertLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeyFromCertLoadSECItem", NULL);
return(NULL);
}
break;
@@ -408,21 +365,14 @@ xmlSecNssAppKeyLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format,
case xmlSecKeyDataFormatDer:
key = xmlSecNssAppDerKeyLoadSECItem(secItem);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppDerKeyLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppDerKeyLoadSECItem", NULL);
return(NULL);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyLoad",
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
- return(NULL);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
+ return(NULL);
}
return(key);
@@ -448,11 +398,7 @@ xmlSecNssAppDerKeyLoadSECItem(SECItem* secItem) {
*/
slot = xmlSecNssGetInternalKeySlot();
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssGetInternalKeySlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssGetInternalKeySlot", NULL);
goto done;
}
@@ -472,31 +418,19 @@ xmlSecNssAppDerKeyLoadSECItem(SECItem* secItem) {
/* TRY PUBLIC KEY */
spki = SECKEY_DecodeDERSubjectPublicKeyInfo(secItem);
if (spki == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECKEY_DecodeDERSubjectPublicKeyInfo",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SECKEY_DecodeDERSubjectPublicKeyInfo", NULL);
}
pubkey = SECKEY_ExtractPublicKey(spki);
if (pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECKEY_ExtractPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SECKEY_ExtractPublicKey", NULL);
goto done;
}
}
data = xmlSecNssPKIAdoptKey(privkey, pubkey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssPKIAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIAdoptKey", NULL);
goto done;
}
privkey = NULL;
@@ -504,22 +438,14 @@ xmlSecNssAppDerKeyLoadSECItem(SECItem* secItem) {
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
retval = key;
@@ -573,21 +499,13 @@ xmlSecNssAppKeyCertLoad(xmlSecKeyPtr key, const char* filename, xmlSecKeyDataFor
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppReadSECItem(&secItem, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppReadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppReadSECItem", NULL);
return(-1);
}
ret = xmlSecNssAppKeyCertLoadSECItem(key, &secItem, format);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyCertLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeyCertLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(-1);
}
@@ -620,21 +538,13 @@ xmlSecNssAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlSecSi
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppCreateSECItem(&secItem, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppCreateSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppCreateSECItem", NULL);
return(-1);
}
ret = xmlSecNssAppKeyCertLoadSECItem(key, &secItem, format);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeyCertLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeyCertLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(-1);
}
@@ -665,12 +575,7 @@ xmlSecNssAppKeyCertLoadSECItem(xmlSecKeyPtr key, SECItem* secItem, xmlSecKeyData
data = xmlSecKeyEnsureData(key, xmlSecNssKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecNssKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyEnsureData(xmlSecNssKeyDataX509Id)", NULL);
return(-1);
}
@@ -680,32 +585,22 @@ xmlSecNssAppKeyCertLoadSECItem(xmlSecKeyPtr key, SECItem* secItem, xmlSecKeyData
cert = __CERT_NewTempCertificate(CERT_GetDefaultCertDB(),
secItem, NULL, PR_FALSE, PR_TRUE);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "__CERT_NewTempCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "format=%d", format);
+ xmlSecNssError2("__CERT_NewTempCertificate", NULL,
+ "format=%d", (int)format);
return(-1);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(-1);
}
xmlSecAssert2(cert != NULL, -1);
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CERT_DestroyCertificate(cert);
return(-1);
}
@@ -740,21 +635,13 @@ xmlSecNssAppPkcs12Load(const char *filename, const char *pwd,
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppReadSECItem(&secItem, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppReadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppReadSECItem", NULL);
return(NULL);
}
res = xmlSecNssAppPkcs12LoadSECItem(&secItem, pwd, pwdCallback, pwdCallbackCtx);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppPkcs12LoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppPkcs12LoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(NULL);
}
@@ -790,21 +677,13 @@ xmlSecNssAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize, const
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppCreateSECItem(&secItem, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppCreateSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppCreateSECItem", NULL);
return(NULL);
}
res = xmlSecNssAppPkcs12LoadSECItem(&secItem, pwd, pwdCallback, pwdCallbackCtx);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppPkcs12LoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppPkcs12LoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(NULL);
}
@@ -860,111 +739,69 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
*/
slot = xmlSecNssGetInternalKeySlot();
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssGetInternalKeySlot",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssGetInternalKeySlot", NULL);
goto done;
}
pwditem.data = (unsigned char *)pwd;
pwditem.len = strlen(pwd)+1;
if (!SECITEM_AllocItem(NULL, &uc2_pwditem, 2*pwditem.len)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECITEM_AllocItem",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SECITEM_AllocItem", NULL);
goto done;
}
if (PORT_UCS2_ASCIIConversion(PR_TRUE, pwditem.data, pwditem.len,
uc2_pwditem.data, 2*pwditem.len,
&(uc2_pwditem.len), 0) == PR_FALSE) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PORT_UCS2_ASCIIConversion",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PORT_UCS2_ASCIIConversion", NULL);
goto done;
}
p12ctx = SEC_PKCS12DecoderStart(&uc2_pwditem, slot, NULL,
NULL, NULL, NULL, NULL, NULL);
if (p12ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderStart",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderStart", NULL);
goto done;
}
rv = SEC_PKCS12DecoderUpdate(p12ctx, secItem->data, secItem->len);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderUpdate", NULL);
goto done;
}
rv = SEC_PKCS12DecoderVerify(p12ctx);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderVerify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderVerify", NULL);
goto done;
}
rv = SEC_PKCS12DecoderValidateBags(p12ctx, xmlSecNssAppNicknameCollisionCallback);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderValidateBags",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderValidateBags", NULL);
goto done;
}
rv = SEC_PKCS12DecoderImportBags(p12ctx);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderImportBags",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderImportBags", NULL);
goto done;
}
certlist = SEC_PKCS12DecoderGetCerts(p12ctx);
if (certlist == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_PKCS12DecoderGetCerts",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("SEC_PKCS12DecoderGetCerts", NULL);
goto done;
}
x509Data = xmlSecKeyDataCreate(xmlSecNssKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecNssKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecTransformKlassGetName(xmlSecNssKeyDataX509Id));
goto done;
}
- for (head = CERT_LIST_HEAD(certlist);
- !CERT_LIST_END(head, certlist);
- head = CERT_LIST_NEXT(head)) {
+ for (head = CERT_LIST_HEAD(certlist); !CERT_LIST_END(head, certlist); head = CERT_LIST_NEXT(head)) {
cert = head->cert;
privkey = PK11_FindKeyByAnyCert(cert, NULL);
@@ -978,20 +815,14 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
} else {
pubkey = CERT_ExtractPublicKey(cert);
if (pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_ExtractPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("CERT_ExtractPublicKey",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
data = xmlSecNssPKIAdoptKey(privkey, pubkey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssPKIAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIAdoptKey",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
@@ -1000,23 +831,15 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
tmpcert = CERT_DupCertificate(cert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecNssError("CERT_DupCertificate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecNssKeyDataX509AdoptKeyCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
CERT_DestroyCertificate(tmpcert);
goto done;
}
@@ -1026,22 +849,14 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
tmpcert = CERT_DupCertificate(cert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecNssError("CERT_DupCertificate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecNssKeyDataX509AdoptCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
CERT_DestroyCertificate(tmpcert);
goto done;
}
@@ -1049,32 +864,21 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
} /* end for loop */
if (data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppPkcs12Load",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "private key not found in PKCS12 file");
+ /* private key not found in PKCS12 file */
+ xmlSecInternalError("xmlSecNssAppPkcs12Load(private key)", NULL);
goto done;
}
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -1083,12 +887,8 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
ret = xmlSecKeyAdoptData(key, x509Data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -1148,31 +948,21 @@ xmlSecNssAppKeyFromCertLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format)
cert = __CERT_NewTempCertificate(CERT_GetDefaultCertDB(),
secItem, NULL, PR_FALSE, PR_TRUE);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "__CERT_NewTempCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "format=%d", format);
+ xmlSecNssError2("__CERT_NewTempCertificate", NULL,
+ "format=%d", (int)format);
return(NULL);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
/* get key value */
keyData = xmlSecNssX509CertGetKey(cert);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CertGetKey", NULL);
CERT_DestroyCertificate(cert);
return(NULL);
}
@@ -1180,11 +970,7 @@ xmlSecNssAppKeyFromCertLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format)
/* create key */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
xmlSecKeyDataDestroy(keyData);
CERT_DestroyCertificate(cert);
return(NULL);
@@ -1193,11 +979,7 @@ xmlSecNssAppKeyFromCertLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format)
/* set key value */
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue", NULL);
xmlSecKeyDestroy(key);
xmlSecKeyDataDestroy(keyData);
CERT_DestroyCertificate(cert);
@@ -1207,11 +989,7 @@ xmlSecNssAppKeyFromCertLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format)
/* create cert data */
certData = xmlSecKeyEnsureData(key, xmlSecNssKeyDataX509Id);
if(certData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData", NULL);
xmlSecKeyDestroy(key);
CERT_DestroyCertificate(cert);
return(NULL);
@@ -1220,11 +998,7 @@ xmlSecNssAppKeyFromCertLoadSECItem(SECItem* secItem, xmlSecKeyDataFormat format)
/* put cert in the cert data */
ret = xmlSecNssKeyDataX509AdoptCert(certData, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert", NULL);
xmlSecKeyDestroy(key);
CERT_DestroyCertificate(cert);
return(NULL);
@@ -1261,21 +1035,13 @@ xmlSecNssAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppReadSECItem(&secItem, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppReadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppReadSECItem", NULL);
return(-1);
}
ret = xmlSecNssAppKeysMngrCertLoadSECItem(mngr, &secItem, format, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeysMngrCertLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeysMngrCertLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(-1);
}
@@ -1311,21 +1077,13 @@ xmlSecNssAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte* dat
memset(&secItem, 0, sizeof(secItem));
ret = xmlSecNssAppCreateSECItem(&secItem, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppCreateSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppCreateSECItem", NULL);
return(-1);
}
ret = xmlSecNssAppKeysMngrCertLoadSECItem(mngr, &secItem, format, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAppKeysMngrCertLoadSECItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAppKeysMngrCertLoadSECItem", NULL);
SECITEM_FreeItem(&secItem, PR_FALSE);
return(-1);
}
@@ -1360,11 +1118,7 @@ xmlSecNssAppKeysMngrCertLoadSECItem(xmlSecKeysMngrPtr mngr, SECItem* secItem,
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNssX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecNssX509StoreId)", NULL);
return(-1);
}
@@ -1373,30 +1127,20 @@ xmlSecNssAppKeysMngrCertLoadSECItem(xmlSecKeysMngrPtr mngr, SECItem* secItem,
cert = __CERT_NewTempCertificate(CERT_GetDefaultCertDB(),
secItem, NULL, PR_FALSE, PR_TRUE);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "__CERT_NewTempCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "format=%d", format);
+ xmlSecNssError2("__CERT_NewTempCertificate", NULL,
+ "format=%d", (int)format);
return(-1);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(-1);
}
ret = xmlSecNssX509StoreAdoptCert(x509Store, cert, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509StoreAdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509StoreAdoptCert", NULL);
CERT_DestroyCertificate(cert);
return(-1);
}
@@ -1427,21 +1171,13 @@ xmlSecNssAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecNssKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNssKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecNssX509StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -1449,11 +1185,7 @@ xmlSecNssAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecNssKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeysMngrInit", NULL);
return(-1);
}
@@ -1481,21 +1213,13 @@ xmlSecNssAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecNssKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -1522,21 +1246,14 @@ xmlSecNssAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecNssKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecNssKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -1563,21 +1280,14 @@ xmlSecNssAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename, xm
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecNssKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename%s", xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecNssKeysStoreSave", NULL,
+ "filename%s", xmlSecErrorsSafeString(filename));
return(-1);
}
diff --git a/src/nss/bignum.c b/src/nss/bignum.c
index 261155e6..761711ef 100644
--- a/src/nss/bignum.c
+++ b/src/nss/bignum.c
@@ -1,13 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Reading/writing bignum values
*
* This is free software; see Copyright file in the source
* distribution for precise wording.
*
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:bignum
+ * @Short_description: Big numbers support functions implementation for NSS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -19,6 +25,7 @@
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
#include <xmlsec/buffer.h>
#include <xmlsec/base64.h>
#include <xmlsec/errors.h>
@@ -29,7 +36,7 @@
/**
* xmlSecNssNodeGetBigNumValue:
* @arena: the arena from which to allocate memory
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
* @a: a SECItem object to hold the BigNum value
*
* Converts the node content from CryptoBinary format
@@ -53,21 +60,13 @@ xmlSecNssNodeGetBigNumValue(PRArenaPool *arena, const xmlNodePtr cur,
ret = xmlSecBufferInitialize(&buf, 128);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferBase64NodeContentRead(&buf, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead", NULL);
xmlSecBufferFinalize(&buf);
return(NULL);
}
@@ -115,11 +114,7 @@ xmlSecNssNodeSetBigNumValue(xmlNodePtr cur, const SECItem *a, int addLineBreaks)
ret = xmlSecBufferInitialize(&buf, a->len + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", a->len + 1);
+ xmlSecInternalError2("xmlSecBufferInitialize", NULL, "size=%d", a->len + 1);
return(-1);
}
@@ -127,34 +122,26 @@ xmlSecNssNodeSetBigNumValue(xmlNodePtr cur, const SECItem *a, int addLineBreaks)
ret = xmlSecBufferSetSize(&buf, a->len);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", a->len);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", a->len);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
} else {
xmlNodeSetContent(cur, xmlSecStringEmpty);
}
ret = xmlSecBufferBase64NodeContentWrite(&buf, cur, xmlSecBase64GetDefaultLineSize());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentWrite", NULL);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeAddContent(cur, xmlSecStringCR);
+ xmlNodeAddContent(cur, xmlSecGetDefaultLineFeed());
}
xmlSecBufferFinalize(&buf);
diff --git a/src/nss/ciphers.c b/src/nss/ciphers.c
index cf679368..1c7d27b9 100644
--- a/src/nss/ciphers.c
+++ b/src/nss/ciphers.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -43,7 +51,6 @@ struct _xmlSecNssBlockCipherCtx {
xmlSecByte key[XMLSEC_NSS_MAX_KEY_SIZE];
xmlSecSize keySize;
xmlSecByte iv[XMLSEC_NSS_MAX_IV_SIZE];
- xmlSecSize ivSize;
};
static int xmlSecNssBlockCipherCtxInit (xmlSecNssBlockCipherCtxPtr ctx,
xmlSecBufferPtr in,
@@ -65,10 +72,10 @@ static int xmlSecNssBlockCipherCtxFinal (xmlSecNssBlockCipherCtx
xmlSecTransformCtxPtr transformCtx);
static int
xmlSecNssBlockCipherCtxInit(xmlSecNssBlockCipherCtxPtr ctx,
- xmlSecBufferPtr in, xmlSecBufferPtr out,
- int encrypt,
- const xmlChar* cipherName,
- xmlSecTransformCtxPtr transformCtx) {
+ xmlSecBufferPtr in, xmlSecBufferPtr out,
+ int encrypt,
+ const xmlChar* cipherName,
+ xmlSecTransformCtxPtr transformCtx) {
SECItem keyItem;
SECItem ivItem;
PK11SlotInfo* slot;
@@ -94,22 +101,16 @@ xmlSecNssBlockCipherCtxInit(xmlSecNssBlockCipherCtxPtr ctx,
/* generate random iv */
rv = PK11_GenerateRandom(ctx->iv, ivLen);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_GenerateRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", ivLen);
+ xmlSecNssError2("PK11_GenerateRandom", cipherName,
+ "size=%d", ivLen);
return(-1);
}
/* write iv to the output */
ret = xmlSecBufferAppend(out, ctx->iv, ivLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ivLen);
+ xmlSecInternalError2("xmlSecBufferAppend", cipherName,
+ "size=%d", ivLen);
return(-1);
}
@@ -127,11 +128,8 @@ xmlSecNssBlockCipherCtxInit(xmlSecNssBlockCipherCtxPtr ctx,
/* and remove from input */
ret = xmlSecBufferRemoveHead(in, ivLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ivLen);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", ivLen);
return(-1);
}
}
@@ -141,26 +139,18 @@ xmlSecNssBlockCipherCtxInit(xmlSecNssBlockCipherCtxPtr ctx,
keyItem.len = ctx->keySize;
memset(&ivItem, 0, sizeof(ivItem));
ivItem.data = ctx->iv;
- ivItem.len = ctx->ivSize;
+ ivItem.len = ivLen;
slot = PK11_GetBestSlot(ctx->cipher, NULL);
if(slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", cipherName);
return(-1);
}
symKey = PK11_ImportSymKey(slot, ctx->cipher, PK11_OriginDerive,
- CKA_SIGN, &keyItem, NULL);
+ CKA_ENCRYPT, &keyItem, NULL);
if(symKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_ImportSymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ImportSymKey", cipherName);
PK11_FreeSlot(slot);
return(-1);
}
@@ -169,11 +159,7 @@ xmlSecNssBlockCipherCtxInit(xmlSecNssBlockCipherCtxPtr ctx,
(encrypt) ? CKA_ENCRYPT : CKA_DECRYPT,
symKey, &ivItem);
if(ctx->cipherCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_CreateContextBySymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CreateContextBySymKey", cipherName);
PK11_FreeSymKey(symKey);
PK11_FreeSlot(slot);
return(-1);
@@ -228,11 +214,8 @@ xmlSecNssBlockCipherCtxUpdate(xmlSecNssBlockCipherCtxPtr ctx,
/* we write out the input size plus may be one block */
ret = xmlSecBufferSetMaxSize(out, outSize + inSize + blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + inSize + blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + inSize + blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -240,11 +223,7 @@ xmlSecNssBlockCipherCtxUpdate(xmlSecNssBlockCipherCtxPtr ctx,
rv = PK11_CipherOp(ctx->cipherCtx, outBuf, &outLen, inSize + blockLen,
xmlSecBufferGetData(in), inSize);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_CipherOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CipherOp", cipherName);
return(-1);
}
xmlSecAssert2((xmlSecSize)outLen == inSize, -1);
@@ -252,22 +231,16 @@ xmlSecNssBlockCipherCtxUpdate(xmlSecNssBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
return(0);
@@ -307,11 +280,8 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
/* create padding */
ret = xmlSecBufferSetMaxSize(in, blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", blockLen);
return(-1);
}
inBuf = xmlSecBufferGetData(in);
@@ -320,11 +290,8 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
if((xmlSecSize)blockLen > (inSize + 1)) {
rv = PK11_GenerateRandom(inBuf + inSize, blockLen - inSize - 1);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_GenerateRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", blockLen - inSize - 1);
+ xmlSecNssError2("PK11_GenerateRandom", cipherName,
+ "size=%d", ((int)blockLen - inSize - 1));
return(-1);
}
}
@@ -332,11 +299,7 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
inSize = blockLen;
} else {
if(inSize != (xmlSecSize)blockLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data=%d;block=%d", inSize, blockLen);
+ xmlSecInvalidSizeError("Input data", inSize, blockLen, cipherName);
return(-1);
}
}
@@ -344,11 +307,8 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
/* process last block */
ret = xmlSecBufferSetMaxSize(out, outSize + 2 * blockLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + 2 * blockLen);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize", cipherName,
+ "size=%d", outSize + 2 * blockLen);
return(-1);
}
outBuf = xmlSecBufferGetData(out) + outSize;
@@ -356,11 +316,7 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
rv = PK11_CipherOp(ctx->cipherCtx, outBuf, &outLen, 2 * blockLen,
xmlSecBufferGetData(in), inSize);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "PK11_CipherOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CipherOp", cipherName);
return(-1);
}
xmlSecAssert2((xmlSecSize)outLen == inSize, -1);
@@ -368,12 +324,8 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
if(encrypt == 0) {
/* check padding */
if(outLen < outBuf[blockLen - 1]) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "padding=%d;buffer=%d",
- outBuf[blockLen - 1], outLen);
+ xmlSecInvalidSizeLessThanError("Input data padding",
+ inSize, outBuf[blockLen - 1], cipherName);
return(-1);
}
outLen -= outBuf[blockLen - 1];
@@ -382,22 +334,16 @@ xmlSecNssBlockCipherCtxFinal(xmlSecNssBlockCipherCtxPtr ctx,
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize + outLen);
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", outSize + outLen);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName,
+ "size=%d", inSize);
return(-1);
}
@@ -487,11 +433,7 @@ xmlSecNssBlockCipherInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_AES */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
@@ -563,12 +505,8 @@ xmlSecNssBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) < ctx->keySize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=%d;expected=%d",
- xmlSecBufferGetSize(buffer), ctx->keySize);
+ xmlSecInvalidKeyDataSizeError(xmlSecBufferGetSize(buffer), ctx->keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -606,20 +544,14 @@ xmlSecNssBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNssBlockCipherCtxInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssBlockCipherCtxInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
if((ctx->ctxInitialized == 0) && (last != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "not enough data to initialize transform");
+ xmlSecInvalidDataError("not enough data to initialize transform",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -628,11 +560,8 @@ xmlSecNssBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNssBlockCipherCtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssBlockCipherCtxUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -642,11 +571,8 @@ xmlSecNssBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNssBlockCipherCtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssBlockCipherCtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -658,11 +584,7 @@ xmlSecNssBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
/* the only way we can get here is if there is no enough data in the input */
xmlSecAssert2(last == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/nss/crypto.c b/src/nss/crypto.c
index ea79519f..a00824dd 100644
--- a/src/nss/crypto.c
+++ b/src/nss/crypto.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for NSS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -75,6 +83,10 @@ xmlSecCryptoGetFunctions_nss(void) {
gXmlSecNssFunctions->keyDataDsaGetKlass = xmlSecNssKeyDataDsaGetKlass;
#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_ECDSA
+ gXmlSecNssFunctions->keyDataEcdsaGetKlass = xmlSecNssKeyDataEcdsaGetKlass;
+#endif /* XMLSEC_NO_ECDSA */
+
#ifndef XMLSEC_NO_HMAC
gXmlSecNssFunctions->keyDataHmacGetKlass = xmlSecNssKeyDataHmacGetKlass;
#endif /* XMLSEC_NO_HMAC */
@@ -121,9 +133,33 @@ xmlSecCryptoGetFunctions_nss(void) {
/******************************* DSA ********************************/
#ifndef XMLSEC_NO_DSA
+#ifndef XMLSEC_NO_SHA1
gXmlSecNssFunctions->transformDsaSha1GetKlass = xmlSecNssTransformDsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecNssFunctions->transformDsaSha256GetKlass = xmlSecNssTransformDsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
#endif /* XMLSEC_NO_DSA */
+ /******************************* ECDSA ******************************/
+#ifndef XMLSEC_NO_ECDSA
+#ifndef XMLSEC_NO_SHA1
+ gXmlSecNssFunctions->transformEcdsaSha1GetKlass = xmlSecNssTransformEcdsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ gXmlSecNssFunctions->transformEcdsaSha224GetKlass = xmlSecNssTransformEcdsaSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+#ifndef XMLSEC_NO_SHA256
+ gXmlSecNssFunctions->transformEcdsaSha256GetKlass = xmlSecNssTransformEcdsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+ gXmlSecNssFunctions->transformEcdsaSha384GetKlass = xmlSecNssTransformEcdsaSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+ gXmlSecNssFunctions->transformEcdsaSha512GetKlass = xmlSecNssTransformEcdsaSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+#endif /* XMLSEC_NO_ECDSA */
+
/******************************* HMAC ********************************/
#ifndef XMLSEC_NO_HMAC
@@ -139,6 +175,10 @@ xmlSecCryptoGetFunctions_nss(void) {
gXmlSecNssFunctions->transformHmacSha1GetKlass = xmlSecNssTransformHmacSha1GetKlass;
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ gXmlSecNssFunctions->transformHmacSha224GetKlass = xmlSecNssTransformHmacSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
gXmlSecNssFunctions->transformHmacSha256GetKlass = xmlSecNssTransformHmacSha256GetKlass;
#endif /* XMLSEC_NO_SHA256 */
@@ -164,6 +204,10 @@ xmlSecCryptoGetFunctions_nss(void) {
gXmlSecNssFunctions->transformRsaSha1GetKlass = xmlSecNssTransformRsaSha1GetKlass;
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ gXmlSecNssFunctions->transformRsaSha224GetKlass = xmlSecNssTransformRsaSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
gXmlSecNssFunctions->transformRsaSha256GetKlass = xmlSecNssTransformRsaSha256GetKlass;
#endif /* XMLSEC_NO_SHA256 */
@@ -193,6 +237,9 @@ xmlSecCryptoGetFunctions_nss(void) {
#ifndef XMLSEC_NO_SHA1
gXmlSecNssFunctions->transformSha1GetKlass = xmlSecNssTransformSha1GetKlass;
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ gXmlSecNssFunctions->transformSha224GetKlass = xmlSecNssTransformSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
#ifndef XMLSEC_NO_SHA256
gXmlSecNssFunctions->transformSha256GetKlass = xmlSecNssTransformSha256GetKlass;
#endif /* XMLSEC_NO_SHA256 */
@@ -246,11 +293,7 @@ int
xmlSecNssInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
@@ -259,11 +302,7 @@ xmlSecNssInit (void) {
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_nss()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
@@ -303,21 +342,13 @@ xmlSecNssKeysMngrInit(xmlSecKeysMngrPtr mngr) {
x509Store = xmlSecKeyDataStoreCreate(xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNssX509StoreId");
+ xmlSecInternalError("xmlSecKeyDataStoreCreate(xmlSecNssX509StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptDataStore(mngr, x509Store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptDataStore", NULL);
xmlSecKeyDataStoreDestroy(x509Store);
return(-1);
}
@@ -342,22 +373,14 @@ xmlSecNssGetInternalKeySlot()
slot = PK11_GetInternalKeySlot();
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_GetInternalKeySlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_GetInternalKeySlot", NULL);
return NULL;
}
if (PK11_NeedUserInit(slot)) {
rv = PK11_InitPin(slot, NULL, NULL);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_Authenticate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_InitPin", NULL);
return NULL;
}
}
@@ -365,11 +388,8 @@ xmlSecNssGetInternalKeySlot()
if(PK11_IsLoggedIn(slot, NULL) != PR_TRUE) {
rv = PK11_Authenticate(slot, PR_TRUE, NULL);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_Authenticate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError2("PK11_Authenticate", NULL,
+ "token=%s", xmlSecErrorsSafeString(PK11_GetTokenName(slot)));
return NULL;
}
}
@@ -396,22 +416,15 @@ xmlSecNssGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
ret = xmlSecBufferSetSize(buffer, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", size);
return(-1);
}
/* get random data */
rv = PK11_GenerateRandom((xmlSecByte*)xmlSecBufferGetData(buffer), size);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_GenerateRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", size);
+ xmlSecNssError2("PK11_GenerateRandom", NULL,
+ "size=%lu", (unsigned long)size);
return(-1);
}
return(0);
@@ -427,18 +440,11 @@ xmlSecNssGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
* @reason: the error code.
* @msg: the additional error message.
*
- * The default errors reporting callback function.
+ * The errors reporting callback function. Just a pass through to the default callback.
*/
void
xmlSecNssErrorsDefaultCallback(const char* file, int line, const char* func,
const char* errorObject, const char* errorSubject,
int reason, const char* msg) {
- xmlChar buf[500];
- int err;
-
- err = PORT_GetError();
- xmlSecStrPrintf(buf, sizeof(buf), BAD_CAST "%s;last nss error=%d (0x%08X)", msg, err, err);
- xmlSecErrorsDefaultCallback(file, line, func,
- errorObject, errorSubject,
- reason, (char*)buf);
+ xmlSecErrorsDefaultCallback(file, line, func, errorObject, errorSubject, reason, msg);
}
diff --git a/src/nss/digests.c b/src/nss/digests.c
index 2a81375c..3bcfb04d 100644
--- a/src/nss/digests.c
+++ b/src/nss/digests.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -77,6 +85,12 @@ xmlSecNssDigestCheckId(xmlSecTransformPtr transform) {
}
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformSha224Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformSha256Id)) {
return(1);
@@ -123,6 +137,11 @@ xmlSecNssDigestInitialize(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformSha224Id)) {
+ ctx->digest = SECOID_FindOIDByTag(SEC_OID_SHA224);
+ } else
+#endif /* XMLSEC_NO_SHA224 */
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformSha256Id)) {
@@ -143,30 +162,18 @@ xmlSecNssDigestInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_SHA512 */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
if(ctx->digest == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "SECOID_FindOIDByTag",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SECOID_FindOIDByTag", xmlSecTransformGetName(transform));
return(-1);
}
ctx->digestCtx = PK11_CreateDigestContext(ctx->digest->offset);
if(ctx->digestCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_CreateDigestContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_CreateDigestContext", xmlSecTransformGetName(transform));
return(-1);
}
@@ -207,22 +214,16 @@ xmlSecNssDigestVerify(xmlSecTransformPtr transform,
xmlSecAssert2(ctx->dgstSize > 0, -1);
if(dataSize != ctx->dgstSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest sizes are different (data=%d, dgst=%d)",
- dataSize, ctx->dgstSize);
+ xmlSecInvalidIntegerDataError2("dataSize", dataSize,
+ "dgstSize", ctx->dgstSize, "dataSize == dgstSize",
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
if(memcmp(ctx->dgst, data, dataSize) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest do not match");
+ xmlSecInvalidDataError("data and digest do not match",
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -253,11 +254,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
if(transform->status == xmlSecTransformStatusNone) {
rv = PK11_DigestBegin(ctx->digestCtx);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestBegin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestBegin", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusWorking;
@@ -270,21 +267,15 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
if(inSize > 0) {
rv = PK11_DigestOp(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestOp", xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -293,11 +284,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
rv = PK11_DigestFinal(ctx->digestCtx, ctx->dgst, &dgstSize, sizeof(ctx->dgst));
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestFinal", xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(dgstSize > 0, -1);
@@ -306,11 +293,9 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, ctx->dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ctx->dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->dgstSize);
return(-1);
}
}
@@ -320,11 +305,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -428,6 +409,53 @@ xmlSecNssTransformSha1GetKlass(void) {
}
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/******************************************************************************
+ *
+ * SHA224 Digest transforms
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecNssSha224Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssDigestSize, /* xmlSecSize objSize */
+
+ /* data */
+ xmlSecNameSha224, /* const xmlChar* name; */
+ xmlSecHrefSha224, /* const xmlChar* href; */
+ xmlSecTransformUsageDigestMethod, /* xmlSecTransformUsage usage; */
+
+ /* methods */
+ xmlSecNssDigestInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssDigestFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ NULL, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ NULL, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssDigestVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssDigestExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformSha224GetKlass:
+ *
+ * SHA224 digest transform klass.
+ *
+ * Returns: pointer to SHA224 digest transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformSha224GetKlass(void) {
+ return(&xmlSecNssSha224Klass);
+}
+#endif /* XMLSEC_NO_SHA224 */
#ifndef XMLSEC_NO_SHA256
/******************************************************************************
diff --git a/src/nss/globals.h b/src/nss/globals.h
index 065c3e8f..c3dec2d8 100644
--- a/src/nss/globals.h
+++ b/src/nss/globals.h
@@ -21,4 +21,48 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+
+/**
+ * xmlSecNssError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting NSS crypro errors.
+ */
+#define xmlSecNssError(errorFunction, errorObject) \
+ { \
+ PRInt32 error_code = PR_GetError(); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "NSS error: %ld", \
+ (long int)error_code \
+ ); \
+ }
+
+/**
+ * xmlSecNssError2:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting NSS crypro errors.
+ */
+#define xmlSecNssError2(errorFunction, errorObject, msg, param) \
+ { \
+ PRInt32 error_code = PR_GetError(); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ msg "; NSS error: %ld", \
+ (param), \
+ (long int)error_code \
+ ); \
+ }
+
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/nss/hmac.c b/src/nss/hmac.c
index 79fbf40d..e25b1e61 100644
--- a/src/nss/hmac.c
+++ b/src/nss/hmac.c
@@ -1,5 +1,6 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -7,6 +8,13 @@
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_HMAC
#include "globals.h"
@@ -125,6 +133,12 @@ xmlSecNssHmacCheckId(xmlSecTransformPtr transform) {
}
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformHmacSha224Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformHmacSha256Id)) {
return(1);
@@ -176,6 +190,12 @@ xmlSecNssHmacInitialize(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformHmacSha224Id)) {
+ ctx->digestType = CKM_SHA224_HMAC;
+ } else
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformHmacSha256Id)) {
ctx->digestType = CKM_SHA256_HMAC;
@@ -196,11 +216,7 @@ xmlSecNssHmacInitialize(xmlSecTransformPtr transform) {
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
return(0);
@@ -272,11 +288,8 @@ xmlSecNssHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTrans
small value
*/
if((int)ctx->dgstSize < xmlSecNssHmacGetMinOutputLength()) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "HMAC output length is too small");
+ xmlSecInvalidNodeContentError(cur, xmlSecTransformGetName(transform),
+ "HMAC output length is too small");
return(-1);
}
@@ -284,11 +297,7 @@ xmlSecNssHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTrans
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -345,11 +354,7 @@ xmlSecNssHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key is empty");
+ xmlSecInvalidZeroKeyDataSizeError(xmlSecTransformGetName(transform));
return(-1);
}
@@ -360,33 +365,21 @@ xmlSecNssHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
slot = PK11_GetBestSlot(ctx->digestType, NULL);
if(slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", xmlSecTransformGetName(transform));
return(-1);
}
symKey = PK11_ImportSymKey(slot, ctx->digestType, PK11_OriginDerive,
CKA_SIGN, &keyItem, NULL);
if(symKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_ImportSymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_ImportSymKey", xmlSecTransformGetName(transform));
PK11_FreeSlot(slot);
return(-1);
}
ctx->digestCtx = PK11_CreateContextBySymKey(ctx->digestType, CKA_SIGN, symKey, &ignore);
if(ctx->digestCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_CreateContextBySymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_CreateContextBySymKey", xmlSecTransformGetName(transform));
PK11_FreeSymKey(symKey);
PK11_FreeSlot(slot);
return(-1);
@@ -421,36 +414,29 @@ xmlSecNssHmacVerify(xmlSecTransformPtr transform,
/* compare the digest size in bytes */
if(dataSize != ((ctx->dgstSize + 7) / 8)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data=%d;dgst=%d",
- dataSize, ((ctx->dgstSize + 7) / 8));
+ xmlSecInvalidSizeError("HMAC digest",
+ dataSize, ((ctx->dgstSize + 7) / 8),
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
- /* we check the last byte separatelly */
+ /* we check the last byte separately */
xmlSecAssert2(dataSize > 0, -1);
mask = last_byte_masks[ctx->dgstSize % 8];
if((ctx->dgst[dataSize - 1] & mask) != (data[dataSize - 1] & mask)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match (last byte)");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match (last byte)");
transform->status = xmlSecTransformStatusFail;
return(0);
}
/* now check the rest of the digest */
if((dataSize > 1) && (memcmp(ctx->dgst, data, dataSize - 1) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match");
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -481,11 +467,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
if(transform->status == xmlSecTransformStatusNone) {
rv = PK11_DigestBegin(ctx->digestCtx);
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestBegin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestBegin", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusWorking;
@@ -498,21 +480,15 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
if(inSize > 0) {
rv = PK11_DigestOp(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestOp", xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -521,11 +497,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
rv = PK11_DigestFinal(ctx->digestCtx, ctx->dgst, &dgstSize, sizeof(ctx->dgst));
if(rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "PK11_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_DigestFinal", xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(dgstSize > 0, -1);
@@ -536,23 +508,18 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
} else if(ctx->dgstSize <= XMLSEC_SIZE_BAD_CAST(8 * dgstSize)) {
dgstSize = ((ctx->dgstSize + 7) / 8); /* we need to truncate result digest */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "result-bits=%d;required-bits=%d",
- 8 * dgstSize, ctx->dgstSize);
+ xmlSecInvalidSizeLessThanError("HMAC digest (bits)",
+ 8 * dgstSize, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", dgstSize);
return(-1);
}
}
@@ -562,11 +529,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "size=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -712,6 +675,52 @@ xmlSecNssTransformHmacSha1GetKlass(void) {
}
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/******************************************************************************
+ *
+ * HMAC SHA224
+ *
+ ******************************************************************************/
+static xmlSecTransformKlass xmlSecNssHmacSha224Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssHmacSize, /* xmlSecSize objSize */
+
+ xmlSecNameHmacSha224, /* const xmlChar* name; */
+ xmlSecHrefHmacSha224, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssHmacInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssHmacFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ xmlSecNssHmacNodeRead, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssHmacSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssHmacSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssHmacVerify, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssHmacExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformHmacSha224GetKlass:
+ *
+ * The HMAC-SHA224 transform klass.
+ *
+ * Returns: the HMAC-SHA224 transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformHmacSha224GetKlass(void) {
+ return(&xmlSecNssHmacSha224Klass);
+}
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
/******************************************************************************
*
diff --git a/src/nss/keysstore.c b/src/nss/keysstore.c
index 057fc454..6dbf6b74 100644
--- a/src/nss/keysstore.c
+++ b/src/nss/keysstore.c
@@ -1,5 +1,16 @@
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for precise wording.
+ *
+ * Copyright (c) 2003 America Online, Inc. All rights reserved.
+ */
/**
- * XMLSec library
+ * SECTION:keysstore
+ * @Short_description: Keys store implementation for NSS.
+ * @Stability: Stable
*
* Nss keys store that uses Simple Keys Store under the hood. Uses the
* Nss DB as a backing store for the finding keys, but the NSS DB is
@@ -10,11 +21,6 @@
* DB.
* Thus, the NSS DB can be used to pre-load keys and becomes an alternate
* source of keys for xmlsec
- *
- * This is free software; see Copyright file in the source
- * distribution for precise wording.
- *
- * Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
#include "globals.h"
@@ -126,7 +132,7 @@ xmlSecNssKeysStoreAdoptKey(xmlSecKeyStorePtr store, xmlSecKeyPtr key) {
*/
int
xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
- xmlSecKeysMngrPtr keysMngr) {
+ xmlSecKeysMngrPtr keysMngr ATTRIBUTE_UNUSED) {
xmlDocPtr doc;
xmlNodePtr root;
xmlNodePtr cur;
@@ -139,22 +145,14 @@ xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
doc = xmlParseFile(uri);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlParseFile",
- XMLSEC_ERRORS_R_XML_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecXmlError2("xmlParseFile", xmlSecKeyStoreGetName(store),
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
root = xmlDocGetRootElement(doc);
if(!xmlSecCheckNodeName(root, BAD_CAST "Keys", xmlSecNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(root)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=<xmlsec:Keys>");
+ xmlSecInvalidNodeError(root, BAD_CAST "Keys", xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -163,30 +161,23 @@ xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeKeyInfo, xmlSecDSigNs)) {
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected-node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
ret = xmlSecKeyInfoCtxInitialize(&keyInfoCtx, NULL);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
}
keyInfoCtx.mode = xmlSecKeyInfoModeRead;
- keyInfoCtx.keysMngr = keysMngr;
+ keyInfoCtx.keysMngr = NULL;
keyInfoCtx.flags = XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND |
XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
keyInfoCtx.keyReq.keyId = xmlSecKeyDataIdUnknown;
@@ -195,11 +186,8 @@ xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
ret = xmlSecKeyInfoNodeRead(cur, key, &keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyInfoNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeRead",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyInfoCtxFinalize(&keyInfoCtx);
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
@@ -210,11 +198,8 @@ xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
if(xmlSecKeyIsValid(key)) {
ret = xmlSecNssKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecNssKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeysStoreAdoptKey",
+ xmlSecKeyStoreGetName(store));
xmlSecKeyDestroy(key);
xmlFreeDoc(doc);
return(-1);
@@ -227,11 +212,7 @@ xmlSecNssKeysStoreLoad(xmlSecKeyStorePtr store, const char *uri,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyStoreGetName(store));
xmlFreeDoc(doc);
return(-1);
}
@@ -275,11 +256,8 @@ xmlSecNssKeysStoreInitialize(xmlSecKeyStorePtr store) {
*ss = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(*ss == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyStoreGetName(store)),
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId)",
+ xmlSecKeyStoreGetName(store));
return(-1);
}
@@ -346,11 +324,7 @@ xmlSecNssKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
if (keyReq->keyType & xmlSecKeyDataTypePublic) {
pubkey = CERT_ExtractPublicKey(cert);
if (pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_ExtractPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("CERT_ExtractPublicKey", NULL);
goto done;
}
}
@@ -358,22 +332,14 @@ xmlSecNssKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
if (keyReq->keyType & xmlSecKeyDataTypePrivate) {
privkey = PK11_FindKeyByAnyCert(cert, NULL);
if (privkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_FindKeyByAnyCert",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_FindKeyByAnyCert", NULL);
goto done;
}
}
data = xmlSecNssPKIAdoptKey(privkey, pubkey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssPKIAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIAdoptKey", NULL);
goto done;
}
privkey = NULL;
@@ -381,78 +347,50 @@ xmlSecNssKeysStoreFindKey(xmlSecKeyStorePtr store, const xmlChar* name,
key = xmlSecKeyCreate();
if (key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
return (NULL);
}
x509Data = xmlSecKeyDataCreate(xmlSecNssKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecNssKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecTransformKlassGetName(xmlSecNssKeyDataX509Id));
goto done;
}
ret = xmlSecNssKeyDataX509AdoptKeyCert(x509Data, cert);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
cert = CERT_DupCertificate(cert);
if (cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecNssError("CERT_DupCertificate",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = xmlSecNssKeyDataX509AdoptCert(x509Data, cert);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
cert = NULL;
ret = xmlSecKeySetValue(key, data);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL;
ret = xmlSecKeyAdoptData(key, x509Data);
if (ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
x509Data = NULL;
diff --git a/src/nss/keytrans.c b/src/nss/keytrans.c
index d84593b9..1772de85 100644
--- a/src/nss/keytrans.c
+++ b/src/nss/keytrans.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * AES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright .................................
+ * Copyright (c) 2003 America Online, Inc. All rights reserved.
+ */
+/**
+ * SECTION:keytrans
+ * @Short_description: RSA Key Transport transforms implementation for NSS.
+ * @Stability: Private
+ *
*/
+
#include "globals.h"
#include <stdlib.h>
@@ -39,17 +44,17 @@ typedef struct _xmlSecNssKeyTransportCtx xmlSecNssKeyTran
typedef struct _xmlSecNssKeyTransportCtx* xmlSecNssKeyTransportCtxPtr;
#define xmlSecNssKeyTransportSize \
- ( sizeof( xmlSecTransform ) + sizeof( xmlSecNssKeyTransportCtx ) )
-#define xmlSecNssKeyTransportGetCtx( transform ) \
- ( ( xmlSecNssKeyTransportCtxPtr )( ( ( xmlSecByte* )( transform ) ) + sizeof( xmlSecTransform ) ) )
+ (sizeof(xmlSecTransform) + sizeof(xmlSecNssKeyTransportCtx))
+#define xmlSecNssKeyTransportGetCtx(transform) \
+ ((xmlSecNssKeyTransportCtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
struct _xmlSecNssKeyTransportCtx {
- CK_MECHANISM_TYPE cipher ;
- SECKEYPublicKey* pubkey ;
- SECKEYPrivateKey* prikey ;
- xmlSecKeyDataId keyId ;
- xmlSecBufferPtr material ; /* to be encrypted/decrypted material */
-} ;
+ CK_MECHANISM_TYPE cipher;
+ SECKEYPublicKey* pubkey;
+ SECKEYPrivateKey* prikey;
+ xmlSecKeyDataId keyId;
+ xmlSecBufferPtr material; /* to be encrypted/decrypted material */
+};
static int xmlSecNssKeyTransportInitialize (xmlSecTransformPtr transform);
static void xmlSecNssKeyTransportFinalize (xmlSecTransformPtr transform);
@@ -89,12 +94,12 @@ xmlSecNssKeyTransportCheckId(xmlSecTransformPtr transform) {
static int
xmlSecNssKeyTransportInitialize(xmlSecTransformPtr transform) {
- xmlSecNssKeyTransportCtxPtr context ;
+ xmlSecNssKeyTransportCtxPtr context;
xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
- context = xmlSecNssKeyTransportGetCtx( transform ) ;
- xmlSecAssert2( context != NULL , -1 ) ;
+ context = xmlSecNssKeyTransportGetCtx(transform);
+ xmlSecAssert2(context != NULL, -1);
/* initialize context */
memset(context, 0, sizeof(xmlSecNssKeyTransportCtx));
@@ -122,11 +127,7 @@ xmlSecNssKeyTransportInitialize(xmlSecTransformPtr transform) {
/* not found */
{
- xmlSecError(XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
+ xmlSecNotImplementedError(xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
return(-1);
}
@@ -135,43 +136,43 @@ xmlSecNssKeyTransportInitialize(xmlSecTransformPtr transform) {
static void
xmlSecNssKeyTransportFinalize(xmlSecTransformPtr transform) {
- xmlSecNssKeyTransportCtxPtr context ;
+ xmlSecNssKeyTransportCtxPtr context;
xmlSecAssert(xmlSecNssKeyTransportCheckId(transform));
xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize));
- context = xmlSecNssKeyTransportGetCtx( transform ) ;
- xmlSecAssert( context != NULL ) ;
+ context = xmlSecNssKeyTransportGetCtx(transform);
+ xmlSecAssert(context != NULL);
- if( context->pubkey != NULL ) {
- SECKEY_DestroyPublicKey( context->pubkey ) ;
- context->pubkey = NULL ;
+ if(context->pubkey != NULL) {
+ SECKEY_DestroyPublicKey(context->pubkey);
+ context->pubkey = NULL;
}
- if( context->prikey != NULL ) {
- SECKEY_DestroyPrivateKey( context->prikey ) ;
- context->prikey = NULL ;
+ if(context->prikey != NULL) {
+ SECKEY_DestroyPrivateKey(context->prikey);
+ context->prikey = NULL;
}
- if( context->material != NULL ) {
+ if(context->material != NULL) {
xmlSecBufferDestroy(context->material);
- context->material = NULL ;
+ context->material = NULL;
}
}
static int
xmlSecNssKeyTransportSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
- xmlSecNssKeyTransportCtxPtr context ;
+ xmlSecNssKeyTransportCtxPtr context;
xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
xmlSecAssert2(keyReq != NULL, -1);
- context = xmlSecNssKeyTransportGetCtx( transform ) ;
- xmlSecAssert2( context != NULL , -1 ) ;
+ context = xmlSecNssKeyTransportGetCtx(transform);
+ xmlSecAssert2(context != NULL, -1);
- keyReq->keyId = context->keyId;
+ keyReq->keyId = context->keyId;
if(transform->operation == xmlSecTransformOperationEncrypt) {
keyReq->keyUsage = xmlSecKeyUsageEncrypt;
keyReq->keyType = xmlSecKeyDataTypePublic;
@@ -185,480 +186,373 @@ xmlSecNssKeyTransportSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr ke
static int
xmlSecNssKeyTransportSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
- xmlSecNssKeyTransportCtxPtr context = NULL ;
- xmlSecKeyDataPtr keyData = NULL ;
- SECKEYPublicKey* pubkey = NULL ;
- SECKEYPrivateKey* prikey = NULL ;
+ xmlSecNssKeyTransportCtxPtr context = NULL;
+ xmlSecKeyDataPtr keyData = NULL;
+ SECKEYPublicKey* pubkey = NULL;
+ SECKEYPrivateKey* prikey = NULL;
xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
xmlSecAssert2(key != NULL, -1);
- context = xmlSecNssKeyTransportGetCtx( transform ) ;
- if( (context == NULL) || (context->keyId == NULL) || (context->pubkey != NULL) ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- "xmlSecNssKeyTransportGetCtx" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
+ context = xmlSecNssKeyTransportGetCtx(transform);
+ if((context == NULL) || (context->keyId == NULL) || (context->pubkey != NULL)) {
+ xmlSecInternalError("xmlSecNssKeyTransportGetCtx", xmlSecTransformGetName(transform));
return(-1);
}
- xmlSecAssert2( xmlSecKeyCheckId( key, context->keyId ), -1 ) ;
-
- keyData = xmlSecKeyGetValue( key ) ;
- if( keyData == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyGetName( key ) ) ,
- "xmlSecKeyGetValue" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
+ xmlSecAssert2(xmlSecKeyCheckId(key, context->keyId), -1);
+
+ keyData = xmlSecKeyGetValue(key);
+ if(keyData == NULL) {
+ xmlSecInternalError("xmlSecKeyGetValue", xmlSecTransformGetName(transform));
return(-1);
}
if(transform->operation == xmlSecTransformOperationEncrypt) {
- if( ( pubkey = xmlSecNssPKIKeyDataGetPubKey( keyData ) ) == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyDataGetName( keyData ) ) ,
- "xmlSecNssPKIKeyDataGetPubKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
+ pubkey = xmlSecNssPKIKeyDataGetPubKey(keyData);
+ if(pubkey == NULL) {
+ xmlSecInternalError("xmlSecNssPKIKeyDataGetPubKey", xmlSecKeyDataGetName(keyData));
+ return(-1);
}
-
- context->pubkey = pubkey ;
+ context->pubkey = pubkey;
} else {
- if( ( prikey = xmlSecNssPKIKeyDataGetPrivKey( keyData ) ) == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecKeyDataGetName( keyData ) ) ,
- "xmlSecNssPKIKeyDataGetPrivKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
+ prikey = xmlSecNssPKIKeyDataGetPrivKey(keyData);
+ if(prikey == NULL) {
+ xmlSecInternalError("xmlSecNssPKIKeyDataGetPrivKey", xmlSecKeyDataGetName(keyData));
+ return(-1);
}
-
- context->prikey = prikey ;
+ context->prikey = prikey;
}
- return(0) ;
+ /* done */
+ return(0);
}
static int
-xmlSecNssKeyTransportCtxInit(
- xmlSecNssKeyTransportCtxPtr ctx ,
- xmlSecBufferPtr in ,
- xmlSecBufferPtr out ,
- int encrypt ,
- xmlSecTransformCtxPtr transformCtx
-) {
- int blockSize ;
-
- xmlSecAssert2( ctx != NULL , -1 ) ;
- xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
- xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
- xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
- xmlSecAssert2( in != NULL , -1 ) ;
- xmlSecAssert2( out != NULL , -1 ) ;
- xmlSecAssert2( transformCtx != NULL , -1 ) ;
-
- if( ctx->material != NULL ) {
- xmlSecBufferDestroy( ctx->material ) ;
- ctx->material = NULL ;
- }
+xmlSecNssKeyTransportCtxInit(xmlSecNssKeyTransportCtxPtr ctx, xmlSecBufferPtr in, xmlSecBufferPtr out,
+ int encrypt, xmlSecTransformCtxPtr transformCtx) {
+ int blockSize;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->cipher != CKM_INVALID_MECHANISM, -1);
+ xmlSecAssert2((ctx->pubkey != NULL && encrypt) || (ctx->prikey != NULL && !encrypt), -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ if(ctx->material != NULL) {
+ xmlSecBufferDestroy(ctx->material);
+ ctx->material = NULL;
+ }
- if( ctx->pubkey != NULL ) {
- blockSize = SECKEY_PublicKeyStrength( ctx->pubkey ) ;
- } else if( ctx->prikey != NULL ) {
- blockSize = PK11_SignatureLen( ctx->prikey ) ;
- } else {
- blockSize = -1 ;
+ if(ctx->pubkey != NULL) {
+ blockSize = SECKEY_PublicKeyStrength(ctx->pubkey);
+ if(blockSize <= 0) {
+ xmlSecNssError("SECKEY_PublicKeyStrength", NULL);
+ return(-1);
}
-
- if( blockSize < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- NULL ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
+ } else if(ctx->prikey != NULL) {
+ blockSize = PK11_SignatureLen(ctx->prikey);
+ if(blockSize <= 0) {
+ xmlSecNssError("PK11_SignatureLen", NULL);
+ return(-1);
}
+ } else {
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL,
+ "neither public or private keys are set");
+ return(-1);
+ }
- ctx->material = xmlSecBufferCreate( blockSize ) ;
- if( ctx->material == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferCreate" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+ ctx->material = xmlSecBufferCreate(blockSize);
+ if(ctx->material == NULL) {
+ xmlSecInternalError2("xmlSecBufferSetData", NULL,
+ "size=%lu", (long unsigned)blockSize);
+ return(-1);
+ }
- /* read raw key material into context */
- if( xmlSecBufferSetData( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferSetData" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+ /* read raw key material into context */
+ if(xmlSecBufferSetData(ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferSetData", NULL,
+ "size=%lu", (long unsigned)xmlSecBufferGetSize(in));
+ return(-1);
+ }
- if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferRemoveHead" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+ if(xmlSecBufferRemoveHead(in, xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", NULL,
+ "size=%lu", (long unsigned)xmlSecBufferGetSize(in));
+ return(-1);
+ }
- return(0);
+ return(0);
}
static int
-xmlSecNssKeyTransportCtxUpdate(
- xmlSecNssKeyTransportCtxPtr ctx ,
- xmlSecBufferPtr in ,
- xmlSecBufferPtr out ,
- int encrypt ,
- xmlSecTransformCtxPtr transformCtx
-) {
- xmlSecAssert2( ctx != NULL , -1 ) ;
- xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
- xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
- xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
- xmlSecAssert2( ctx->material != NULL , -1 ) ;
- xmlSecAssert2( in != NULL , -1 ) ;
- xmlSecAssert2( out != NULL , -1 ) ;
- xmlSecAssert2( transformCtx != NULL , -1 ) ;
-
- /* read raw key material and append into context */
- if( xmlSecBufferAppend( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferAppend" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
-
- if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferRemoveHead" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
+xmlSecNssKeyTransportCtxUpdate(xmlSecNssKeyTransportCtxPtr ctx, xmlSecBufferPtr in, xmlSecBufferPtr out,
+ int encrypt, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->cipher != CKM_INVALID_MECHANISM, -1);
+ xmlSecAssert2((ctx->pubkey != NULL && encrypt) || (ctx->prikey != NULL && !encrypt), -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+ xmlSecAssert2(ctx->material != NULL, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ /* read raw key material and append into context */
+ if(xmlSecBufferAppend(ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferAppend", NULL,
+ "size=%lu", (long unsigned)xmlSecBufferGetSize(in));
+ return(-1);
+ }
- return(0);
+ if(xmlSecBufferRemoveHead(in, xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", NULL,
+ "size=%lu", (long unsigned)xmlSecBufferGetSize(in));
+ return(-1);
+ }
+ return(0);
}
static int
-xmlSecNssKeyTransportCtxFinal(xmlSecNssKeyTransportCtxPtr ctx, xmlSecBufferPtr in, xmlSecBufferPtr out,
+xmlSecNssKeyTransportCtxFinal(xmlSecNssKeyTransportCtxPtr ctx, xmlSecBufferPtr in, xmlSecBufferPtr out,
int encrypt, xmlSecTransformCtxPtr transformCtx) {
- PK11SymKey* symKey ;
- PK11SlotInfo* slot ;
- SECItem oriskv ;
- int blockSize ;
- xmlSecBufferPtr result ;
-
- xmlSecAssert2( ctx != NULL , -1 ) ;
- xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
- xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
- xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
- xmlSecAssert2( ctx->material != NULL , -1 ) ;
- xmlSecAssert2( in != NULL , -1 ) ;
- xmlSecAssert2( out != NULL , -1 ) ;
- xmlSecAssert2( transformCtx != NULL , -1 ) ;
-
- /* read raw key material and append into context */
- if( xmlSecBufferAppend( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferAppend" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
+ PK11SymKey* symKey;
+ PK11SlotInfo* slot;
+ SECItem oriskv;
+ int blockSize;
+ xmlSecBufferPtr result;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->cipher != CKM_INVALID_MECHANISM, -1);
+ xmlSecAssert2((ctx->pubkey != NULL && encrypt) || (ctx->prikey != NULL && !encrypt), -1);
+ xmlSecAssert2(ctx->keyId != NULL, -1);
+ xmlSecAssert2(ctx->material != NULL, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ /* read raw key material and append into context */
+ if(xmlSecBufferAppend(ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferAppend", NULL,
+ "size=%lu", (unsigned long)xmlSecBufferGetSize(in));
+ return(-1);
+ }
+
+ if(xmlSecBufferRemoveHead(in, xmlSecBufferGetSize(in)) < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", NULL,
+ "size=%lu", (unsigned long)xmlSecBufferGetSize(in));
+ return(-1);
+ }
+
+ /* Now we get all of the key material */
+ /* from now on we will wrap or unwrap the key */
+ if(ctx->pubkey != NULL) {
+ blockSize = SECKEY_PublicKeyStrength(ctx->pubkey);
+ if(blockSize <= 0) {
+ xmlSecNssError("SECKEY_PublicKeyStrength", NULL);
+ return(-1);
+ }
+ } else if(ctx->prikey != NULL) {
+ blockSize = PK11_SignatureLen(ctx->prikey);
+ if(blockSize <= 0) {
+ xmlSecNssError("PK11_SignatureLen", NULL);
+ return(-1);
}
+ } else {
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL,
+ "neither public or private keys are set");
+ return(-1);
+ }
+
+ result = xmlSecBufferCreate(blockSize * 2);
+ if(result == NULL) {
+ xmlSecInternalError("xmlSecBufferCreate", NULL);
+ return(-1);
+ }
+
+ oriskv.type = siBuffer;
+ oriskv.data = xmlSecBufferGetData(ctx->material);
+ oriskv.len = xmlSecBufferGetSize(ctx->material);
+
+ if(encrypt != 0) {
+ CK_OBJECT_HANDLE id;
+ SECItem wrpskv;
+
+ /* Create template symmetric key from material */
+ slot = ctx->pubkey->pkcs11Slot;
+ if(slot == NULL) {
+ slot = PK11_GetBestSlot(ctx->cipher, NULL);
+ if(slot == NULL) {
+ xmlSecNssError("PK11_GetBestSlot", NULL);
+ xmlSecBufferDestroy(result);
+ return(-1);
+ }
- if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferRemoveHead" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
+ id = PK11_ImportPublicKey(slot, ctx->pubkey, PR_FALSE);
+ if(id == CK_INVALID_HANDLE) {
+ xmlSecNssError("PK11_ImportPublicKey", NULL);
+ xmlSecBufferDestroy(result);
+ PK11_FreeSlot(slot);
return(-1);
+ }
}
- /* Now we get all of the key materail */
- /* from now on we will wrap or unwrap the key */
- if( ctx->pubkey != NULL ) {
- blockSize = SECKEY_PublicKeyStrength( ctx->pubkey ) ;
- } else if( ctx->prikey != NULL ) {
- blockSize = PK11_SignatureLen( ctx->prikey ) ;
- } else {
- blockSize = -1 ;
+ /* pay attention to mechanism */
+ symKey = PK11_ImportSymKey(slot, ctx->cipher, PK11_OriginUnwrap, CKA_WRAP, &oriskv, NULL);
+ if(symKey == NULL) {
+ xmlSecNssError("PK11_ImportSymKey", NULL);
+ xmlSecBufferDestroy(result);
+ PK11_FreeSlot(slot);
+ return(-1);
}
- if( blockSize < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_GetBlockSize" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
+ wrpskv.type = siBuffer;
+ wrpskv.data = xmlSecBufferGetData(result);
+ wrpskv.len = xmlSecBufferGetMaxSize(result);
+
+ if(PK11_PubWrapSymKey(ctx->cipher, ctx->pubkey, symKey, &wrpskv) != SECSuccess) {
+ xmlSecNssError("PK11_PubWrapSymKey", NULL);
+ PK11_FreeSymKey(symKey);
+ xmlSecBufferDestroy(result);
+ PK11_FreeSlot(slot);
+ return(-1);
}
- result = xmlSecBufferCreate( blockSize * 2 ) ;
- if( result == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL,
- "xmlSecBufferCreate" ,
- XMLSEC_ERRORS_R_XMLSEC_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE) ;
- return(-1);
+ if(xmlSecBufferSetSize(result, wrpskv.len) < 0) {
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%lu", (unsigned long)wrpskv.len);
+ PK11_FreeSymKey(symKey);
+ xmlSecBufferDestroy(result);
+ PK11_FreeSlot(slot);
+ return(-1);
+ }
+ PK11_FreeSymKey(symKey);
+ PK11_FreeSlot(slot);
+ } else {
+ SECItem* keyItem;
+
+ /* pay attention to mechanism */
+ symKey = PK11_PubUnwrapSymKey(ctx->prikey, &oriskv, ctx->cipher, CKA_UNWRAP, 0);
+ if(symKey == NULL) {
+ xmlSecNssError("PK11_PubUnwrapSymKey", NULL);
+ xmlSecBufferDestroy(result);
+ return(-1);
}
- oriskv.type = siBuffer ;
- oriskv.data = xmlSecBufferGetData( ctx->material ) ;
- oriskv.len = xmlSecBufferGetSize( ctx->material ) ;
-
- if( encrypt != 0 ) {
- CK_OBJECT_HANDLE id ;
- SECItem wrpskv ;
-
- /* Create template symmetric key from material */
- slot = ctx->pubkey->pkcs11Slot;
- if( slot == NULL ) {
- slot = PK11_GetBestSlot( ctx->cipher, NULL ) ;
- if( slot == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecNssSlotGet" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- xmlSecBufferDestroy(result);
- return(-1);
- }
-
- id = PK11_ImportPublicKey( slot, ctx->pubkey, PR_FALSE ) ;
- if( id == CK_INVALID_HANDLE ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_ImportPublicKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- xmlSecBufferDestroy(result);
- PK11_FreeSlot( slot ) ;
- return(-1);
- }
- }
-
- /* pay attention to mechanism */
- symKey = PK11_ImportSymKey( slot, ctx->cipher, PK11_OriginUnwrap, CKA_WRAP, &oriskv, NULL ) ;
- if( symKey == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_ImportSymKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- xmlSecBufferDestroy(result);
- PK11_FreeSlot( slot ) ;
- return(-1);
- }
-
- wrpskv.type = siBuffer ;
- wrpskv.data = xmlSecBufferGetData( result ) ;
- wrpskv.len = xmlSecBufferGetMaxSize( result ) ;
-
- if( PK11_PubWrapSymKey( ctx->cipher, ctx->pubkey, symKey, &wrpskv ) != SECSuccess ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_PubWrapSymKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- PK11_FreeSymKey( symKey ) ;
- xmlSecBufferDestroy(result);
- PK11_FreeSlot( slot ) ;
- return(-1);
- }
-
- if( xmlSecBufferSetSize( result , wrpskv.len ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferSetSize" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- PK11_FreeSymKey( symKey ) ;
- xmlSecBufferDestroy(result);
- PK11_FreeSlot( slot ) ;
- return(-1);
- }
- PK11_FreeSymKey( symKey ) ;
- PK11_FreeSlot( slot ) ;
- } else {
- SECItem* keyItem ;
-
- /* pay attention to mechanism */
- symKey = PK11_PubUnwrapSymKey( ctx->prikey, &oriskv, ctx->cipher, CKA_UNWRAP, 0 );
- if( symKey == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_PubUnwrapSymKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- xmlSecBufferDestroy(result);
- return(-1);
- }
-
- /* Extract raw data from symmetric key */
- if( PK11_ExtractKeyValue( symKey ) != SECSuccess ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_ExtractKeyValue" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- PK11_FreeSymKey( symKey ) ;
- xmlSecBufferDestroy(result);
- return(-1);
- }
-
- keyItem = PK11_GetKeyData( symKey );
- if( keyItem == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_GetKeyData" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- PK11_FreeSymKey( symKey ) ;
- xmlSecBufferDestroy(result);
- return(-1);
- }
-
- if( xmlSecBufferSetData( result, keyItem->data, keyItem->len ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "PK11_PubUnwrapSymKey" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- PK11_FreeSymKey( symKey ) ;
- xmlSecBufferDestroy(result);
- return(-1);
- }
- PK11_FreeSymKey( symKey ) ;
+ /* Extract raw data from symmetric key */
+ if(PK11_ExtractKeyValue(symKey) != SECSuccess) {
+ xmlSecNssError("PK11_ExtractKeyValue", NULL);
+ PK11_FreeSymKey(symKey);
+ xmlSecBufferDestroy(result);
+ return(-1);
}
- /* Write output */
- if( xmlSecBufferAppend( out, xmlSecBufferGetData(result), xmlSecBufferGetSize(result) ) < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- "xmlSecBufferAppend" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- xmlSecBufferDestroy(result);
- return(-1);
+ keyItem = PK11_GetKeyData(symKey);
+ if(keyItem == NULL) {
+ xmlSecNssError("PK11_GetKeyData", NULL);
+ PK11_FreeSymKey(symKey);
+ xmlSecBufferDestroy(result);
+ return(-1);
+ }
+
+ if(xmlSecBufferSetData(result, keyItem->data, keyItem->len) < 0) {
+ xmlSecInternalError2("xmlSecBufferSetData", NULL,
+ "size=%lu", (unsigned long)keyItem->len);
+ PK11_FreeSymKey(symKey);
+ xmlSecBufferDestroy(result);
+ return(-1);
}
+ PK11_FreeSymKey(symKey);
+ }
+
+ /* Write output */
+ if(xmlSecBufferAppend(out, xmlSecBufferGetData(result), xmlSecBufferGetSize(result)) < 0) {
+ xmlSecInternalError2("xmlSecBufferAppend", NULL,
+ "size=%lu", (unsigned long)xmlSecBufferGetSize(result));
xmlSecBufferDestroy(result);
+ return(-1);
+ }
- return(0);
+ /* done */
+ xmlSecBufferDestroy(result);
+ return(0);
}
static int
xmlSecNssKeyTransportExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
- xmlSecNssKeyTransportCtxPtr context = NULL ;
- xmlSecBufferPtr inBuf, outBuf ;
- int operation ;
- int rtv ;
-
- xmlSecAssert2( xmlSecNssKeyTransportCheckId( transform ), -1 ) ;
- xmlSecAssert2( xmlSecTransformCheckSize( transform, xmlSecNssKeyTransportSize ), -1 ) ;
- xmlSecAssert2( ( transform->operation == xmlSecTransformOperationEncrypt ) || ( transform->operation == xmlSecTransformOperationDecrypt ), -1 ) ;
- xmlSecAssert2( transformCtx != NULL , -1 ) ;
-
- context = xmlSecNssKeyTransportGetCtx( transform ) ;
- if( context == NULL ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- "xmlSecNssKeyTransportGetCtx" ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
+ xmlSecNssKeyTransportCtxPtr context = NULL;
+ xmlSecBufferPtr inBuf, outBuf;
+ int operation;
+ int rtv;
+
+ xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
+ xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ context = xmlSecNssKeyTransportGetCtx(transform);
+ if(context == NULL) {
+ xmlSecInternalError("xmlSecNssKeyTransportGetCtx",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
+ inBuf = &(transform->inBuf);
+ outBuf = &(transform->outBuf);
+
+ if(transform->status == xmlSecTransformStatusNone) {
+ transform->status = xmlSecTransformStatusWorking;
+ }
+
+ operation = (transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0;
+ if(transform->status == xmlSecTransformStatusWorking) {
+ if(context->material == NULL) {
+ rtv = xmlSecNssKeyTransportCtxInit(context, inBuf, outBuf, operation, transformCtx);
+ if(rtv < 0) {
+ xmlSecInternalError("xmlSecNssKeyTransportCtxInit",
+ xmlSecTransformGetName(transform));
return(-1);
+ }
}
- inBuf = &( transform->inBuf ) ;
- outBuf = &( transform->outBuf ) ;
+ if((context->material == NULL) && (last != 0)) {
+ xmlSecInvalidTransfromStatusError2(transform,
+ "No enough data to initialize transform");
+ return(-1);
+ }
- if( transform->status == xmlSecTransformStatusNone ) {
- transform->status = xmlSecTransformStatusWorking ;
+ if(context->material != NULL) {
+ rtv = xmlSecNssKeyTransportCtxUpdate(context, inBuf, outBuf, operation, transformCtx);
+ if(rtv < 0) {
+ xmlSecInternalError("xmlSecNssKeyTransportCtxUpdate",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
}
- operation = ( transform->operation == xmlSecTransformOperationEncrypt ) ? 1 : 0 ;
- if( transform->status == xmlSecTransformStatusWorking ) {
- if( context->material == NULL ) {
- rtv = xmlSecNssKeyTransportCtxInit( context, inBuf , outBuf , operation , transformCtx ) ;
- if( rtv < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- "xmlSecNssKeyTransportCtxInit" ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
- }
-
- if( (context->material == NULL) && (last != 0) ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- NULL ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- "No enough data to intialize transform" ) ;
- return(-1);
- }
-
- if( context->material != NULL ) {
- rtv = xmlSecNssKeyTransportCtxUpdate( context, inBuf , outBuf , operation , transformCtx ) ;
- if( rtv < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- "xmlSecNssKeyTransportCtxUpdate" ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
- }
-
- if( last ) {
- rtv = xmlSecNssKeyTransportCtxFinal( context, inBuf , outBuf , operation , transformCtx ) ;
- if( rtv < 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- "xmlSecNssKeyTransportCtxFinal" ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- XMLSEC_ERRORS_NO_MESSAGE ) ;
- return(-1);
- }
- transform->status = xmlSecTransformStatusFinished ;
- }
- } else if( transform->status == xmlSecTransformStatusFinished ) {
- if( xmlSecBufferGetSize( inBuf ) != 0 ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- NULL ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- "status=%d", transform->status ) ;
- return(-1);
- }
- } else {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
- NULL ,
- XMLSEC_ERRORS_R_INVALID_STATUS ,
- "status=%d", transform->status ) ;
+ if(last) {
+ rtv = xmlSecNssKeyTransportCtxFinal(context, inBuf, outBuf, operation, transformCtx);
+ if(rtv < 0) {
+ xmlSecInternalError("xmlSecNssKeyTransportCtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
+ }
+ transform->status = xmlSecTransformStatusFinished;
}
+ } else if(transform->status == xmlSecTransformStatusFinished) {
+ if(xmlSecBufferGetSize(inBuf) != 0) {
+ xmlSecInvalidTransfromStatusError2(transform,
+ "More data available in the input buffer");
+ return(-1);
+ }
+ } else {
+ xmlSecInvalidTransfromStatusError(transform);
+ return(-1);
+ }
- return(0);
+ return(0);
}
diff --git a/src/nss/kw_aes.c b/src/nss/kw_aes.c
index cea884eb..fceacb06 100644
--- a/src/nss/kw_aes.c
+++ b/src/nss/kw_aes.c
@@ -1,8 +1,6 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * AES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -10,6 +8,13 @@
* Copyright (c) 2003 America Online, Inc. All rights reserved.
* Copyright (C) 2010-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_AES
#include "globals.h"
@@ -242,21 +247,14 @@ xmlSecNssKWAesInitialize(xmlSecTransformPtr transform) {
} else if(xmlSecTransformCheckId(transform, xmlSecNssTransformKWAes256Id)) {
ctx->keyExpectedSize = XMLSEC_KW_AES256_KEY_SIZE;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -321,12 +319,8 @@ xmlSecNssKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < ctx->keyExpectedSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key=%d;expected=%d",
- keySize, ctx->keyExpectedSize);
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keyExpectedSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -334,12 +328,9 @@ xmlSecNssKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecBufferGetData(buffer),
ctx->keyExpectedSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "expected-size=%d",
- ctx->keyExpectedSize);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "expected-size=%d", ctx->keyExpectedSize);
return(-1);
}
@@ -378,11 +369,9 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % 8) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d(not 8 bytes aligned)", inSize);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, 8,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -396,11 +385,9 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "outSize=%d", outSize);
return(-1);
}
@@ -410,11 +397,9 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
/* create key */
aeskey = xmlSecNssMakeAesKey(xmlSecBufferGetData(&(ctx->keyBuffer)), keySize, 1); /* encrypt */
if(aeskey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssMakeAesKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError2("xmlSecNssMakeAesKey",
+ xmlSecTransformGetName(transform),
+ "keySize=%lu", (unsigned long)keySize);
return(-1);
}
@@ -424,11 +409,11 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError3("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform),
+ "inSize=%lu; outSize=%lu",
+ (unsigned long)inSize,
+ (unsigned long)outSize);
PK11_FreeSymKey(aeskey);
return(-1);
}
@@ -441,11 +426,9 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
/* create key */
aeskey = xmlSecNssMakeAesKey(xmlSecBufferGetData(&(ctx->keyBuffer)), keySize, 0); /* decrypt */
if(aeskey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssMakeAesKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError2("xmlSecNssMakeAesKey",
+ xmlSecTransformGetName(transform),
+ "keySize=%lu", (unsigned long)keySize);
return(-1);
}
@@ -454,11 +437,11 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesDecode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError3("xmlSecKWAesDecode",
+ xmlSecTransformGetName(transform),
+ "inSize=%lu; outSize=%lu",
+ (unsigned long)inSize,
+ (unsigned long)outSize);
PK11_FreeSymKey(aeskey);
return(-1);
}
@@ -469,21 +452,17 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "outSize=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "inSize%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "inSize%d", inSize);
return(-1);
}
@@ -492,11 +471,7 @@ xmlSecNssKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtx
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -523,11 +498,7 @@ xmlSecNSSKWAesBlockEncrypt(const xmlSecByte * in, xmlSecSize inSize,
/* one block */
ret = xmlSecNssAesOp(aeskey, in, out, 1); /* encrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAesOp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAesOp", NULL);
return(-1);
}
return(XMLSEC_KW_AES_BLOCK_SIZE);
@@ -549,11 +520,7 @@ xmlSecNSSKWAesBlockDecrypt(const xmlSecByte * in, xmlSecSize inSize,
/* one block */
ret = xmlSecNssAesOp(aeskey, in, out, 0); /* decrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssAesOp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssAesOp", NULL);
return(-1);
}
return(XMLSEC_KW_AES_BLOCK_SIZE);
@@ -572,11 +539,7 @@ xmlSecNssMakeAesKey(const xmlSecByte *key, xmlSecSize keySize, int enc) {
cipherMech = CKM_AES_ECB;
slot = PK11_GetBestSlot(cipherMech, NULL);
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", NULL);
goto done;
}
@@ -585,11 +548,7 @@ xmlSecNssMakeAesKey(const xmlSecByte *key, xmlSecSize keySize, int enc) {
aeskey = PK11_ImportSymKey(slot, cipherMech, PK11_OriginUnwrap,
enc ? CKA_ENCRYPT : CKA_DECRYPT, &keyItem, NULL);
if (aeskey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_ImportSymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ImportSymKey", NULL);
goto done;
}
@@ -619,11 +578,7 @@ xmlSecNssAesOp(PK11SymKey *aeskey, const xmlSecByte *in, xmlSecByte *out, int en
cipherMech = CKM_AES_ECB;
SecParam = PK11_ParamFromIV(cipherMech, NULL);
if (SecParam == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_ParamFromIV",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ParamFromIV", NULL);
goto done;
}
@@ -631,11 +586,7 @@ xmlSecNssAesOp(PK11SymKey *aeskey, const xmlSecByte *in, xmlSecByte *out, int en
enc ? CKA_ENCRYPT : CKA_DECRYPT,
aeskey, SecParam);
if (EncContext == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_CreateContextBySymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CreateContextBySymKey", NULL);
goto done;
}
@@ -644,22 +595,14 @@ xmlSecNssAesOp(PK11SymKey *aeskey, const xmlSecByte *in, xmlSecByte *out, int en
XMLSEC_KW_AES_BLOCK_SIZE, (unsigned char *)in,
XMLSEC_KW_AES_BLOCK_SIZE);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_CipherOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CipherOp", NULL);
goto done;
}
rv = PK11_DigestFinal(EncContext, out+tmp1_outlen,
&tmp2_outlen, XMLSEC_KW_AES_BLOCK_SIZE-tmp1_outlen);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_DigestFinal", NULL);
goto done;
}
diff --git a/src/nss/kw_des.c b/src/nss/kw_des.c
index 4025d35e..7c6b00b1 100644
--- a/src/nss/kw_des.c
+++ b/src/nss/kw_des.c
@@ -1,8 +1,6 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES KW Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
@@ -10,6 +8,13 @@
* Copyright (c) 2003 America Online, Inc. All rights reserved.
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
@@ -160,11 +165,8 @@ xmlSecNssKWDes3Initialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -228,22 +230,16 @@ xmlSecNssKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < XMLSEC_KW_DES3_KEY_LENGTH) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key length %d is not enough (%d expected)",
- keySize, XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInvalidKeyDataSizeError(keySize, XMLSEC_KW_DES3_KEY_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(&(ctx->keyBuffer), xmlSecBufferGetData(buffer), XMLSEC_KW_DES3_KEY_LENGTH);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
return(-1);
}
@@ -282,12 +278,9 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d bytes - not %d bytes aligned",
- inSize, XMLSEC_KW_DES3_BLOCK_LENGTH);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -303,11 +296,9 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -316,12 +307,9 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Encode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d",
+ keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -330,12 +318,9 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d",
+ keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -343,21 +328,17 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -366,11 +347,7 @@ xmlSecNssKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -399,43 +376,27 @@ xmlSecNssKWDes3Sha1(void * context,
/* Create a pk11ctx for hashing (digesting) */
pk11ctx = PK11_CreateDigestContext(SEC_OID_SHA1);
if (pk11ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_CreateDigestContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CreateDigestContext", NULL);
return(-1);
}
status = PK11_DigestBegin(pk11ctx);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_DigestBegin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_DigestBegin", NULL);
PK11_DestroyContext(pk11ctx, PR_TRUE);
return(-1);
}
status = PK11_DigestOp(pk11ctx, in, inSize);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_DigestOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_DigestOp", NULL);
PK11_DestroyContext(pk11ctx, PR_TRUE);
return(-1);
}
status = PK11_DigestFinal(pk11ctx, out, &outLen, outSize);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_DigestFinal", NULL);
PK11_DestroyContext(pk11ctx, PR_TRUE);
return(-1);
}
@@ -458,11 +419,7 @@ xmlSecNssKWDes3GenerateRandom(void * context,
status = PK11_GenerateRandom(out, outSize);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_GenerateRandom",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GenerateRandom", NULL);
return(-1);
}
@@ -493,11 +450,7 @@ xmlSecNssKWDes3BlockEncrypt(void * context,
out, outSize,
1); /* encrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKWDes3Encrypt", NULL);
return(-1);
}
@@ -528,11 +481,7 @@ xmlSecNssKWDes3BlockDecrypt(void * context,
out, outSize,
0); /* decrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKWDes3Encrypt", NULL);
return(-1);
}
@@ -570,11 +519,7 @@ xmlSecNssKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
cipherMech = CKM_DES3_CBC;
slot = PK11_GetBestSlot(cipherMech, NULL);
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", NULL);
goto done;
}
@@ -583,11 +528,7 @@ xmlSecNssKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
symKey = PK11_ImportSymKey(slot, cipherMech, PK11_OriginUnwrap,
enc ? CKA_ENCRYPT : CKA_DECRYPT, &keyItem, NULL);
if (symKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_ImportSymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ImportSymKey", NULL);
goto done;
}
@@ -596,11 +537,7 @@ xmlSecNssKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
param = PK11_ParamFromIV(cipherMech, &ivItem);
if (param == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_ParamFromIV",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ParamFromIV", NULL);
goto done;
}
@@ -608,11 +545,7 @@ xmlSecNssKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
enc ? CKA_ENCRYPT : CKA_DECRYPT,
symKey, param);
if (pk11ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_CreateContextBySymKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CreateContextBySymKey", NULL);
goto done;
}
@@ -620,22 +553,14 @@ xmlSecNssKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
status = PK11_CipherOp(pk11ctx, out, &tmp1_outlen, outSize,
(unsigned char *)in, inSize);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_CipherOp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_CipherOp", NULL);
goto done;
}
status = PK11_DigestFinal(pk11ctx, out+tmp1_outlen,
&tmp2_outlen, outSize-tmp1_outlen);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_DigestFinal", NULL);
goto done;
}
diff --git a/src/nss/pkikeys.c b/src/nss/pkikeys.c
index 5ede4ccb..1b8ea2db 100644
--- a/src/nss/pkikeys.c
+++ b/src/nss/pkikeys.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:pkikeys
+ * @Short_description: Private/public keys implementation for NSS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -118,11 +126,7 @@ xmlSecNSSPKIKeyDataCtxDup(xmlSecNssPKIKeyDataCtxPtr ctxDst,
if (ctxSrc->privkey != NULL) {
ctxDst->privkey = SECKEY_CopyPrivateKey(ctxSrc->privkey);
if(ctxDst->privkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECKEY_CopyPrivateKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SECKEY_CopyPrivateKey", NULL);
return(-1);
}
}
@@ -130,11 +134,7 @@ xmlSecNSSPKIKeyDataCtxDup(xmlSecNssPKIKeyDataCtxPtr ctxDst,
if (ctxSrc->pubkey != NULL) {
ctxDst->pubkey = SECKEY_CopyPublicKey(ctxSrc->pubkey);
if(ctxDst->pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SECKEY_CopyPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SECKEY_CopyPublicKey", NULL);
return(-1);
}
}
@@ -147,30 +147,27 @@ xmlSecNssPKIKeyDataAdoptKey(xmlSecKeyDataPtr data,
SECKEYPublicKey *pubkey)
{
xmlSecNssPKIKeyDataCtxPtr ctx;
- KeyType pubType = nullKey ;
- KeyType priType = nullKey ;
+ KeyType pubType = nullKey;
+ KeyType priType = nullKey;
xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecNssPKIKeyDataSize), -1);
- if( privkey != NULL ) {
- priType = SECKEY_GetPrivateKeyType( privkey ) ;
- }
+ if(privkey != NULL) {
+ priType = SECKEY_GetPrivateKeyType(privkey);
+ }
- if( pubkey != NULL ) {
- pubType = SECKEY_GetPublicKeyType( pubkey ) ;
- }
+ if(pubkey != NULL) {
+ pubType = SECKEY_GetPublicKeyType(pubkey);
+ }
- if( priType != nullKey && pubType != nullKey ) {
- if( pubType != priType ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- NULL ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- "different type of private and public key" ) ;
- return -1 ;
- }
+ if(priType != nullKey && pubType != nullKey) {
+ if(pubType != priType) {
+ xmlSecInvalidIntegerTypeError2("pubType", pubType, "priType", priType,
+ "pubType == priType", NULL);
+ return -1;
}
+ }
ctx = xmlSecNssPKIKeyDataGetCtx(data);
xmlSecAssert2(ctx != NULL, -1);
@@ -204,39 +201,32 @@ xmlSecNssPKIAdoptKey(SECKEYPrivateKey *privkey,
{
xmlSecKeyDataPtr data = NULL;
int ret;
- KeyType pubType = nullKey ;
- KeyType priType = nullKey ;
+ KeyType pubType = nullKey;
+ KeyType priType = nullKey;
- if( privkey != NULL ) {
- priType = SECKEY_GetPrivateKeyType( privkey ) ;
- }
+ if(privkey != NULL) {
+ priType = SECKEY_GetPrivateKeyType(privkey);
+ }
- if( pubkey != NULL ) {
- pubType = SECKEY_GetPublicKeyType( pubkey ) ;
- }
+ if(pubkey != NULL) {
+ pubType = SECKEY_GetPublicKeyType(pubkey);
+ }
- if( priType != nullKey && pubType != nullKey ) {
- if( pubType != priType ) {
- xmlSecError( XMLSEC_ERRORS_HERE ,
- NULL ,
- NULL ,
- XMLSEC_ERRORS_R_CRYPTO_FAILED ,
- "different type of private and public key" ) ;
- return( NULL ) ;
- }
+ if(priType != nullKey && pubType != nullKey) {
+ if(pubType != priType) {
+ xmlSecInvalidIntegerTypeError2("pubType", pubType, "priType", priType,
+ "pubType == priType", NULL);
+ return(NULL);
}
+ }
- pubType = priType != nullKey ? priType : pubType ;
+ pubType = (priType != nullKey) ? priType : pubType;
switch(pubType) {
#ifndef XMLSEC_NO_RSA
case rsaKey:
data = xmlSecKeyDataCreate(xmlSecNssKeyDataRsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNssKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(KeyDataRsaId)", NULL);
return(NULL);
}
break;
@@ -245,32 +235,30 @@ xmlSecNssPKIAdoptKey(SECKEYPrivateKey *privkey,
case dsaKey:
data = xmlSecKeyDataCreate(xmlSecNssKeyDataDsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNssKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate", NULL);
return(NULL);
}
break;
#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_ECDSA
+ case ecKey:
+ data = xmlSecKeyDataCreate(xmlSecNssKeyDataEcdsaId);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate", NULL);
+ return(NULL);
+ }
+ break;
+#endif /* XMLSEC_NO_ECDSA */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "PKI key type %d not supported", pubType);
+ xmlSecInvalidIntegerTypeError("pubType", pubType,
+ "supported PKI key type", NULL);
return(NULL);
}
xmlSecAssert2(data != NULL, NULL);
ret = xmlSecNssPKIKeyDataAdoptKey(data, privkey, pubkey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssPKIKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataAdoptKey", NULL);
xmlSecKeyDataDestroy(data);
return(NULL);
}
@@ -380,11 +368,8 @@ xmlSecNssPKIKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
xmlSecAssert2(ctxSrc != NULL, -1);
if (xmlSecNSSPKIKeyDataCtxDup(ctxDst, ctxSrc) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecNssPKIKeydataCtxDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeydataCtxDup",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
@@ -579,45 +564,31 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
ret = -1;
goto done;
}
slot = PK11_GetBestSlot(CKM_DSA, NULL);
if(slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if(arena == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PORT_NewArena",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PORT_NewArena", xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
- pubkey = (SECKEYPublicKey *)PORT_ArenaZAlloc(arena,
- sizeof(SECKEYPublicKey));
- if(pubkey == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PORT_ArenaZAlloc",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ pubkey = (SECKEYPublicKey *)PORT_ArenaZAlloc(arena, sizeof(SECKEYPublicKey));
+ if(pubkey == NULL) {
+ xmlSecNssError2("PORT_ArenaZAlloc", xmlSecKeyDataKlassGetName(id),
+ "size=%lu", (unsigned long)sizeof(SECKEYPublicKey));
PORT_FreeArena(arena, PR_FALSE);
ret = -1;
goto done;
@@ -630,22 +601,13 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is P node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAP, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.dsa.params.prime)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -653,22 +615,13 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Q node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAQ, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.dsa.params.subPrime)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -676,22 +629,13 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is G node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAG, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.dsa.params.base)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -706,21 +650,13 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Y node. */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAY, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.dsa.publicValue)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -742,55 +678,39 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id))
ret = -1;
goto done;
}
handle = PK11_ImportPublicKey(slot, pubkey, PR_FALSE);
if(handle == CK_INVALID_HANDLE) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PK11_ImportPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_ImportPublicKey",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
data = xmlSecKeyDataCreate(id);
- if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
ret = xmlSecNssPKIKeyDataAdoptKey(data, NULL, pubkey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssPKIKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
pubkey = NULL;
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
goto done;
}
data = NULL;
@@ -837,66 +757,42 @@ xmlSecNssKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is P node */
cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.dsa.params.prime), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeDSAP)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
/* next is Q node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.dsa.params.subPrime), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeDSAQ)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
/* next is G node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.dsa.params.base), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeDSAG)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
@@ -905,25 +801,18 @@ xmlSecNssKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Y node. */
cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecAddChild(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.dsa.publicValue), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeDSAY)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
+ /* done */
return(0);
}
@@ -945,46 +834,43 @@ xmlSecNssKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKe
j = PQG_PBITS_TO_INDEX(sizeBits);
rv = PK11_PQG_ParamGen(j, &pqgParams, &pqgVerify);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "PK11_PQG_ParamGen",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", sizeBits);
+ xmlSecNssError2("PK11_PQG_ParamGen", xmlSecKeyDataGetName(data),
+ "size=%lu", (unsigned long)sizeBits);
goto done;
}
rv = PK11_PQG_VerifyParams(pqgParams, pqgVerify, &res);
if (rv != SECSuccess || res != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "PK11_PQG_VerifyParams",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", sizeBits);
+ xmlSecNssError2("PK11_PQG_VerifyParams", xmlSecKeyDataGetName(data),
+ "size=%lu", (unsigned long)sizeBits);
goto done;
}
slot = PK11_GetBestSlot(CKM_DSA_KEY_PAIR_GEN, NULL);
- PK11_Authenticate(slot, PR_TRUE, NULL /* default pwd callback */);
+ if(slot == NULL) {
+ xmlSecNssError("PK11_GetBestSlot", xmlSecKeyDataGetName(data));
+ goto done;
+ }
+
+ rv = PK11_Authenticate(slot, PR_TRUE, NULL /* default pwd callback */);
+ if (rv != SECSuccess) {
+ xmlSecNssError2("PK11_Authenticate", xmlSecKeyDataGetName(data),
+ "token=%s", xmlSecErrorsSafeString(PK11_GetTokenName(slot)));
+ goto done;
+ }
+
privkey = PK11_GenerateKeyPair(slot, CKM_DSA_KEY_PAIR_GEN, pqgParams,
&pubkey, PR_FALSE, PR_TRUE, NULL);
if((privkey == NULL) || (pubkey == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "PK11_GenerateKeyPair",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecNssError("PK11_GenerateKeyPair", xmlSecKeyDataGetName(data));
goto done;
}
ret = xmlSecNssPKIKeyDataAdoptKey(data, privkey, pubkey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssPKIKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
@@ -1216,45 +1102,31 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- "key already has a value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "key already has a value");
ret = -1;
goto done;
}
slot = PK11_GetBestSlot(CKM_RSA_PKCS, NULL);
if(slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PK11_GetBestSlot",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PK11_GetBestSlot", xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if(arena == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PORT_NewArena",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PORT_NewArena", xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
pubkey = (SECKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(SECKEYPublicKey));
- if(pubkey == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "PORT_ArenaZAlloc",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ if(pubkey == NULL) {
+ xmlSecNssError("PORT_ArenaZAlloc", xmlSecKeyDataKlassGetName(id));
PORT_FreeArena(arena, PR_FALSE);
ret = -1;
goto done;
@@ -1266,22 +1138,13 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAModulus, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.rsa.modulus)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -1289,22 +1152,13 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* next is Exponent node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAExponent, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
if(xmlSecNssNodeGetBigNumValue(arena, cur, &(pubkey->u.rsa.publicExponent)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeGetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecNssNodeGetBigNumValue(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
@@ -1317,33 +1171,23 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
data = xmlSecKeyDataCreate(id);
- if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ if(data == NULL) {
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
ret = -1;
goto done;
}
ret = xmlSecNssPKIKeyDataAdoptKey(data, NULL, pubkey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssPKIKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataAdoptKey",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
goto done;
}
@@ -1351,11 +1195,8 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(id));
xmlSecKeyDataDestroy(data);
goto done;
}
@@ -1404,44 +1245,28 @@ xmlSecNssKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node */
cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.rsa.modulus), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeRSAModulus)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
/* next is Exponent node. */
cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecAddChild(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssNodeSetBigNumValue(cur, &(ctx->pubkey->u.rsa.publicExponent), 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssNodeSetBigNumValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError("xmlSecNssNodeSetBigNumValue(NodeRSAExponent)",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
@@ -1456,7 +1281,8 @@ xmlSecNssKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKe
PK11SlotInfo *slot = NULL;
SECKEYPrivateKey *privkey = NULL;
SECKEYPublicKey *pubkey = NULL;
- int ret = -1;
+ SECStatus rv;
+ int ret = -1;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataRsaId), -1);
xmlSecAssert2(sizeBits > 0, -1);
@@ -1465,27 +1291,29 @@ xmlSecNssKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKe
params.pe = 65537;
slot = PK11_GetBestSlot(CKM_RSA_PKCS_KEY_PAIR_GEN, NULL);
- PK11_Authenticate(slot, PR_TRUE, NULL /* default pwd callback */);
+ if(slot == NULL) {
+ xmlSecNssError("PK11_GetBestSlot", xmlSecKeyDataGetName(data));
+ goto done;
+ }
+
+ rv = PK11_Authenticate(slot, PR_TRUE, NULL /* default pwd callback */);
+ if (rv != SECSuccess) {
+ xmlSecNssError2("PK11_Authenticate", xmlSecKeyDataGetName(data),
+ "token=%s", xmlSecErrorsSafeString(PK11_GetTokenName(slot)));
+ goto done;
+ }
+
privkey = PK11_GenerateKeyPair(slot, CKM_RSA_PKCS_KEY_PAIR_GEN, &params,
&pubkey, PR_FALSE, PR_TRUE, NULL);
-
if(privkey == NULL || pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "PK11_GenerateKeyPair",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
-
+ xmlSecNssError("PK11_GenerateKeyPair", xmlSecKeyDataGetName(data));
goto done;
}
ret = xmlSecNssPKIKeyDataAdoptKey(data, privkey, pubkey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssPKIKeyDataAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataAdoptKey",
+ xmlSecKeyDataGetName(data));
goto done;
}
@@ -1559,5 +1387,133 @@ xmlSecNssKeyDataRsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
#endif /* XMLSEC_NO_RSA */
+#ifndef XMLSEC_NO_ECDSA
+static int xmlSecNssKeyDataEcdsaInitialize(xmlSecKeyDataPtr data);
+static int xmlSecNssKeyDataEcdsaDuplicate(xmlSecKeyDataPtr dst,
+ xmlSecKeyDataPtr src);
+static void xmlSecNssKeyDataEcdsaFinalize(xmlSecKeyDataPtr data);
+
+static xmlSecKeyDataType xmlSecNssKeyDataEcdsaGetType(xmlSecKeyDataPtr data);
+static xmlSecSize xmlSecNssKeyDataEcdsaGetSize(xmlSecKeyDataPtr data);
+static void xmlSecNssKeyDataEcdsaDebugDump(xmlSecKeyDataPtr data,
+ FILE* output);
+static void xmlSecNssKeyDataEcdsaDebugXmlDump(xmlSecKeyDataPtr data,
+ FILE* output);
+
+static xmlSecKeyDataKlass xmlSecNssKeyDataEcdsaKlass = {
+ sizeof(xmlSecKeyDataKlass),
+ xmlSecNssPKIKeyDataSize,
+
+ /* data */
+ xmlSecNameECDSAKeyValue,
+ xmlSecKeyDataUsageKeyValueNode | xmlSecKeyDataUsageRetrievalMethodNodeXml,
+ /* xmlSecKeyDataUsage usage; */
+ xmlSecHrefECDSAKeyValue, /* const xmlChar* href; */
+ xmlSecNodeECDSAKeyValue, /* const xmlChar* dataNodeName; */
+ xmlSecDSigNs, /* const xmlChar* dataNodeNs; */
+
+ /* constructors/destructor */
+ xmlSecNssKeyDataEcdsaInitialize, /* xmlSecKeyDataInitializeMethod initialize; */
+ xmlSecNssKeyDataEcdsaDuplicate, /* xmlSecKeyDataDuplicateMethod duplicate; */
+ xmlSecNssKeyDataEcdsaFinalize, /* xmlSecKeyDataFinalizeMethod finalize; */
+ NULL, /* xmlSecKeyDataGenerateMethod generate; */
+ /* get info */
+ xmlSecNssKeyDataEcdsaGetType, /* xmlSecKeyDataGetTypeMethod getType; */
+ xmlSecNssKeyDataEcdsaGetSize, /* xmlSecKeyDataGetSizeMethod getSize; */
+ NULL, /* xmlSecKeyDataGetIdentifier getIdentifier; */
+ /* read/write */
+ NULL, /* xmlSecKeyDataXmlReadMethod xmlRead; */
+ NULL, /* xmlSecKeyDataXmlWriteMethod xmlWrite; */
+ NULL, /* xmlSecKeyDataBinReadMethod binRead; */
+ NULL, /* xmlSecKeyDataBinWriteMethod binWrite; */
+
+ /* debug */
+ xmlSecNssKeyDataEcdsaDebugDump, /* xmlSecKeyDataDebugDumpMethod debugDump; */
+ xmlSecNssKeyDataEcdsaDebugXmlDump, /* xmlSecKeyDataDebugDumpMethod debugXmlDump; */
+
+ /* reserved for the future */
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssKeyDataEcdsaGetKlass:
+ *
+ * The ECDSA key data klass.
+ *
+ * Returns: pointer to ECDSA key data klass.
+ */
+xmlSecKeyDataId
+xmlSecNssKeyDataEcdsaGetKlass(void) {
+ return(&xmlSecNssKeyDataEcdsaKlass);
+}
+
+static int
+xmlSecNssKeyDataEcdsaInitialize(xmlSecKeyDataPtr data) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId), -1);
+
+ return(xmlSecNssPKIKeyDataInitialize(data));
+}
+
+static int
+xmlSecNssKeyDataEcdsaDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
+ xmlSecAssert2(xmlSecKeyDataCheckId(dst, xmlSecNssKeyDataEcdsaId), -1);
+ xmlSecAssert2(xmlSecKeyDataCheckId(src, xmlSecNssKeyDataEcdsaId), -1);
+
+ return(xmlSecNssPKIKeyDataDuplicate(dst, src));
+}
+
+static void
+xmlSecNssKeyDataEcdsaFinalize(xmlSecKeyDataPtr data) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId));
+
+ xmlSecNssPKIKeyDataFinalize(data);
+}
+
+static xmlSecKeyDataType
+xmlSecNssKeyDataEcdsaGetType(xmlSecKeyDataPtr data) {
+ xmlSecNssPKIKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId), xmlSecKeyDataTypeUnknown);
+ ctx = xmlSecNssPKIKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->pubkey == NULL || SECKEY_GetPublicKeyType(ctx->pubkey) == ecKey, -1);
+ if (ctx->privkey != NULL) {
+ return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+ } else {
+ return(xmlSecKeyDataTypePublic);
+ }
+}
+
+static xmlSecSize
+xmlSecNssKeyDataEcdsaGetSize(xmlSecKeyDataPtr data) {
+ xmlSecNssPKIKeyDataCtxPtr ctx;
+
+ xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId), 0);
+ ctx = xmlSecNssPKIKeyDataGetCtx(data);
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(SECKEY_GetPublicKeyType(ctx->pubkey) == ecKey, -1);
+
+ return(SECKEY_SignatureLen(ctx->pubkey));
+}
+
+static void
+xmlSecNssKeyDataEcdsaDebugDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "=== ecdsa key: size = %d\n",
+ xmlSecNssKeyDataEcdsaGetSize(data));
+}
+
+static void
+xmlSecNssKeyDataEcdsaDebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
+ xmlSecAssert(xmlSecKeyDataCheckId(data, xmlSecNssKeyDataEcdsaId));
+ xmlSecAssert(output != NULL);
+
+ fprintf(output, "<ECDSAKeyValue size=\"%d\" />\n",
+ xmlSecNssKeyDataEcdsaGetSize(data));
+}
+#endif /* XMLSEC_NO_ECDSA */
diff --git a/src/nss/signatures.c b/src/nss/signatures.c
index 4f54170e..35ac4598 100644
--- a/src/nss/signatures.c
+++ b/src/nss/signatures.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -78,11 +86,46 @@ static int xmlSecNssSignatureExecute (xmlSecTransformPtr tran
static int
xmlSecNssSignatureCheckId(xmlSecTransformPtr transform) {
#ifndef XMLSEC_NO_DSA
+#ifndef XMLSEC_NO_SHA1
if(xmlSecTransformCheckId(transform, xmlSecNssTransformDsaSha1Id)) {
return(1);
}
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformDsaSha256Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA256 */
#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_ECDSA
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha1Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha224Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA224 */
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha256Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha384Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha512Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA512 */
+#endif /* XMLSEC_NO_ECDSA */
+
#ifndef XMLSEC_NO_RSA
#ifndef XMLSEC_NO_MD5
@@ -97,6 +140,12 @@ xmlSecNssSignatureCheckId(xmlSecTransformPtr transform) {
}
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaSha224Id)) {
+ return(1);
+ }
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaSha256Id)) {
return(1);
@@ -132,13 +181,60 @@ xmlSecNssSignatureInitialize(xmlSecTransformPtr transform) {
memset(ctx, 0, sizeof(xmlSecNssSignatureCtx));
#ifndef XMLSEC_NO_DSA
+#ifndef XMLSEC_NO_SHA1
if(xmlSecTransformCheckId(transform, xmlSecNssTransformDsaSha1Id)) {
ctx->keyId = xmlSecNssKeyDataDsaId;
/* This creates a signature which is ASN1 encoded */
ctx->alg = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST;
} else
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformDsaSha256Id)) {
+ ctx->keyId = xmlSecNssKeyDataDsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_ECDSA
+#ifndef XMLSEC_NO_SHA1
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha1Id)) {
+ ctx->keyId = xmlSecNssKeyDataEcdsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE;
+ } else
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha224Id)) {
+ ctx->keyId = xmlSecNssKeyDataEcdsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE;
+ } else
+#endif /* XMLSEC_NO_SHA24 */
+#ifndef XMLSEC_NO_SHA256
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha256Id)) {
+ ctx->keyId = xmlSecNssKeyDataEcdsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE;
+ } else
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha384Id)) {
+ ctx->keyId = xmlSecNssKeyDataEcdsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE;
+ } else
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformEcdsaSha512Id)) {
+ ctx->keyId = xmlSecNssKeyDataEcdsaId;
+ /* This creates a signature which is ASN1 encoded */
+ ctx->alg = SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE;
+ } else
+#endif /* XMLSEC_NO_SHA512 */
+#endif /* XMLSEC_NO_ECDSA */
+
#ifndef XMLSEC_NO_RSA
#ifndef XMLSEC_NO_MD5
@@ -156,6 +252,13 @@ xmlSecNssSignatureInitialize(xmlSecTransformPtr transform) {
} else
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+ if(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaSha224Id)) {
+ ctx->keyId = xmlSecNssKeyDataRsaId;
+ ctx->alg = SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION;
+ } else
+#endif /* XMLSEC_NO_SHA224 */
+
#ifndef XMLSEC_NO_SHA256
if(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaSha256Id)) {
ctx->keyId = xmlSecNssKeyDataRsaId;
@@ -180,11 +283,7 @@ xmlSecNssSignatureInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_RSA */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
@@ -236,48 +335,38 @@ xmlSecNssSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(value != NULL, -1);
if (transform->operation == xmlSecTransformOperationSign) {
- if (ctx->u.sig.privkey)
+ if (ctx->u.sig.privkey) {
SECKEY_DestroyPrivateKey(ctx->u.sig.privkey);
+ }
ctx->u.sig.privkey = xmlSecNssPKIKeyDataGetPrivKey(value);
if(ctx->u.sig.privkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNssPKIKeyDataGetPrivKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataGetPrivKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
ctx->u.sig.sigctx = SGN_NewContext(ctx->alg, ctx->u.sig.privkey);
if (ctx->u.sig.sigctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "SGN_NewContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SGN_NewContext",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
- if (ctx->u.vfy.pubkey)
+ if (ctx->u.vfy.pubkey) {
SECKEY_DestroyPublicKey(ctx->u.vfy.pubkey);
+ }
ctx->u.vfy.pubkey = xmlSecNssPKIKeyDataGetPubKey(value);
if(ctx->u.vfy.pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNssPKIKeyDataGetPubKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIKeyDataGetPubKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
ctx->u.vfy.vfyctx = VFY_CreateContext(ctx->u.vfy.pubkey, NULL,
ctx->alg, NULL);
if (ctx->u.vfy.vfyctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "VFY_CreateContext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("VFY_CreateContext",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -309,6 +398,26 @@ xmlSecNssSignatureSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyRe
return(0);
}
+/**
+ * xmlSecNssSignatureAlgorithmEncoded:
+ *
+ * Determines if the given algorithm requires a signature which is ASN1 encoded.
+ */
+static int
+xmlSecNssSignatureAlgorithmEncoded(SECOidTag alg) {
+ switch(alg) {
+ case SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST:
+ case SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST:
+ case SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE:
+ case SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE:
+ case SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE:
+ case SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE:
+ case SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE:
+ return(1);
+ default:
+ return(0);
+ }
+}
static int
xmlSecNssSignatureVerify(xmlSecTransformPtr transform,
@@ -331,19 +440,16 @@ xmlSecNssSignatureVerify(xmlSecTransformPtr transform,
signature.data = (unsigned char *)data;
signature.len = dataSize;
- if(ctx->alg == SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST) {
+ if(xmlSecNssSignatureAlgorithmEncoded(ctx->alg)) {
/* This creates a signature which is ASN1 encoded */
SECItem signatureDer;
SECStatus statusDer;
- statusDer = DSAU_EncodeDerSig(&signatureDer, &signature);
+ memset(&signatureDer, 0, sizeof(signatureDer));
+ statusDer = DSAU_EncodeDerSigWithLen(&signatureDer, &signature, signature.len);
if(statusDer != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "DSAU_EncodeDerSig",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d",
- PORT_GetError());
+ xmlSecNssError("DSAU_EncodeDerSigWithLen",
+ xmlSecTransformGetName(transform));
return(-1);
}
status = VFY_EndWithSignature(ctx->u.vfy.vfyctx, &signatureDer);
@@ -353,20 +459,14 @@ xmlSecNssSignatureVerify(xmlSecTransformPtr transform,
}
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "VFY_EndWithSignature",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d",
- PORT_GetError());
-
if (PORT_GetError() == SEC_ERROR_PKCS7_BAD_SIGNATURE) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "VFY_EndWithSignature",
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "signature does not verify");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "VFY_EndWithSignature: signature does not verify");
transform->status = xmlSecTransformStatusFail;
+ } else {
+ xmlSecNssError("VFY_EndWithSignature",
+ xmlSecTransformGetName(transform));
}
return(-1);
}
@@ -413,21 +513,15 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
if(transform->operation == xmlSecTransformOperationSign) {
status = SGN_Begin(ctx->u.sig.sigctx);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "SGN_Begin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SGN_Begin",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
status = VFY_Begin(ctx->u.vfy.vfyctx);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "VFY_Begin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("VFY_Begin",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -440,32 +534,23 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
if(transform->operation == xmlSecTransformOperationSign) {
status = SGN_Update(ctx->u.sig.sigctx, xmlSecBufferGetData(in), inSize);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "SGN_Update",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SGN_Update",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
status = VFY_Update(ctx->u.vfy.vfyctx, xmlSecBufferGetData(in), inSize);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "VFY_Update",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("VFY_Update",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -476,38 +561,48 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
memset(&signature, 0, sizeof(signature));
status = SGN_End(ctx->u.sig.sigctx, &signature);
if(status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "SGN_End",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SGN_End",
+ xmlSecTransformGetName(transform));
return(-1);
}
- if(ctx->alg == SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST) {
+ if(xmlSecNssSignatureAlgorithmEncoded(ctx->alg)) {
/* This creates a signature which is ASN1 encoded */
SECItem * signatureClr;
- signatureClr = DSAU_DecodeDerSig(&signature);
- if(signatureClr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "DSAU_EncodeDerSig",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d",
- PORT_GetError());
- SECITEM_FreeItem(&signature, PR_FALSE);
- return(-1);
+ if(ctx->alg == SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST) {
+ signatureClr = DSAU_DecodeDerSig(&signature);
+ if(signatureClr == NULL) {
+ xmlSecNssError("DSAU_DecodeDerSig",
+ xmlSecTransformGetName(transform));
+ SECITEM_FreeItem(&signature, PR_FALSE);
+ return(-1);
+ }
+ } else {
+ /* In the ECDSA case the signature length depends on the
+ * key parameters. */
+ int signatureSize = PK11_SignatureLen(ctx->u.sig.privkey);
+ if(signatureSize < 1) {
+ xmlSecNssError("PK11_SignatureLen",
+ xmlSecTransformGetName(transform));
+ SECITEM_FreeItem(&signature, PR_FALSE);
+ return(-1);
+ }
+
+ signatureClr = DSAU_DecodeDerSigToLen(&signature, signatureSize);
+ if(signatureClr == NULL) {
+ xmlSecNssError("DSAU_DecodeDerSigToLen",
+ xmlSecTransformGetName(transform));
+ SECITEM_FreeItem(&signature, PR_FALSE);
+ return(-1);
+ }
}
ret = xmlSecBufferSetData(out, signatureClr->data, signatureClr->len);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d",
- signatureClr->len);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", signatureClr->len);
SECITEM_FreeItem(&signature, PR_FALSE);
return(-1);
}
@@ -517,12 +612,9 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* This signature is used as-is */
ret = xmlSecBufferSetData(out, signature.data, signature.len);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d",
- signature.len);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", signature.len);
SECITEM_FreeItem(&signature, PR_FALSE);
return(-1);
}
@@ -539,11 +631,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -551,6 +639,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
}
#ifndef XMLSEC_NO_DSA
+#ifndef XMLSEC_NO_SHA1
/****************************************************************************
*
* DSA-SHA1 signature transform
@@ -595,9 +684,295 @@ xmlSecTransformId
xmlSecNssTransformDsaSha1GetKlass(void) {
return(&xmlSecNssDsaSha1Klass);
}
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA256
+/****************************************************************************
+ *
+ * DSA-SHA256 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssDsaSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameDsaSha256, /* const xmlChar* name; */
+ xmlSecHrefDsaSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformDsaSha256GetKlass:
+ *
+ * The DSA-SHA256 signature transform klass.
+ *
+ * Returns: DSA-SHA256 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformDsaSha256GetKlass(void) {
+ return(&xmlSecNssDsaSha256Klass);
+}
+#endif /* XMLSEC_NO_SHA256 */
#endif /* XMLSEC_NO_DSA */
+#ifndef XMLSEC_NO_ECDSA
+#ifndef XMLSEC_NO_SHA1
+/****************************************************************************
+ *
+ * ECDSA-SHA1 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssEcdsaSha1Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha1, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha1, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformEcdsaSha1GetKlass:
+ *
+ * The ECDSA-SHA1 signature transform klass.
+ *
+ * Returns: ECDSA-SHA1 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformEcdsaSha1GetKlass(void) {
+ return(&xmlSecNssEcdsaSha1Klass);
+}
+
+#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/****************************************************************************
+ *
+ * ECDSA-SHA224 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssEcdsaSha224Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha224, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha224, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformEcdsaSha224GetKlass:
+ *
+ * The ECDSA-SHA224 signature transform klass.
+ *
+ * Returns: ECDSA-SHA224 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformEcdsaSha224GetKlass(void) {
+ return(&xmlSecNssEcdsaSha224Klass);
+}
+
+#endif /* XMLSEC_NO_SHA224 */
+#ifndef XMLSEC_NO_SHA256
+/****************************************************************************
+ *
+ * ECDSA-SHA256 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssEcdsaSha256Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha256, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha256, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformEcdsaSha256GetKlass:
+ *
+ * The ECDSA-SHA256 signature transform klass.
+ *
+ * Returns: ECDSA-SHA256 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformEcdsaSha256GetKlass(void) {
+ return(&xmlSecNssEcdsaSha256Klass);
+}
+
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+/****************************************************************************
+ *
+ * ECDSA-SHA384 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssEcdsaSha384Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha384, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha384, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformEcdsaSha384GetKlass:
+ *
+ * The ECDSA-SHA384 signature transform klass.
+ *
+ * Returns: ECDSA-SHA384 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformEcdsaSha384GetKlass(void) {
+ return(&xmlSecNssEcdsaSha384Klass);
+}
+
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+/****************************************************************************
+ *
+ * ECDSA-SHA512 signature transform
+ *
+ ***************************************************************************/
+
+static xmlSecTransformKlass xmlSecNssEcdsaSha512Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameEcdsaSha512, /* const xmlChar* name; */
+ xmlSecHrefEcdsaSha512, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformEcdsaSha512GetKlass:
+ *
+ * The ECDSA-SHA512 signature transform klass.
+ *
+ * Returns: ECDSA-SHA512 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformEcdsaSha512GetKlass(void) {
+ return(&xmlSecNssEcdsaSha512Klass);
+}
+
+#endif /* XMLSEC_NO_SHA512 */
+#endif /* XMLSEC_NO_ECDSA */
+
#ifndef XMLSEC_NO_RSA
#ifndef XMLSEC_NO_MD5
@@ -695,6 +1070,52 @@ xmlSecNssTransformRsaSha1GetKlass(void) {
#endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+/****************************************************************************
+ *
+ * RSA-SHA224 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecNssRsaSha224Klass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecNssSignatureSize, /* xmlSecSize objSize */
+
+ xmlSecNameRsaSha224, /* const xmlChar* name; */
+ xmlSecHrefRsaSha224, /* const xmlChar* href; */
+ xmlSecTransformUsageSignatureMethod, /* xmlSecTransformUsage usage; */
+
+ xmlSecNssSignatureInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecNssSignatureFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecNssSignatureSetKeyReq, /* xmlSecTransformSetKeyReqMethod setKeyReq; */
+ xmlSecNssSignatureSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ xmlSecNssSignatureVerify, /* xmlSecTransformVerifyMethod verify; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecNssSignatureExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+ * xmlSecNssTransformRsaSha224GetKlass:
+ *
+ * The RSA-SHA224 signature transform klass.
+ *
+ * Returns: RSA-SHA224 signature transform klass.
+ */
+xmlSecTransformId
+xmlSecNssTransformRsaSha224GetKlass(void) {
+ return(&xmlSecNssRsaSha224Klass);
+}
+
+#endif /* XMLSEC_NO_SHA224 */
#ifndef XMLSEC_NO_SHA256
/****************************************************************************
*
diff --git a/src/nss/symkeys.c b/src/nss/symkeys.c
index b98dd493..2fd3e4e7 100644
--- a/src/nss/symkeys.c
+++ b/src/nss/symkeys.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for NSS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
diff --git a/src/nss/x509.c b/src/nss/x509.c
index 887c77cf..933e5bfe 100644
--- a/src/nss/x509.c
+++ b/src/nss/x509.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +7,13 @@
*
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:x509
+ * @Short_description: X509 certificates implementation for NSS.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -374,22 +379,14 @@ xmlSecNssKeyDataX509AdoptCert(xmlSecKeyDataPtr data, CERTCertificate* cert) {
if(ctx->certsList == NULL) {
ctx->certsList = CERT_NewCertList();
if(ctx->certsList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CERT_NewCertList",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_NewCertList", xmlSecKeyDataGetName(data));
return(-1);
}
}
ret = CERT_AddCertToListTail(ctx->certsList, cert);
if(ret != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CERT_AddCertToListTail",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_AddCertToListTail", xmlSecKeyDataGetName(data));
return(-1);
}
ctx->numCerts++;
@@ -470,13 +467,8 @@ xmlSecNssKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, CERTSignedCrl* crl) {
xmlSecAssert2(ctx != NULL, -1);
crlnode = (xmlSecNssX509CrlNodePtr)PR_Malloc(sizeof(xmlSecNssX509CrlNode));
-
if(crlnode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "PR_Malloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PR_Malloc", xmlSecKeyDataGetName(data));
return(-1);
}
@@ -574,31 +566,22 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
*/
certSrc = xmlSecNssKeyDataX509GetCert(src, pos);
if(certSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecNssKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCert",
+ xmlSecKeyDataGetName(src),
+ "pos=%d", pos);
return(-1);
}
certDst = CERT_DupCertificate(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_DupCertificate", xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecNssKeyDataX509AdoptCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(dst));
CERT_DestroyCertificate(certDst);
return(-1);
}
@@ -609,31 +592,22 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
for(pos = 0; pos < size; ++pos) {
crlSrc = xmlSecNssKeyDataX509GetCrl(src, pos);
if(crlSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecNssKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCrl",
+ xmlSecKeyDataGetName(src),
+ "pos=%d", pos);
return(-1);
}
crlDst = SEC_DupCrl(crlSrc);
if(crlDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "SEC_DupCrl",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SEC_DupCrl", xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecNssKeyDataX509AdoptCrl(dst, crlDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecNssKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(dst));
SEC_DestroyCrl(crlDst);
return(-1);
}
@@ -644,20 +618,14 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(certSrc != NULL) {
certDst = CERT_DupCertificate(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_DupCertificate",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecNssKeyDataX509AdoptKeyCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecNssKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(dst));
CERT_DestroyCertificate(certDst);
return(-1);
}
@@ -701,7 +669,7 @@ xmlSecNssKeyDataX509Finalize(xmlSecKeyDataPtr data) {
static int
xmlSecNssKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
- xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
xmlSecKeyDataPtr data;
int ret;
@@ -712,34 +680,23 @@ xmlSecNssKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyEnsureData(key, id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecNssX509DataNodeRead(data, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509DataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509DataNodeRead",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
- if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
- ret = xmlSecNssKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
+ ret = xmlSecNssKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
}
return(0);
}
@@ -759,13 +716,11 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(node != NULL, -1);
xmlSecAssert2(keyInfoCtx != NULL, -1);
- content = xmlSecX509DataGetNodeContent (node, 1, keyInfoCtx);
+ content = xmlSecX509DataGetNodeContent (node, keyInfoCtx);
if (content < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecX509DataGetNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "content=%d", content);
+ xmlSecInternalError2("xmlSecX509DataGetNodeContent",
+ xmlSecKeyDataKlassGetName(id),
+ "content=%d", content);
return(-1);
} else if(content == 0) {
/* by default we are writing certificates and crls */
@@ -784,22 +739,18 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
cert = xmlSecNssKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCert",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
ret = xmlSecNssX509CertificateNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509CertificateNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssX509CertificateNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -807,11 +758,9 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
ret = xmlSecNssX509SubjectNameNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509SubjectNameNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssX509SubjectNameNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -819,11 +768,9 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
ret = xmlSecNssX509IssuerSerialNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509IssuerSerialNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssX509IssuerSerialNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -831,11 +778,9 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
ret = xmlSecNssX509SKINodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509SKINodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssX509SKINodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -847,21 +792,17 @@ xmlSecNssKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
crl = xmlSecNssKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCrl",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
ret = xmlSecNssX509CRLNodeWrite(crl, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssX509CRLNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssX509CRLNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -905,11 +846,9 @@ xmlSecNssKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecNssKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "==== Certificate:\n");
@@ -939,11 +878,9 @@ xmlSecNssKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecNssKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecNssKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "<Certificate>\n");
@@ -968,32 +905,44 @@ xmlSecNssX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoC
cur != NULL;
cur = xmlSecGetNextElementNode(cur->next)) {
- ret = 0;
if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
ret = xmlSecNssX509CertificateNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssX509CertificateNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
ret = xmlSecNssX509SubjectNameNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssX509SubjectNameNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
ret = xmlSecNssX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssX509IssuerSerialNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
ret = xmlSecNssX509SKINodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssX509SKINodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
ret = xmlSecNssX509CRLNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNssX509CRLNodeRead",
+ xmlSecKeyDataGetName(data));
+ return(-1);
+ }
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation: ignore unknown nodes */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "read node failed");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
return(-1);
}
}
@@ -1016,11 +965,7 @@ xmlSecNssX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1028,22 +973,16 @@ xmlSecNssX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
cert = xmlSecNssX509CertBase64DerRead(content);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssX509CertBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CertBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CERT_DestroyCertificate(cert);
xmlFree(content);
return(-1);
@@ -1065,29 +1004,20 @@ xmlSecNssX509CertificateNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSec
/* set base64 lines size from context */
buf = xmlSecNssX509CertBase64DerWrite(cert, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509CertBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CertBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509Certificate)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
return(0);
@@ -1107,11 +1037,8 @@ xmlSecNssX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1121,11 +1048,7 @@ xmlSecNssX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
xmlFree(subject);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1135,12 +1058,8 @@ xmlSecNssX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "subject=%s",
- xmlSecErrorsSafeString(subject));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "subject=%s", xmlSecErrorsSafeString(subject));
xmlFree(subject);
return(-1);
}
@@ -1151,11 +1070,8 @@ xmlSecNssX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecK
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CERT_DestroyCertificate(cert);
xmlFree(subject);
return(-1);
@@ -1169,32 +1085,32 @@ static int
xmlSecNssX509SubjectNameNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar* buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
buf = xmlSecNssX509NameWrite(&(cert->subject));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameWrite(&(cert->subject))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509NameWrite(&(cert->subject))", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SubjectName)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
+
+ /* done */
xmlFree(buf);
return(0);
}
@@ -1215,23 +1131,16 @@ xmlSecNssX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSec
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
cur = xmlSecGetNextElementNode(node->children);
if(cur == NULL) {
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
return(-1);
}
return(0);
@@ -1239,56 +1148,32 @@ xmlSecNssX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSec
/* the first is required node X509IssuerName */
if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509IssuerName, xmlSecKeyDataGetName(data));
return(-1);
}
issuerName = xmlNodeGetContent(cur);
if(issuerName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is required node X509SerialNumber */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509SerialNumber, xmlSecKeyDataGetName(data));
xmlFree(issuerName);
return(-1);
}
issuerSerial = xmlNodeGetContent(cur);
if(issuerSerial == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
xmlFree(issuerName);
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1297,13 +1182,10 @@ xmlSecNssX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSec
cert = xmlSecNssX509StoreFindCert(x509Store, NULL, issuerName, issuerSerial, NULL, keyInfoCtx);
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "issuerName=%s;issuerSerial=%s",
- xmlSecErrorsSafeString(issuerName),
- xmlSecErrorsSafeString(issuerSerial));
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "issuerName=%s;issuerSerial=%s",
+ xmlSecErrorsSafeString(issuerName),
+ xmlSecErrorsSafeString(issuerSerial));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1316,11 +1198,8 @@ xmlSecNssX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSec
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CERT_DestroyCertificate(cert);
xmlFree(issuerSerial);
xmlFree(issuerName);
@@ -1338,64 +1217,48 @@ xmlSecNssX509IssuerSerialNodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSe
xmlNodePtr issuerNameNode;
xmlNodePtr issuerNumberNode;
xmlChar* buf;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
/* create xml nodes */
- cur = xmlSecAddChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerSerial)", NULL);
return(-1);
}
- issuerNameNode = xmlSecAddChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ issuerNameNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
if(issuerNameNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509IssuerName)", NULL);
return(-1);
}
- issuerNumberNode = xmlSecAddChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ issuerNumberNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
if(issuerNumberNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SerialNumber)", NULL);
return(-1);
}
/* write data */
buf = xmlSecNssX509NameWrite(&(cert->issuer));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameWrite(&(cert->issuer))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509NameWrite(&(cert->issuer))", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNameNode)", NULL);
+ xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
xmlFree(buf);
buf = xmlSecNssASN1IntegerWrite(&(cert->serialNumber));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssASN1IntegerWrite(&(cert->serialNumber))",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssASN1IntegerWrite(&(cert->serialNumber))", NULL);
return(-1);
}
xmlNodeSetContent(issuerNumberNode, buf);
@@ -1418,11 +1281,8 @@ xmlSecNssX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1432,12 +1292,7 @@ xmlSecNssX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
xmlFree(ski);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1448,12 +1303,8 @@ xmlSecNssX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
xmlFree(ski);
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "ski=%s", xmlSecErrorsSafeString(ski));
return(-1);
}
return(0);
@@ -1461,11 +1312,8 @@ xmlSecNssX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
CERT_DestroyCertificate(cert);
xmlFree(ski);
return(-1);
@@ -1479,34 +1327,33 @@ static int
xmlSecNssX509SKINodeWrite(CERTCertificate* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar *buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
buf = xmlSecNssX509SKIWrite(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509SKIWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509SKIWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509SKI)", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
- xmlFree(buf);
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1525,11 +1372,7 @@ xmlSecNssX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1537,11 +1380,8 @@ xmlSecNssX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyInfoCt
crl = xmlSecNssX509CrlBase64DerRead(content, keyInfoCtx);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssX509CrlBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CrlBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
@@ -1563,28 +1403,19 @@ xmlSecNssX509CRLNodeWrite(CERTSignedCrl* crl, xmlNodePtr node, xmlSecKeyInfoCtxP
/* set base64 lines size from context */
buf = xmlSecNssX509CrlBase64DerWrite(crl, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509CrlBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CrlBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(NodeX509CRL)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
@@ -1611,11 +1442,8 @@ xmlSecNssKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr key,
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecNssX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1628,42 +1456,30 @@ xmlSecNssKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr key,
ctx->keyCert = CERT_DupCertificate(cert);
if(ctx->keyCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("CERT_DupCertificate",
+ xmlSecKeyDataGetName(data));
return(-1);
}
keyValue = xmlSecNssX509CertGetKey(ctx->keyCert);
if(keyValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CertGetKey",
+ xmlSecKeyDataGetName(data));
return(-1);
}
/* verify that the key matches our expectations */
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
ret = xmlSecKeySetValue(key, keyValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
@@ -1672,31 +1488,21 @@ xmlSecNssKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr key,
if (status == SECSuccess) {
ret = xmlSecNssX509CertGetTime(&notBefore, &(key->notValidBefore));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidBefore");
+ xmlSecInternalError("xmlSecNssX509CertGetTime(notValidBefore)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = xmlSecNssX509CertGetTime(&notAfter, &(key->notValidAfter));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecNssX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidAfter");
+ xmlSecInternalError("xmlSecNssX509CertGetTime(notValidAfter)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
} else {
key->notValidBefore = key->notValidAfter = 0;
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data), NULL);
return(-1);
}
}
@@ -1742,21 +1548,13 @@ xmlSecNssX509CertGetKey(CERTCertificate* cert) {
pubkey = CERT_ExtractPublicKey(cert);
if(pubkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_ExtractPublicKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_ExtractPublicKey", NULL);
return(NULL);
}
data = xmlSecNssPKIAdoptKey(NULL, pubkey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssPKIAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssPKIAdoptKey", NULL);
SECKEY_DestroyPublicKey(pubkey);
return(NULL);
}
@@ -1773,11 +1571,7 @@ xmlSecNssX509CertBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1800,11 +1594,7 @@ xmlSecNssX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
cert = __CERT_NewTempCertificate(CERT_GetDefaultCertDB(), &derCert,
NULL, PR_FALSE, PR_TRUE);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "__CERT_NewTempCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("__CERT_NewTempCertificate", NULL);
return(NULL);
}
@@ -1821,23 +1611,14 @@ xmlSecNssX509CertBase64DerWrite(CERTCertificate* cert, int base64LineWrap) {
xmlSecAssert2(cert != NULL, NULL);
p = cert->derCert.data;
+ xmlSecAssert2(p != NULL, NULL);
+
size = cert->derCert.len;
- if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "cert->derCert",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
- return(NULL);
- }
+ xmlSecAssert2(size > 0, NULL);
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
return(NULL);
}
@@ -1854,11 +1635,7 @@ xmlSecNssX509CrlBase64DerRead(xmlChar* buf,
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1886,26 +1663,19 @@ xmlSecNssX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
*/
slot = xmlSecNssGetInternalKeySlot();
if (slot == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssGetInternalKeySlot",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssGetInternalKeySlot", NULL);
return NULL;
}
- if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS) != 0)
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS) != 0) {
importOptions |= CRL_IMPORT_BYPASS_CHECKS;
+ }
crl = PK11_ImportCRL(slot, &derCrl, NULL, SEC_CRL_TYPE, NULL,
importOptions, NULL, CRL_DECODE_DEFAULT_OPTIONS);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PK11_ImportCRL",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("PK11_ImportCRL", NULL);
PK11_FreeSlot(slot);
return(NULL);
}
@@ -1923,23 +1693,14 @@ xmlSecNssX509CrlBase64DerWrite(CERTSignedCrl* crl, int base64LineWrap) {
xmlSecAssert2(crl != NULL && crl->derCrl != NULL, NULL);
p = crl->derCrl->data;
+ xmlSecAssert2(p != NULL, NULL);
+
size = crl->derCrl->len;
- if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "crl->derCrl",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
- return(NULL);
- }
+ xmlSecAssert2(size > 0, NULL);
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
return(NULL);
}
@@ -1955,21 +1716,13 @@ xmlSecNssX509NameWrite(CERTName* nm) {
str = CERT_NameToAscii(nm);
if (str == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_NameToAscii",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("CERT_NameToAscii", NULL);
return(NULL);
}
res = xmlStrdup(BAD_CAST str);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(BAD_CAST str, NULL);
PORT_Free(str);
return(NULL);
}
@@ -1987,23 +1740,21 @@ xmlSecNssASN1IntegerWrite(SECItem *num) {
xmlSecAssert2(num != NULL, NULL);
xmlSecAssert2(num->type == siBuffer, NULL);
- xmlSecAssert2(num->len <= 9, NULL);
xmlSecAssert2(num->data != NULL, NULL);
/* HACK : to be fixed after
* NSS bug http://bugzilla.mozilla.org/show_bug.cgi?id=212864 is fixed
*/
for(ii = num->len; ii > 0; --ii, shift += 8) {
- val |= ((PRUint64)num->data[ii - 1]) << shift;
+ xmlSecAssert2(shift < 64 || num->data[ii - 1] == 0, NULL);
+ if(num->data[ii - 1] != 0) {
+ val |= ((PRUint64)num->data[ii - 1]) << shift;
+ }
}
res = (xmlChar*)xmlMalloc(resLen + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(resLen + 1, NULL);
return (NULL);
}
@@ -2023,22 +1774,14 @@ xmlSecNssX509SKIWrite(CERTCertificate* cert) {
rv = CERT_FindSubjectKeyIDExtension(cert, &ski);
if (rv != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_FindSubjectKeyIDExtension",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("CERT_FindSubjectKeyIDExtension", NULL);
SECITEM_FreeItem(&ski, PR_FALSE);
return(NULL);
}
res = xmlSecBase64Encode(ski.data, ski.len, 0);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
SECITEM_FreeItem(&ski, PR_FALSE);
return(NULL);
}
@@ -2178,43 +1921,30 @@ xmlSecNssKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
cert = xmlSecNssX509CertDerRead(buf, bufSize);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509CertDerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509CertDerRead", NULL);
return(-1);
}
data = xmlSecKeyEnsureData(key, xmlSecNssKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
CERT_DestroyCertificate(cert);
return(-1);
}
ret = xmlSecNssKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509AdoptCert",
+ xmlSecKeyDataKlassGetName(id));
CERT_DestroyCertificate(cert);
return(-1);
}
ret = xmlSecNssKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecNssKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
return(0);
diff --git a/src/nss/x509vfy.c b/src/nss/x509vfy.c
index 9e957fea..b5ffc8c4 100644
--- a/src/nss/x509vfy.c
+++ b/src/nss/x509vfy.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +7,13 @@
*
* Copyright (c) 2003 America Online, Inc. All rights reserved.
*/
+/**
+ * SECTION:x509vfy
+ * @Short_description: X509 certificates verification support functions for NSS.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -168,6 +173,7 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
SECStatus status = SECFailure;
int64 timeboundary;
int64 tmp1, tmp2;
+ PRErrorCode err;
xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecNssX509StoreId), NULL);
xmlSecAssert2(certs != NULL, NULL);
@@ -176,19 +182,20 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
ctx = xmlSecNssX509StoreGetCtx(store);
xmlSecAssert2(ctx != NULL, NULL);
+ if(keyInfoCtx->certsVerificationTime > 0) {
+ /* convert the time since epoch in seconds to microseconds */
+ LL_UI2L(timeboundary, keyInfoCtx->certsVerificationTime);
+ tmp1 = (int64)PR_USEC_PER_SEC;
+ tmp2 = timeboundary;
+ LL_MUL(timeboundary, tmp1, tmp2);
+ } else {
+ timeboundary = PR_Now();
+ }
+
for (head = CERT_LIST_HEAD(certs);
!CERT_LIST_END(head, certs);
head = CERT_LIST_NEXT(head)) {
cert = head->cert;
- if(keyInfoCtx->certsVerificationTime > 0) {
- /* convert the time since epoch in seconds to microseconds */
- LL_UI2L(timeboundary, keyInfoCtx->certsVerificationTime);
- tmp1 = (int64)PR_USEC_PER_SEC;
- tmp2 = timeboundary;
- LL_MUL(timeboundary, tmp1, tmp2);
- } else {
- timeboundary = PR_Now();
- }
/* if cert is the issuer of any other cert in the list, then it is
* to be skipped */
@@ -211,11 +218,18 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
continue;
}
- status = CERT_VerifyCertificate(CERT_GetDefaultCertDB(),
- cert, PR_FALSE,
- (SECCertificateUsage)0,
- timeboundary , NULL, NULL, NULL);
- if (status == SECSuccess) {
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
+ /* it's important to set the usage here, otherwise no real verification
+ * is performed. */
+ status = CERT_VerifyCertificate(CERT_GetDefaultCertDB(),
+ cert, PR_FALSE,
+ certificateUsageEmailSigner,
+ timeboundary , NULL, NULL, NULL);
+ if(status == SECSuccess) {
+ break;
+ }
+ } else {
+ status = SECSuccess;
break;
}
}
@@ -224,44 +238,34 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
return (cert);
}
- switch(PORT_GetError()) {
+ err = PORT_GetError();
+ switch(err) {
case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE:
case SEC_ERROR_CA_CERT_INVALID:
case SEC_ERROR_UNKNOWN_SIGNER:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_ISSUER_FAILED,
- "cert with subject name %s could not be verified because the issuer's cert is expired/invalid or not found",
- (cert != NULL) ? cert->subjectName : "(NULL)"
- );
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_ISSUER_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=\"%s\"; reason=the issuer's cert is expired/invalid or not found",
+ xmlSecErrorsSafeString(cert->subjectName));
break;
case SEC_ERROR_EXPIRED_CERTIFICATE:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
- "cert with subject name %s has expired",
- (cert != NULL) ? cert->subjectName : "(NULL)"
- );
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=\"%s\"; reason=expired",
+ xmlSecErrorsSafeString(cert->subjectName));
break;
case SEC_ERROR_REVOKED_CERTIFICATE:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_REVOKED,
- "cert with subject name %s has been revoked",
- (cert != NULL) ? cert->subjectName : "(NULL)"
- );
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_REVOKED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=\"%s\"; reason=revoked",
+ xmlSecErrorsSafeString(cert->subjectName));
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
- "cert with subject name %s could not be verified, errcode %d",
- (cert != NULL) ? cert->subjectName : "(NULL)",
- PORT_GetError());
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=\"%s\"; reason=%d",
+ xmlSecErrorsSafeString(cert->subjectName),
+ (int)err);
break;
}
@@ -279,7 +283,7 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
* Returns: 0 on success or a negative value if an error occurs.
*/
int
-xmlSecNssX509StoreAdoptCert(xmlSecKeyDataStorePtr store, CERTCertificate* cert, xmlSecKeyDataType type ATTRIBUTE_UNUSED) {
+xmlSecNssX509StoreAdoptCert(xmlSecKeyDataStorePtr store, CERTCertificate* cert, xmlSecKeyDataType type) {
xmlSecNssX509StoreCtxPtr ctx;
int ret;
@@ -292,25 +296,34 @@ xmlSecNssX509StoreAdoptCert(xmlSecKeyDataStorePtr store, CERTCertificate* cert,
if(ctx->certsList == NULL) {
ctx->certsList = CERT_NewCertList();
if(ctx->certsList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CERT_NewCertList",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_NewCertList", xmlSecKeyDataStoreGetName(store));
return(-1);
}
}
ret = CERT_AddCertToListTail(ctx->certsList, cert);
if(ret != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "CERT_AddCertToListTail",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_AddCertToListTail", xmlSecKeyDataStoreGetName(store));
return(-1);
}
+ if(type == xmlSecKeyDataTypeTrusted) {
+ SECStatus status;
+
+ /* if requested, mark the certificate as trusted */
+ CERTCertTrust trust;
+ status = CERT_DecodeTrustString(&trust, "TCu,Cu,Tu");
+ if(status != SECSuccess) {
+ xmlSecNssError("CERT_DecodeTrustString", xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+ CERT_ChangeCertTrust(CERT_GetDefaultCertDB(), cert, &trust);
+ if(status != SECSuccess) {
+ xmlSecNssError("CERT_ChangeCertTrust", xmlSecKeyDataStoreGetName(store));
+ return(-1);
+ }
+ }
+
return(0);
}
@@ -364,12 +377,7 @@ xmlSecNssGetCertName(const xmlChar * name) {
*/
name2 = xmlStrdup(name);
if(name2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "xmlStrlen(name)=%d",
- xmlStrlen(name));
+ xmlSecStrdupError(name, NULL);
return(NULL);
}
while( (p = (xmlChar*)xmlStrstr(name2, BAD_CAST "emailAddress=")) != NULL) {
@@ -378,31 +386,23 @@ xmlSecNssGetCertName(const xmlChar * name) {
tmp = xmlSecNssX509NameRead(name2, xmlStrlen(name2));
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name2=\"%s\"",
- xmlSecErrorsSafeString(name2));
+ xmlSecInternalError2("xmlSecNssX509NameRead", NULL,
+ "name2=\"%s\"", xmlSecErrorsSafeString(name2));
xmlFree(name2);
return(NULL);
}
res = CERT_AsciiToName((char*)tmp);
- if (name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_AsciiToName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ascii=\"%s\", error code=%d",
- xmlSecErrorsSafeString((char*)tmp),
- PORT_GetError());
+ if (res == NULL) {
+ xmlSecNssError2("CERT_AsciiToName", NULL,
+ "ascii=\"%s\"", xmlSecErrorsSafeString((char*)tmp));
PORT_Free(tmp);
xmlFree(name2);
return(NULL);
}
PORT_Free(tmp);
+ xmlFree(name2);
return(res);
}
@@ -422,23 +422,16 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
if ((cert == NULL) && (subjectName != NULL)) {
name = xmlSecNssGetCertName(subjectName);
if (name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssGetCertName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "subject=%s",
- xmlSecErrorsSafeString(subjectName));
+ xmlSecInternalError2("xmlSecNssGetCertName", NULL,
+ "subject=%s",
+ xmlSecErrorsSafeString(subjectName));
goto done;
}
if(arena == NULL) {
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PORT_NewArena",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PORT_NewArena", NULL);
goto done;
}
}
@@ -446,11 +439,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
nameitem = SEC_ASN1EncodeItem(arena, NULL, (void *)name,
SEC_ASN1_GET(CERT_NameTemplate));
if (nameitem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_ASN1EncodeItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SEC_ASN1EncodeItem", NULL);
goto done;
}
@@ -463,23 +452,16 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
name = xmlSecNssGetCertName(issuerName);
if (name == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssGetCertName",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "issuer=%s",
- xmlSecErrorsSafeString(issuerName));
+ xmlSecInternalError2("xmlSecNssGetCertName", NULL,
+ "issuer=%s",
+ xmlSecErrorsSafeString(issuerName));
goto done;
}
if(arena == NULL) {
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PORT_NewArena",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError("PORT_NewArena", NULL);
goto done;
}
}
@@ -487,11 +469,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
nameitem = SEC_ASN1EncodeItem(arena, NULL, (void *)name,
SEC_ASN1_GET(CERT_NameTemplate));
if (nameitem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SEC_ASN1EncodeItem",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("SEC_ASN1EncodeItem", NULL);
goto done;
}
@@ -502,22 +480,14 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
/* TBD: serial num can be arbitrarily long */
if(PR_sscanf((char *)issuerSerial, "%llu", &issuerSN) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PR_sscanf",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "error code=%d", PR_GetError());
+ xmlSecNssError("PR_sscanf(issuerSerial)", NULL);
SECITEM_FreeItem(&issuerAndSN.serialNumber, PR_FALSE);
goto done;
}
rv = xmlSecNssNumToItem(&issuerAndSN.serialNumber, issuerSN);
if(rv <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssNumToItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "error code=%d", PR_GetError());
+ xmlSecInternalError("xmlSecNssNumToItem(serialNumber)", NULL);
SECITEM_FreeItem(&issuerAndSN.serialNumber, PR_FALSE);
goto done;
}
@@ -532,12 +502,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
len = xmlSecBase64Decode(ski, (xmlSecByte*)ski, xmlStrlen(ski));
if(len < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
goto done;
}
@@ -561,11 +526,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
memset(&tmpitem, 0, sizeof(tmpitem));
status = CERT_FindSubjectKeyIDExtension(head->cert, &tmpitem);
if (status != SECSuccess) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_FindSubjectKeyIDExtension",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "ski");
+ xmlSecNssError("CERT_FindSubjectKeyIDExtension(ski)", NULL);
SECITEM_FreeItem(&tmpitem, PR_FALSE);
goto done;
}
@@ -575,11 +536,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
) {
cert = CERT_DupCertificate(head->cert);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CERT_DupCertificate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "error code=%d", PORT_GetError());
+ xmlSecNssError("CERT_DupCertificate", NULL);
SECITEM_FreeItem(&tmpitem, PR_FALSE);
goto done;
}
@@ -613,11 +570,8 @@ xmlSecNssX509NameRead(xmlSecByte *str, int len) {
/* return string should be no longer than input string */
retval = (xmlSecByte *)PORT_Alloc(len+1);
if(retval == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PORT_Alloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNssError2("PORT_Alloc", NULL,
+ "size=%d", (len+1));
return(NULL);
}
p = retval;
@@ -630,11 +584,7 @@ xmlSecNssX509NameRead(xmlSecByte *str, int len) {
nameLen = xmlSecNssX509NameStringRead(&str, &len, name, sizeof(name), '=', 0);
if(nameLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509NameStringRead", NULL);
goto done;
}
memcpy(p, name, nameLen);
@@ -646,11 +596,7 @@ xmlSecNssX509NameRead(xmlSecByte *str, int len) {
valueLen = xmlSecNssX509NameStringRead(&str, &len,
value, sizeof(value), '"', 1);
if(valueLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509NameStringRead", NULL);
goto done;
}
/* skip spaces before comma or semicolon */
@@ -658,11 +604,7 @@ xmlSecNssX509NameRead(xmlSecByte *str, int len) {
++str; --len;
}
if((len > 0) && ((*str) != ',')) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "comma is expected");
+ xmlSecInvalidIntegerDataError("char", (*str), "comma ','", NULL);
goto done;
}
if(len > 0) {
@@ -674,21 +616,13 @@ xmlSecNssX509NameRead(xmlSecByte *str, int len) {
*p++='\"';
} else if((*str) == '#') {
/* TODO: read octect values */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "reading octect values is not implemented yet");
+ xmlSecNotImplementedError("reading octect values is not implemented yet");
goto done;
} else {
valueLen = xmlSecNssX509NameStringRead(&str, &len,
value, sizeof(value), ',', 1);
if(valueLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNssX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNssX509NameStringRead", NULL);
goto done;
}
memcpy(p, value, valueLen);
@@ -734,22 +668,14 @@ xmlSecNssX509NameStringRead(xmlSecByte **str, int *strLen,
nonSpace = q;
if(xmlSecIsHex((*p))) {
if((p - (*str) + 1) >= (*strLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "two hex digits expected");
+ xmlSecInvalidDataError("two hex digits expected", NULL);
return(-1);
}
*(q++) = xmlSecGetHex(p[0]) * 16 + xmlSecGetHex(p[1]);
p += 2;
} else {
if(((++p) - (*str)) >= (*strLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "escaped symbol missed");
+ xmlSecInvalidDataError("escaped symbol missed", NULL);
return(-1);
}
*(q++) = *(p++);
@@ -757,11 +683,7 @@ xmlSecNssX509NameStringRead(xmlSecByte **str, int *strLen,
}
}
if(((p - (*str)) < (*strLen)) && ((*p) != delim)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "buffer is too small");
+ xmlSecInvalidSizeOtherError("buffer is too small", NULL);
return(-1);
}
(*strLen) -= (p - (*str));
@@ -793,7 +715,8 @@ xmlSecNssNumToItem(SECItem *it, PRUint64 ui)
** require progressively more space. Start from 1 because byte at
** position 0 is zero
*/
- for(zeros_len = 1; (zeros_len < sizeof(bb)) && (bb[zeros_len] == 0); ++zeros_len);
+ for(zeros_len = 1; (zeros_len < sizeof(bb)) && (bb[zeros_len] == 0); ++zeros_len) {
+ }
it->len = sizeof(bb) - (zeros_len - 1);
it->data = (unsigned char *)PORT_Alloc(it->len);
diff --git a/src/openssl/Makefile.am b/src/openssl/Makefile.am
index 309a44b2..df014c84 100644
--- a/src/openssl/Makefile.am
+++ b/src/openssl/Makefile.am
@@ -35,12 +35,9 @@ libxmlsec1_openssl_la_SOURCES =\
x509.c \
x509vfy.c \
globals.h \
+ openssl_compat.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_openssl_la_SOURCES += ../strings.c
-endif
-
libxmlsec1_openssl_la_LIBADD = \
$(OPENSSL_LIBS) \
$(LIBXSLT_LIBS) \
diff --git a/src/openssl/README b/src/openssl/README
index e33b0b0a..b3808a65 100644
--- a/src/openssl/README
+++ b/src/openssl/README
@@ -1,6 +1,6 @@
WHAT VERSION OF OPENSSL?
------------------------------------------------------------------------
-OpenSSL 0.9.8 or later is required
+OpenSSL 1.0.0 or later is required
KEYS MANAGER
------------------------------------------------------------------------
diff --git a/src/openssl/app.c b/src/openssl/app.c
index d7bb79ef..aa92b6f9 100644
--- a/src/openssl/app.c
+++ b/src/openssl/app.c
@@ -1,11 +1,18 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for OpenSSL.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -33,8 +40,10 @@
#include <xmlsec/openssl/evp.h>
#include <xmlsec/openssl/x509.h>
-static int xmlSecOpenSSLAppLoadRANDFile (const char *file);
-static int xmlSecOpenSSLAppSaveRANDFile (const char *file);
+#include "openssl_compat.h"
+
+static int xmlSecOpenSSLAppLoadRANDFile (const char *filename);
+static int xmlSecOpenSSLAppSaveRANDFile (const char *filename);
static int xmlSecOpenSSLDefaultPasswordCallback (char *buf,
int bufsiz,
int verify,
@@ -46,6 +55,7 @@ static int xmlSecOpenSSLDummyPasswordCallback (char *buf,
/* conversion from ptr to func "the right way" */
XMLSEC_PTR_TO_FUNC_IMPL(pem_password_cb)
+XMLSEC_FUNC_TO_PTR_IMPL(pem_password_cb)
/**
@@ -60,25 +70,36 @@ XMLSEC_PTR_TO_FUNC_IMPL(pem_password_cb)
*/
int
xmlSecOpenSSLAppInit(const char* config) {
+#if !defined(XMLSEC_OPENSSL_API_110)
+
ERR_load_crypto_strings();
OPENSSL_config(NULL);
OpenSSL_add_all_algorithms();
+#else /* !defined(XMLSEC_OPENSSL_API_110) */
+ int ret;
+ uint64_t opts = OPENSSL_INIT_LOAD_CRYPTO_STRINGS |
+ OPENSSL_INIT_ADD_ALL_CIPHERS |
+ OPENSSL_INIT_ADD_ALL_DIGESTS |
+ OPENSSL_INIT_LOAD_CONFIG;
+#ifndef OPENSSL_IS_BORINGSSL
+ opts |= OPENSSL_INIT_ASYNC | OPENSSL_INIT_ENGINE_ALL_BUILTIN;
+#endif /* OPENSSL_IS_BORINGSSL */
+
+ ret = OPENSSL_init_crypto(opts, NULL);
+ if(ret != 1) {
+ xmlSecOpenSSLError("OPENSSL_init_crypto", NULL);
+ return(-1);
+ }
+#endif /* !defined(XMLSEC_OPENSSL_API_110) */
+
if((RAND_status() != 1) && (xmlSecOpenSSLAppLoadRANDFile(NULL) != 1)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppLoadRANDFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppLoadRANDFile", NULL);
return(-1);
}
if((config != NULL) && (xmlSecOpenSSLSetDefaultTrustedCertsFolder(BAD_CAST config) < 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLSetDefaultTrustedCertsFolder",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLSetDefaultTrustedCertsFolder", NULL);
return(-1);
}
@@ -98,26 +119,23 @@ int
xmlSecOpenSSLAppShutdown(void) {
xmlSecOpenSSLAppSaveRANDFile(NULL);
- RAND_cleanup();
- EVP_cleanup();
+ /* OpenSSL 1.1.0+ does not require explicit cleanup */
+#if !defined(XMLSEC_OPENSSL_API_110)
#ifndef XMLSEC_NO_X509
X509_TRUST_cleanup();
#endif /* XMLSEC_NO_X509 */
+ RAND_cleanup();
+ EVP_cleanup();
+
ENGINE_cleanup();
CONF_modules_unload(1);
CRYPTO_cleanup_all_ex_data();
-
- /* finally cleanup errors */
-#if defined(XMLSEC_OPENSSL_100) || defined(XMLSEC_OPENSSL_110)
ERR_remove_thread_state(NULL);
-#else
- ERR_remove_state(0);
-#endif /* defined(XMLSEC_OPENSSL_100) || defined(XMLSEC_OPENSSL_110) */
-
ERR_free_strings();
+#endif /* !defined(XMLSEC_OPENSSL_API_110) */
/* done */
return(0);
@@ -147,25 +165,15 @@ xmlSecOpenSSLAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
bio = BIO_new_file(filename, "rb");
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecOpenSSLError2("BIO_new_file", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(NULL);
}
key = xmlSecOpenSSLAppKeyLoadBIO (bio, format, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeyLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecInternalError2("xmlSecOpenSSLAppKeyLoadBIO", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
BIO_free(bio);
return(NULL);
}
@@ -200,22 +208,14 @@ xmlSecOpenSSLAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* this would be a read only BIO, cast from const is ok */
bio = BIO_new_mem_buf((void*)data, dataSize);
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_mem_buf",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "errno=%d",
- errno);
+ xmlSecOpenSSLError2("BIO_new_mem_buf", NULL,
+ "dataSize=%lu", (unsigned long)dataSize);
return(NULL);
}
key = xmlSecOpenSSLAppKeyLoadBIO (bio, format, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeyLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppKeyLoadBIO", NULL);
BIO_free(bio);
return(NULL);
}
@@ -269,11 +269,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
XMLSEC_PTR_TO_FUNC(pem_password_cb, pwdCallback),
pwdCallbackCtx);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PEM_read_bio_PrivateKey and PEM_read_bio_PUBKEY",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("PEM_read_bio_PrivateKey and PEM_read_bio_PUBKEY", NULL);
return(NULL);
}
}
@@ -286,11 +282,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
(void)BIO_reset(bio);
pKey = d2i_PUBKEY_bio(bio, NULL);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_PrivateKey_bio and d2i_PUBKEY_bio",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("d2i_PrivateKey_bio and d2i_PUBKEY_bio", NULL);
return(NULL);
}
}
@@ -301,11 +293,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
XMLSEC_PTR_TO_FUNC(pem_password_cb, pwdCallback),
pwdCallbackCtx);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PEM_read_bio_PrivateKey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("PEM_read_bio_PrivateKey", NULL);
return(NULL);
}
break;
@@ -315,11 +303,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
XMLSEC_PTR_TO_FUNC(pem_password_cb, pwdCallback),
pwdCallbackCtx);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_PrivateKey_bio and d2i_PUBKEY_bio",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("d2i_PrivateKey_bio and d2i_PUBKEY_bio", NULL);
return(NULL);
}
break;
@@ -327,11 +311,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
case xmlSecKeyDataFormatPkcs12:
key = xmlSecOpenSSLAppPkcs12LoadBIO(bio, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppPkcs12LoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppPkcs12LoadBIO", NULL);
return(NULL);
}
return(key);
@@ -340,55 +320,37 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
case xmlSecKeyDataFormatCertDer:
key = xmlSecOpenSSLAppKeyFromCertLoadBIO(bio, format);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeyFromCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppKeyFromCertLoadBIO", NULL);
return(NULL);
}
return(key);
#endif /* XMLSEC_NO_X509 */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
data = xmlSecOpenSSLEvpKeyAdopt(pKey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLEvpKeyAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyAdopt", NULL);
EVP_PKEY_free(pKey);
return(NULL);
}
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(data);
return(NULL);
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDestroy(key);
xmlSecKeyDataDestroy(data);
return(NULL);
@@ -422,25 +384,15 @@ xmlSecOpenSSLAppKeyCertLoad(xmlSecKeyPtr key, const char* filename, xmlSecKeyDat
bio = BIO_new_file(filename, "rb");
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecOpenSSLError2("BIO_new_file", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
ret = xmlSecOpenSSLAppKeyCertLoadBIO (key, bio, format);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeyCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecInternalError2("xmlSecOpenSSLAppKeyCertLoadBIO", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
BIO_free(bio);
return(-1);
}
@@ -473,22 +425,14 @@ xmlSecOpenSSLAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlS
/* this would be a read only BIO, cast from const is ok */
bio = BIO_new_mem_buf((void*)data, dataSize);
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_mem_buf",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "errno=%d",
- errno);
+ xmlSecOpenSSLError2("BIO_new_mem_buf", NULL,
+ "dataSize=%lu", (unsigned long)dataSize);
return(-1);
}
ret = xmlSecOpenSSLAppKeyCertLoadBIO (key, bio, format);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeyCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppKeyCertLoadBIO", NULL);
BIO_free(bio);
return(-1);
}
@@ -521,12 +465,8 @@ xmlSecOpenSSLAppKeyCertLoadBIO(xmlSecKeyPtr key, BIO* bio, xmlSecKeyDataFormat f
data = xmlSecKeyEnsureData(key, xmlSecOpenSSLKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecOpenSSLKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecTransformKlassGetName(xmlSecOpenSSLKeyDataX509Id));
return(-1);
}
@@ -544,22 +484,15 @@ xmlSecOpenSSLAppKeyCertLoadBIO(xmlSecKeyPtr key, BIO* bio, xmlSecKeyDataFormat f
cert = xmlSecOpenSSLAppCertLoadBIO(bio, certFormat);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppCertLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppCertLoad",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)));
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
X509_free(cert);
return(-1);
}
@@ -590,25 +523,15 @@ xmlSecOpenSSLAppPkcs12Load(const char *filename, const char *pwd,
bio = BIO_new_file(filename, "rb");
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecOpenSSLError2("BIO_new_file", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(NULL);
}
key = xmlSecOpenSSLAppPkcs12LoadBIO (bio, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppPkcs12LoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecInternalError2("xmlSecOpenSSLAppPkcs12LoadBIO", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
BIO_free(bio);
return(NULL);
}
@@ -643,22 +566,14 @@ xmlSecOpenSSLAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
/* this would be a read only BIO, cast from const is ok */
bio = BIO_new_mem_buf((void*)data, dataSize);
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_mem_buf",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "errno=%d",
- errno);
+ xmlSecOpenSSLError2("BIO_new_mem_buf", NULL,
+ "dataSize=%lu", (unsigned long)dataSize);
return(NULL);
}
key = xmlSecOpenSSLAppPkcs12LoadBIO (bio, pwd, pwdCallback, pwdCallbackCtx);
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppPkcs12LoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppPkcs12LoadBIO", NULL);
BIO_free(bio);
return(NULL);
}
@@ -698,56 +613,38 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
int ret;
xmlSecAssert2(bio != NULL, NULL);
+ UNREFERENCED_PARAMETER(pwdCallback);
+ UNREFERENCED_PARAMETER(pwdCallbackCtx);
p12 = d2i_PKCS12_bio(bio, NULL);
if(p12 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_PKCS12_fp",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("d2i_PKCS12_fp", NULL);
goto done;
}
- ret = PKCS12_verify_mac(p12, pwd, (pwd != NULL) ? strlen(pwd) : 0);
+ ret = PKCS12_verify_mac(p12, pwd, (pwd != NULL) ? (int)strlen(pwd) : 0);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PKCS12_verify_mac",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("PKCS12_verify_mac", NULL);
goto done;
}
ret = PKCS12_parse(p12, pwd, &pKey, &cert, &chain);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PKCS12_parse",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("PKCS12_parse", NULL);
goto done;
}
data = xmlSecOpenSSLEvpKeyAdopt(pKey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLEvpKeyAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyAdopt", NULL);
EVP_PKEY_free(pKey);
goto done;
}
x509Data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataX509Id);
if(x509Data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecOpenSSLKeyDataX509Id)));
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecTransformKlassGetName(xmlSecOpenSSLKeyDataX509Id));
goto done;
}
@@ -757,11 +654,7 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
if(chain == NULL) {
chain = sk_X509_new_null();
if(chain == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "sk_X509_new_null",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_new_null", NULL);
goto done;
}
}
@@ -789,23 +682,15 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
if(has_cert == 0) {
tmpcert = X509_dup(cert);
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
ret = sk_X509_push(chain, tmpcert);
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "sk_X509_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecOpenSSLError("sk_X509_push",
+ xmlSecKeyDataGetName(x509Data));
X509_free(tmpcert);
goto done;
}
@@ -813,12 +698,8 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
ret = xmlSecOpenSSLKeyDataX509AdoptKeyCert(x509Data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
cert = NULL;
@@ -828,46 +709,30 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
tmpcert = X509_dup(sk_X509_value(chain, i));
if(tmpcert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(x509Data));
X509_free(tmpcert);
goto done;
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(x509Data, tmpcert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(x509Data));
goto done;
}
}
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
goto done;
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -876,12 +741,8 @@ xmlSecOpenSSLAppPkcs12LoadBIO(BIO* bio, const char *pwd,
ret = xmlSecKeyAdoptData(key, x509Data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyAdoptData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "data=%s",
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(x509Data)));
+ xmlSecInternalError("xmlSecKeyAdoptData",
+ xmlSecKeyDataGetName(x509Data));
xmlSecKeyDestroy(key);
key = NULL;
goto done;
@@ -930,22 +791,14 @@ xmlSecOpenSSLAppKeyFromCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
/* load cert */
cert = xmlSecOpenSSLAppCertLoadBIO(bio, format);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppCertLoadBIO", NULL);
return(NULL);
}
/* get key value */
keyData = xmlSecOpenSSLX509CertGetKey(cert);
if(keyData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CertGetKey", NULL);
X509_free(cert);
return(NULL);
}
@@ -953,11 +806,7 @@ xmlSecOpenSSLAppKeyFromCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
/* create key */
key = xmlSecKeyCreate();
if(key == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyCreate", NULL);
xmlSecKeyDataDestroy(keyData);
X509_free(cert);
return(NULL);
@@ -966,11 +815,7 @@ xmlSecOpenSSLAppKeyFromCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
/* set key value */
ret = xmlSecKeySetValue(key, keyData);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue", NULL);
xmlSecKeyDestroy(key);
xmlSecKeyDataDestroy(keyData);
X509_free(cert);
@@ -980,11 +825,7 @@ xmlSecOpenSSLAppKeyFromCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
/* create cert data */
certData = xmlSecKeyEnsureData(key, xmlSecOpenSSLKeyDataX509Id);
if(certData == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData", NULL);
xmlSecKeyDestroy(key);
X509_free(cert);
return(NULL);
@@ -993,11 +834,7 @@ xmlSecOpenSSLAppKeyFromCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
/* put cert in the cert data */
ret = xmlSecOpenSSLKeyDataX509AdoptCert(certData, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert", NULL);
xmlSecKeyDestroy(key);
X509_free(cert);
return(NULL);
@@ -1032,25 +869,15 @@ xmlSecOpenSSLAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
bio = BIO_new_file(filename, "rb");
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecOpenSSLError2("BIO_new_file", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
ret = xmlSecOpenSSLAppKeysMngrCertLoadBIO(mngr, bio, format, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeysMngrCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s;errno=%d",
- xmlSecErrorsSafeString(filename),
- errno);
+ xmlSecInternalError2("xmlSecOpenSSLAppKeysMngrCertLoadBIO", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
BIO_free(bio);
return(-1);
}
@@ -1086,22 +913,14 @@ xmlSecOpenSSLAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte*
/* this would be a read only BIO, cast from const is ok */
bio = BIO_new_mem_buf((void*)data, dataSize);
if(bio == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new_mem_buf",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "errno=%d",
- errno);
+ xmlSecOpenSSLError2("BIO_new_mem_buf", NULL,
+ "dataSize=%lu", (unsigned long)dataSize);
return(-1);
}
ret = xmlSecOpenSSLAppKeysMngrCertLoadBIO(mngr, bio, format, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppKeysMngrCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppKeysMngrCertLoadBIO", NULL);
BIO_free(bio);
return(-1);
}
@@ -1135,31 +954,19 @@ xmlSecOpenSSLAppKeysMngrCertLoadBIO(xmlSecKeysMngrPtr mngr, BIO* bio,
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecOpenSSLX509StoreId)", NULL);
return(-1);
}
cert = xmlSecOpenSSLAppCertLoadBIO(bio, format);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLAppCertLoadBIO",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLAppCertLoadBIO", NULL);
return(-1);
}
ret = xmlSecOpenSSLX509StoreAdoptCert(x509Store, cert, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509StoreAdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509StoreAdoptCert", NULL);
X509_free(cert);
return(-1);
}
@@ -1186,21 +993,14 @@ xmlSecOpenSSLAppKeysMngrAddCertsPath(xmlSecKeysMngrPtr mngr, const char *path) {
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecOpenSSLX509StoreId)", NULL);
return(-1);
}
ret = xmlSecOpenSSLX509StoreAddCertsPath(x509Store, path);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509StoreAddCertsPath",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "path=%s", xmlSecErrorsSafeString(path));
+ xmlSecInternalError2("xmlSecOpenSSLX509StoreAddCertsPath", NULL,
+ "path=%s", xmlSecErrorsSafeString(path));
return(-1);
}
@@ -1210,7 +1010,7 @@ xmlSecOpenSSLAppKeysMngrAddCertsPath(xmlSecKeysMngrPtr mngr, const char *path) {
/**
* xmlSecOpenSSLAppKeysMngrAddCertsFile:
* @mngr: the keys manager.
- * @file: the file containing trusted certificates.
+ * @filename: the file containing trusted certificates.
*
* Reads certs from @file and adds to the list of trusted certificates.
* It is possible for @file to contain multiple certs.
@@ -1218,30 +1018,23 @@ xmlSecOpenSSLAppKeysMngrAddCertsPath(xmlSecKeysMngrPtr mngr, const char *path) {
* Returns: 0 on success or a negative value otherwise.
*/
int
-xmlSecOpenSSLAppKeysMngrAddCertsFile(xmlSecKeysMngrPtr mngr, const char *file) {
+xmlSecOpenSSLAppKeysMngrAddCertsFile(xmlSecKeysMngrPtr mngr, const char *filename) {
xmlSecKeyDataStorePtr x509Store;
int ret;
xmlSecAssert2(mngr != NULL, -1);
- xmlSecAssert2(file != NULL, -1);
+ xmlSecAssert2(filename != NULL, -1);
x509Store = xmlSecKeysMngrGetDataStore(mngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLX509StoreId");
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore(xmlSecOpenSSLX509StoreId)", NULL);
return(-1);
}
- ret = xmlSecOpenSSLX509StoreAddCertsFile(x509Store, file);
+ ret = xmlSecOpenSSLX509StoreAddCertsFile(x509Store, filename);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509StoreAddCertsFile",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "file=%s", xmlSecErrorsSafeString(file));
+ xmlSecInternalError2("xmlSecOpenSSLX509StoreAddCertsFile", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
@@ -1260,11 +1053,7 @@ xmlSecOpenSSLAppCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
case xmlSecKeyDataFormatCertPem:
cert = PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "PEM_read_bio_X509_AUX",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("PEM_read_bio_X509_AUX", NULL);
return(NULL);
}
break;
@@ -1272,20 +1061,13 @@ xmlSecOpenSSLAppCertLoadBIO(BIO* bio, xmlSecKeyDataFormat format) {
case xmlSecKeyDataFormatCertDer:
cert = d2i_X509_bio(bio, NULL);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_X509_bio",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("d2i_X509_bio", NULL);
return(NULL);
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_FORMAT,
- "format=%d", format);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_FORMAT, NULL,
+ "format=%d", (int)format);
return(NULL);
}
@@ -1315,21 +1097,13 @@ xmlSecOpenSSLAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -1337,11 +1111,7 @@ xmlSecOpenSSLAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecOpenSSLKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeysMngrInit", NULL);
return(-1);
}
@@ -1370,21 +1140,13 @@ xmlSecOpenSSLAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSimpleKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -1411,21 +1173,14 @@ xmlSecOpenSSLAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -1453,21 +1208,14 @@ xmlSecOpenSSLAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename%s", xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreSave", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(-1);
}
@@ -1482,25 +1230,25 @@ static int seeded = 0;
static int egdsocket = 0;
static int
-xmlSecOpenSSLAppLoadRANDFile(const char *file) {
+xmlSecOpenSSLAppLoadRANDFile(const char *filename) {
char buffer[1024];
- if(file == NULL) {
- file = RAND_file_name(buffer, sizeof(buffer));
- }else if(RAND_egd(file) > 0) {
+ if(filename == NULL) {
+ filename = RAND_file_name(buffer, sizeof(buffer));
+#ifndef OPENSSL_NO_EGD
+ }else if(RAND_egd(filename) > 0) {
/* we try if the given filename is an EGD socket.
* if it is, we don't write anything back to the file. */
egdsocket = 1;
return 1;
+#endif
}
- if((file == NULL) || !RAND_load_file(file, -1)) {
+ if((filename == NULL) || !RAND_load_file(filename, -1)) {
if(RAND_status() == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "RAND_load_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "file=%s", xmlSecErrorsSafeString(file));
+ xmlSecOpenSSLError2("RAND_load_file", NULL,
+ "filename=%s",
+ xmlSecErrorsSafeString(filename));
return 0;
}
}
@@ -1509,7 +1257,7 @@ xmlSecOpenSSLAppLoadRANDFile(const char *file) {
}
static int
-xmlSecOpenSSLAppSaveRANDFile(const char *file) {
+xmlSecOpenSSLAppSaveRANDFile(const char *filename) {
char buffer[1024];
if(egdsocket || !seeded) {
@@ -1520,16 +1268,12 @@ xmlSecOpenSSLAppSaveRANDFile(const char *file) {
return 0;
}
- if(file == NULL) {
- file = RAND_file_name(buffer, sizeof(buffer));
+ if(filename == NULL) {
+ filename = RAND_file_name(buffer, sizeof(buffer));
}
- if((file == NULL) || !RAND_write_file(file)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "RAND_write_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "file=%s",
- xmlSecErrorsSafeString(file));
+ if((filename == NULL) || !RAND_write_file(filename)) {
+ xmlSecOpenSSLError2("RAND_write_file", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return 0;
}
@@ -1560,47 +1304,44 @@ xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsize, int verify, void *u
/* try 3 times */
for(i = 0; i < 3; i++) {
if(filename != NULL) {
- xmlSecStrPrintf(prompt, sizeof(prompt), "Enter password for \"%s\" file: ", filename);
+ ret = xmlStrPrintf(prompt, sizeof(prompt), "Enter password for \"%s\" file: ", filename);
} else {
- xmlSecStrPrintf(prompt, sizeof(prompt), "Enter password: ");
+ ret = xmlStrPrintf(prompt, sizeof(prompt), "Enter password: ");
+ }
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ return(-1);
}
+
ret = EVP_read_pw_string(buf, bufsize, (char*)prompt, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_read_pw_string",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_read_pw_string", NULL);
return(-1);
}
/* if we don't need to verify password then we are done */
if(verify == 0) {
- return(strlen(buf));
+ return((int)strlen(buf));
}
if(filename != NULL) {
- xmlSecStrPrintf(prompt, sizeof(prompt), "Enter password for \"%s\" file again: ", filename);
+ ret = xmlStrPrintf(prompt, sizeof(prompt), "Enter password for \"%s\" file again: ", filename);
} else {
- xmlSecStrPrintf(prompt, sizeof(prompt), "Enter password again: ");
+ ret = xmlStrPrintf(prompt, sizeof(prompt), "Enter password again: ");
+ }
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ return(-1);
}
buf2 = (char*)xmlMalloc(bufsize);
if(buf2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", bufsize);
+ xmlSecMallocError(bufsize, NULL);
return(-1);
}
ret = EVP_read_pw_string(buf2, bufsize, (char*)prompt, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_read_pw_string",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_read_pw_string", NULL);
memset(buf2, 0, bufsize);
xmlFree(buf2);
return(-1);
@@ -1609,8 +1350,8 @@ xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsize, int verify, void *u
/* check if passwords match */
if(strcmp(buf, buf2) == 0) {
memset(buf2, 0, bufsize);
- xmlFree(buf2);
- return(strlen(buf));
+ xmlFree(buf2);
+ return((int)strlen(buf));
}
/* try again */
@@ -1625,14 +1366,25 @@ static int
xmlSecOpenSSLDummyPasswordCallback(char *buf, int bufsize,
int verify ATTRIBUTE_UNUSED,
void *userdata) {
- char* password = (char*)userdata;
+ char* password;
+ int passwordlen;
+ UNREFERENCED_PARAMETER(verify);
- if((password == NULL) || ((int)strlen(password) + 1 > bufsize)) {
+ password = (char*)userdata;
+ if(password == NULL) {
+ return(-1);
+ }
+ passwordlen = (int)strlen(password);
+ if(passwordlen + 1 > bufsize) {
return(-1);
}
- strncpy(buf, password, strlen(password) + 1);
+#ifdef WIN32
+ strcpy_s(buf, bufsize, password);
+#else /* WIN32 */
+ strcpy(buf, password);
+#endif /* WIN32 */
- return (strlen(buf));
+ return (passwordlen);
}
diff --git a/src/openssl/bn.c b/src/openssl/bn.c
index db186d11..f0f5eb45 100644
--- a/src/openssl/bn.c
+++ b/src/openssl/bn.c
@@ -1,21 +1,29 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Reading/writing BIGNUM values
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:bn
+ * @Short_description: Big numbers (BIGNUM) support functions implementation for OpenSSL.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
#include <string.h>
+#include <openssl/bn.h>
#include <libxml/tree.h>
#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
#include <xmlsec/buffer.h>
#include <xmlsec/base64.h>
#include <xmlsec/errors.h>
@@ -25,7 +33,7 @@
/**
* xmlSecOpenSSLNodeGetBNValue:
- * @cur: the poitner to an XML node.
+ * @cur: the pointer to an XML node.
* @a: the BIGNUM buffer.
*
* Converts the node content from CryptoBinary format
@@ -45,32 +53,21 @@ xmlSecOpenSSLNodeGetBNValue(const xmlNodePtr cur, BIGNUM **a) {
ret = xmlSecBufferInitialize(&buf, 128);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize", NULL);
return(NULL);
}
ret = xmlSecBufferBase64NodeContentRead(&buf, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead", NULL);
xmlSecBufferFinalize(&buf);
return(NULL);
}
(*a) = BN_bin2bn(xmlSecBufferGetData(&buf), xmlSecBufferGetSize(&buf), (*a));
if( (*a) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bin2bn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError2("BN_bin2bn", NULL,
+ "size=%lu", (unsigned long)(xmlSecBufferGetSize(&buf)));
xmlSecBufferFinalize(&buf);
return(NULL);
}
@@ -105,21 +102,14 @@ xmlSecOpenSSLNodeSetBNValue(xmlNodePtr cur, const BIGNUM *a, int addLineBreaks)
ret = xmlSecBufferInitialize(&buf, BN_num_bytes(a) + 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", BN_num_bytes(a) + 1);
+ xmlSecInternalError2("xmlSecBufferInitialize", NULL,
+ "size=%d", BN_num_bytes(a) + 1);
return(-1);
}
ret = BN_bn2bin(a, xmlSecBufferGetData(&buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bn2bin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bn2bin", NULL);
xmlSecBufferFinalize(&buf);
return(-1);
}
@@ -127,34 +117,27 @@ xmlSecOpenSSLNodeSetBNValue(xmlNodePtr cur, const BIGNUM *a, int addLineBreaks)
ret = xmlSecBufferSetSize(&buf, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", size);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
} else {
xmlNodeSetContent(cur, xmlSecStringEmpty);
}
ret = xmlSecBufferBase64NodeContentWrite(&buf, cur, xmlSecBase64GetDefaultLineSize());
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferBase64NodeContentWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentWrite", NULL);
xmlSecBufferFinalize(&buf);
return(-1);
}
if(addLineBreaks) {
- xmlNodeAddContent(cur, xmlSecStringCR);
+ xmlNodeAddContent(cur, xmlSecGetDefaultLineFeed());
}
xmlSecBufferFinalize(&buf);
diff --git a/src/openssl/ciphers.c b/src/openssl/ciphers.c
index c93f06b9..35163b33 100644
--- a/src/openssl/ciphers.c
+++ b/src/openssl/ciphers.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:ciphers
+ * @Short_description: Ciphers transforms implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -20,12 +28,10 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
+#include "openssl_compat.h"
-/* new API from OpenSSL 1.1.0 */
-#if !defined(XMLSEC_OPENSSL_110)
-#define EVP_CIPHER_CTX_encrypting(x) ((x)->encrypt)
-#endif /* !defined(XMLSEC_OPENSSL_110) */
-
+#define xmlSecOpenSSLAesGcmNonceLengthInBytes 12
+#define xmlSecOpenSSLAesGcmTagLengthInBytes 16
/**************************************************************************
*
@@ -40,6 +46,7 @@ struct _xmlSecOpenSSLEvpBlockCipherCtx {
EVP_CIPHER_CTX* cipherCtx;
int keyInitialized;
int ctxInitialized;
+ int cbcMode;
xmlSecByte key[EVP_MAX_KEY_LENGTH];
xmlSecByte iv[EVP_MAX_IV_LENGTH];
xmlSecByte pad[2*EVP_MAX_BLOCK_LENGTH];
@@ -56,7 +63,8 @@ static int xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockC
int inSize,
xmlSecBufferPtr out,
const xmlChar* cipherName,
- int final);
+ int final,
+ xmlSecByte *tag);
static int xmlSecOpenSSLEvpBlockCipherCtxUpdate (xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecBufferPtr in,
xmlSecBufferPtr out,
@@ -67,6 +75,7 @@ static int xmlSecOpenSSLEvpBlockCipherCtxFinal (xmlSecOpenSSLEvpBlockCi
xmlSecBufferPtr out,
const xmlChar* cipherName,
xmlSecTransformCtxPtr transformCtx);
+
static int
xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecBufferPtr in, xmlSecBufferPtr out,
@@ -85,7 +94,13 @@ xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecAssert2(out != NULL, -1);
xmlSecAssert2(transformCtx != NULL, -1);
- ivLen = EVP_CIPHER_iv_length(ctx->cipher);
+ if(ctx->cbcMode) {
+ ivLen = EVP_CIPHER_iv_length(ctx->cipher);
+ } else {
+ /* This is the nonce length for GCM mode rather than an IV */
+ ivLen = xmlSecOpenSSLAesGcmNonceLengthInBytes;
+ }
+
xmlSecAssert2(ivLen > 0, -1);
xmlSecAssert2((xmlSecSize)ivLen <= sizeof(ctx->iv), -1);
@@ -93,22 +108,15 @@ xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* generate random iv */
ret = RAND_bytes(ctx->iv, ivLen);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "RAND_bytes",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", ivLen);
+ xmlSecOpenSSLError2("RAND_bytes", cipherName,
+ "size=%lu", (unsigned long)ivLen);
return(-1);
}
/* write iv to the output */
ret = xmlSecBufferAppend(out, ctx->iv, ivLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ivLen);
+ xmlSecInternalError2("xmlSecBufferAppend", cipherName, "size=%d", ivLen);
return(-1);
}
@@ -126,11 +134,7 @@ xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* and remove from input */
ret = xmlSecBufferRemoveHead(in, ivLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ivLen);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d", ivLen);
return(-1);
}
}
@@ -138,11 +142,7 @@ xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* set iv */
ret = EVP_CipherInit(ctx->cipherCtx, ctx->cipher, ctx->key, ctx->iv, encrypt);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "EVP_CipherInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherIn", cipherName);
return(-1);
}
@@ -155,18 +155,21 @@ xmlSecOpenSSLEvpBlockCipherCtxInit(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
*
* https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Alg-Block
*/
- EVP_CIPHER_CTX_set_padding(ctx->cipherCtx, 0);
+ if(ctx->cbcMode) {
+ EVP_CIPHER_CTX_set_padding(ctx->cipherCtx, 0);
+ }
return(0);
}
static int
xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
- const xmlSecByte * in,
- int inSize,
- xmlSecBufferPtr out,
- const xmlChar* cipherName,
- int final) {
+ const xmlSecByte * in,
+ int inSize,
+ xmlSecBufferPtr out,
+ const xmlChar* cipherName,
+ int final,
+ xmlSecByte *tagData) {
xmlSecByte* outBuf;
xmlSecSize outSize;
int blockLen, outLen = 0;
@@ -178,9 +181,16 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecAssert2(ctx->keyInitialized != 0, -1);
xmlSecAssert2(ctx->ctxInitialized != 0, -1);
xmlSecAssert2(in != NULL, -1);
- xmlSecAssert2(inSize > 0, -1);
xmlSecAssert2(out != NULL, -1);
+ if (ctx->cbcMode) {
+ xmlSecAssert2(inSize > 0, -1);
+ } else {
+ if (final != 0) {
+ xmlSecAssert2(tagData != NULL, -1);
+ }
+ }
+
/* OpenSSL docs: If the pad parameter is zero then no padding is performed, the total amount of
* data encrypted or decrypted must then be a multiple of the block size or an error will occur.
*/
@@ -188,27 +198,34 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecAssert2(blockLen > 0, -1);
xmlSecAssert2((inSize % blockLen) == 0, -1);
- /* prepare: ensure we have enough space (+blockLen for final) */
outSize = xmlSecBufferGetSize(out);
- ret = xmlSecBufferSetMaxSize(out, outSize + inSize + blockLen);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)(outSize + inSize + blockLen));
- return(-1);
+
+ if(ctx->cbcMode) {
+ /* prepare: ensure we have enough space (+blockLen for final) */
+ ret = xmlSecBufferSetMaxSize(out, outSize + inSize + blockLen);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecErrorsSafeString(cipherName),
+ "size=%d", (int)(outSize + inSize + blockLen));
+ return(-1);
+ }
+ } else {
+ /* prepare: ensure we have enough space */
+ ret = xmlSecBufferSetMaxSize(out, outSize + inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecErrorsSafeString(cipherName),
+ "size=%d", (int)(outSize + inSize + blockLen));
+ return(-1);
+ }
}
+
outBuf = xmlSecBufferGetData(out) + outSize;
/* encrypt/decrypt */
ret = EVP_CipherUpdate(ctx->cipherCtx, outBuf, &outLen, in, inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "EVP_CipherUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherUpdate", cipherName);
return(-1);
}
xmlSecAssert2(outLen == inSize, -1);
@@ -217,27 +234,42 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
if(final != 0) {
int outLen2 = 0;
+ if(ctx->cbcMode == 0) {
+ if(!EVP_CIPHER_CTX_encrypting(ctx->cipherCtx)) {
+ ret = EVP_CIPHER_CTX_ctrl(ctx->cipherCtx, EVP_CTRL_GCM_SET_TAG,
+ xmlSecOpenSSLAesGcmTagLengthInBytes, tagData);
+ if(ret != 1) {
+ xmlSecOpenSSLError("EVP_CIPHER_CTX_ctrl", cipherName);
+ return(-1);
+ }
+ }
+ }
+
ret = EVP_CipherFinal(ctx->cipherCtx, outBuf + outLen, &outLen2);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "EVP_CipherFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherFinal", cipherName);
return(-1);
}
+ if(ctx->cbcMode == 0) {
+ if(EVP_CIPHER_CTX_encrypting(ctx->cipherCtx)) {
+ ret = EVP_CIPHER_CTX_ctrl(ctx->cipherCtx, EVP_CTRL_GCM_GET_TAG,
+ xmlSecOpenSSLAesGcmTagLengthInBytes, tagData);
+ if(ret != 1) {
+ xmlSecOpenSSLError("EVP_CIPHER_CTX_ctrl", cipherName);
+ return(-1);
+ }
+ }
+ }
+
outLen += outLen2;
}
/* set correct output buffer size */
ret = xmlSecBufferSetSize(out, outSize + outLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)(outSize + outLen));
+ xmlSecInternalError2("xmlSecBufferSetSize", cipherName,
+ "size=%d", (int)(outSize + outLen));
return(-1);
}
@@ -247,9 +279,9 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
static int
xmlSecOpenSSLEvpBlockCipherCtxUpdate(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
- xmlSecBufferPtr in, xmlSecBufferPtr out,
- const xmlChar* cipherName,
- xmlSecTransformCtxPtr transformCtx) {
+ xmlSecBufferPtr in, xmlSecBufferPtr out,
+ const xmlChar* cipherName,
+ xmlSecTransformCtxPtr transformCtx) {
xmlSecSize inSize, blockLen, inBlocksLen;
xmlSecByte* inBuf;
int ret;
@@ -266,11 +298,21 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdate(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecAssert2(blockLen > 0, -1);
inSize = xmlSecBufferGetSize(in);
- if(inSize <= blockLen) {
- /* wait for more data: we want to make sure we keep the last chunk in tmp buffer for
- * padding check/removal on decryption
- */
- return(0);
+
+ if(ctx->cbcMode) {
+ if(inSize <= blockLen) {
+ /* wait for more data: we want to make sure we keep the last chunk in tmp buffer for
+ * padding check/removal on decryption
+ */
+ return(0);
+ }
+ } else {
+ if(inSize <= xmlSecOpenSSLAesGcmTagLengthInBytes) {
+ /* In GCM mode during decryption the last 16 bytes of the buffer are the tag.
+ * Make sure there are always at least 16 bytes left over until we know we're
+ * processing the last buffer */
+ return(0);
+ }
}
/* OpenSSL docs: If the pad parameter is zero then no padding is performed, the total amount of
@@ -278,54 +320,65 @@ xmlSecOpenSSLEvpBlockCipherCtxUpdate(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
*
* We process all complete blocks from the input
*/
- inBlocksLen = blockLen * (inSize / blockLen);
+ if(ctx->cbcMode) {
+ inBlocksLen = blockLen * (inSize / blockLen);
+ } else {
+ /* ensure we keep the last 16 bytes around until the Final() call */
+ inBlocksLen = blockLen * ((inSize - xmlSecOpenSSLAesGcmTagLengthInBytes) / blockLen);
+ if(inBlocksLen == 0) {
+ return(0);
+ }
+ }
+
if(inBlocksLen == inSize) {
- inBlocksLen -= blockLen; /* ensure we keep the last block around for Final() call to add/check/remove padding */
+ if(ctx->cbcMode) {
+ inBlocksLen -= blockLen; /* ensure we keep the last block around for Final() call to add/check/remove padding */
+ }
}
xmlSecAssert2(inBlocksLen > 0, -1);
inBuf = xmlSecBufferGetData(in);
- ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, inBlocksLen, out, cipherName, 0); /* not final */
+ ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, (int)inBlocksLen, out, cipherName, 0,
+ NULL); /* not final */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- NULL);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock", cipherName);
return(-1);
}
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inBlocksLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d", (int)inSize);
return(-1);
}
/* just a double check */
inSize = xmlSecBufferGetSize(in);
xmlSecAssert2(inSize > 0, -1);
- xmlSecAssert2(inSize <= blockLen, -1);
+
+ if(ctx->cbcMode) {
+ xmlSecAssert2(inSize <= blockLen, -1);
+ }
/* done */
return(0);
}
static int
-xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
- xmlSecBufferPtr in,
- xmlSecBufferPtr out,
- const xmlChar* cipherName,
- xmlSecTransformCtxPtr transformCtx) {
+xmlSecOpenSSLEvpBlockCipherCBCCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in,
+ xmlSecBufferPtr out,
+ const xmlChar* cipherName,
+ xmlSecTransformCtxPtr transformCtx)
+{
xmlSecSize inSize, outSize, blockLen;
xmlSecByte* inBuf;
xmlSecByte* outBuf;
int ret;
+ /* unreferenced parameter */
+ (void)transformCtx;
+
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(ctx->cipher != NULL, -1);
xmlSecAssert2(ctx->cipherCtx != NULL, -1);
@@ -345,12 +398,12 @@ xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
xmlSecAssert2(inSize <= blockLen, -1);
/*
- * The padding used in XML Enc does not follow RFC 1423
- * and is not supported by OpenSSL. However, it is possible
- * to disable padding and do it by yourself
- *
- * https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Alg-Block
- */
+ * The padding used in XML Enc does not follow RFC 1423
+ * and is not supported by OpenSSL. However, it is possible
+ * to disable padding and do it by yourself
+ *
+ * https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#sec-Alg-Block
+ */
if(EVP_CIPHER_CTX_encrypting(ctx->cipherCtx)) {
xmlSecSize padLen;
@@ -369,41 +422,30 @@ xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* generate random padding */
if(padLen > 1) {
- ret = RAND_bytes(ctx->pad + inSize, padLen - 1);
- if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "RAND_bytes",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", (int)(padLen - 1));
+ ret = RAND_bytes(ctx->pad + inSize, (int)(padLen - 1));
+ if (ret != 1) {
+ xmlSecOpenSSLError("RAND_bytes", cipherName);
return(-1);
}
}
/* set the last byte to the pad length */
- ctx->pad[inSize + padLen - 1] = padLen;
+ ctx->pad[inSize + padLen - 1] = (xmlSecByte)padLen;
/* update the last 1 or 2 blocks with padding */
- ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, ctx->pad, inSize + padLen, out, cipherName, 1); /* final */
+ ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, ctx->pad, (int)(inSize + padLen), out,
+ cipherName, 1, NULL); /* final */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- NULL);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock", cipherName);
return(-1);
}
} else {
xmlSecSize padLen;
/* update the last one block with padding */
- ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, inSize, out, cipherName, 1); /* final */
+ ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, (int)inSize, out, cipherName, 1, NULL); /* final */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- NULL);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock", cipherName);
return(-1);
}
@@ -411,24 +453,16 @@ xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
outBuf = xmlSecBufferGetData(out);
outSize = xmlSecBufferGetSize(out);
if(outSize < blockLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "outSize=%d;blockLen=%d",
- (int)outSize, (int)blockLen);
+ xmlSecInvalidIntegerDataError2("outSize", outSize, "blockLen", blockLen,
+ "outSize >= blockLen", cipherName);
return(-1);
}
/* get the pad length from the last byte */
padLen = (xmlSecSize)(outBuf[outSize - 1]);
if(padLen > blockLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "padLen=%d;blockLen=%d",
- (int)padLen, (int)blockLen);
+ xmlSecInvalidIntegerDataError2("padLen", padLen, "blockLen", blockLen,
+ "padLen <= blockLen", cipherName);
return(-1);
}
xmlSecAssert2(padLen <= outSize, -1);
@@ -436,11 +470,7 @@ xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* remove the padding */
ret = xmlSecBufferRemoveTail(out, padLen);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveTail",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)padLen);
+ xmlSecInternalError2("xmlSecBufferRemoveTail", cipherName, "size=%d", (int)padLen);
return(-1);
}
}
@@ -448,17 +478,114 @@ xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
/* remove the processed block from input */
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(cipherName),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d", (int)inSize);
+ return(-1);
+ }
+
+ /* done */
+ return(0);
+
+}
+
+#ifndef XMLSEC_NO_AES
+static int
+xmlSecOpenSSLEvpBlockCipherGCMCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in,
+ xmlSecBufferPtr out,
+ const xmlChar* cipherName,
+ xmlSecTransformCtxPtr transformCtx)
+{
+ xmlSecSize inSize, outSize;
+ xmlSecByte* inBuf;
+ xmlSecByte* outBuf;
+ xmlSecByte tag[xmlSecOpenSSLAesGcmTagLengthInBytes];
+ int ret;
+
+ /* unreferenced parameter */
+ (void)transformCtx;
+
+ xmlSecAssert2(ctx != NULL, -1);
+ xmlSecAssert2(ctx->cipher != NULL, -1);
+ xmlSecAssert2(ctx->cipherCtx != NULL, -1);
+ xmlSecAssert2(ctx->keyInitialized != 0, -1);
+ xmlSecAssert2(ctx->ctxInitialized != 0, -1);
+ xmlSecAssert2(in != NULL, -1);
+ xmlSecAssert2(out != NULL, -1);
+ xmlSecAssert2(transformCtx != NULL, -1);
+
+ inSize = xmlSecBufferGetSize(in);
+ inBuf = xmlSecBufferGetData(in);
+
+ if(EVP_CIPHER_CTX_encrypting(ctx->cipherCtx)) {
+ ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, (int)inSize, out, cipherName,
+ 1, tag); /* final */
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock", cipherName);
+ return(-1);
+ }
+
+ /* get the tag and add to the output */
+ outSize = xmlSecBufferGetSize(out);
+ ret = xmlSecBufferSetMaxSize(out, outSize + xmlSecOpenSSLAesGcmTagLengthInBytes);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferSetMaxSize", cipherName);
+ return(-1);
+ }
+ outBuf = xmlSecBufferGetData(out) + outSize;
+ memcpy(outBuf, tag, xmlSecOpenSSLAesGcmTagLengthInBytes);
+ ret = xmlSecBufferSetSize(out, outSize + xmlSecOpenSSLAesGcmTagLengthInBytes);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecBufferSetSize", cipherName);
+ return(-1);
+ }
+ } else {
+ /* There must be at least 16 bytes in the buffer - the tag and anything left over */
+ xmlSecAssert2(inSize >= xmlSecOpenSSLAesGcmTagLengthInBytes, -1);
+
+ /* extract the tag */
+ memcpy(tag, inBuf + inSize - xmlSecOpenSSLAesGcmTagLengthInBytes,
+ xmlSecOpenSSLAesGcmTagLengthInBytes);
+ xmlSecBufferRemoveTail(in, xmlSecOpenSSLAesGcmTagLengthInBytes);
+
+ inBuf = xmlSecBufferGetData(in);
+ inSize = xmlSecBufferGetSize(in);
+
+ /* Decrypt anything remaining and verify the tag */
+ ret = xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock(ctx, inBuf, (int)inSize, out, cipherName,
+ 1, tag); /* final */
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdateBlock", cipherName);
+ return(-1);
+ }
+ }
+
+ /* remove the processed data from input */
+ ret = xmlSecBufferRemoveHead(in, inSize);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecBufferRemoveHead", cipherName, "size=%d", (int)inSize);
return(-1);
}
/* done */
return(0);
}
+#endif
+
+static int
+xmlSecOpenSSLEvpBlockCipherCtxFinal(xmlSecOpenSSLEvpBlockCipherCtxPtr ctx,
+ xmlSecBufferPtr in,
+ xmlSecBufferPtr out,
+ const xmlChar* cipherName,
+ xmlSecTransformCtxPtr transformCtx)
+{
+ xmlSecAssert2(ctx != NULL, -1);
+
+ if (ctx->cbcMode) {
+ return xmlSecOpenSSLEvpBlockCipherCBCCtxFinal(ctx, in, out, cipherName, transformCtx);
+ } else {
+ return xmlSecOpenSSLEvpBlockCipherGCMCtxFinal(ctx, in, out, cipherName, transformCtx);
+ }
+}
/******************************************************************************
@@ -497,7 +624,10 @@ xmlSecOpenSSLEvpBlockCipherCheckId(xmlSecTransformPtr transform) {
#ifndef XMLSEC_NO_AES
if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes128CbcId) ||
xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes192CbcId) ||
- xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes256CbcId)) {
+ xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes256CbcId) ||
+ xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes128GcmId) ||
+ xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes192GcmId) ||
+ xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes256GcmId)) {
return(1);
}
@@ -522,6 +652,7 @@ xmlSecOpenSSLEvpBlockCipherInitialize(xmlSecTransformPtr transform) {
if(transform->id == xmlSecOpenSSLTransformDes3CbcId) {
ctx->cipher = EVP_des_ede3_cbc();
ctx->keyId = xmlSecOpenSSLKeyDataDesId;
+ ctx->cbcMode = 1;
} else
#endif /* XMLSEC_NO_DES */
@@ -529,32 +660,40 @@ xmlSecOpenSSLEvpBlockCipherInitialize(xmlSecTransformPtr transform) {
if(transform->id == xmlSecOpenSSLTransformAes128CbcId) {
ctx->cipher = EVP_aes_128_cbc();
ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 1;
} else if(transform->id == xmlSecOpenSSLTransformAes192CbcId) {
ctx->cipher = EVP_aes_192_cbc();
ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 1;
} else if(transform->id == xmlSecOpenSSLTransformAes256CbcId) {
ctx->cipher = EVP_aes_256_cbc();
ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 1;
+ } else if(transform->id == xmlSecOpenSSLTransformAes128GcmId) {
+ ctx->cipher = EVP_aes_128_gcm();
+ ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 0;
+ } else if(transform->id == xmlSecOpenSSLTransformAes192GcmId) {
+ ctx->cipher = EVP_aes_192_gcm();
+ ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 0;
+ } else if(transform->id == xmlSecOpenSSLTransformAes256GcmId) {
+ ctx->cipher = EVP_aes_256_gcm();
+ ctx->keyId = xmlSecOpenSSLKeyDataAesId;
+ ctx->cbcMode = 0;
} else
#endif /* XMLSEC_NO_AES */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create cipher ctx */
ctx->cipherCtx = EVP_CIPHER_CTX_new();
if(ctx->cipherCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_CIPHER_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CIPHER_CTX_new",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -595,7 +734,7 @@ xmlSecOpenSSLEvpBlockCipherSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReq
xmlSecAssert2(ctx->keyId != NULL, -1);
keyReq->keyId = ctx->keyId;
- keyReq->keyType = xmlSecKeyDataTypeSymmetric;
+ keyReq->keyType = xmlSecKeyDataTypeSymmetric;
if(transform->operation == xmlSecTransformOperationEncrypt) {
keyReq->keyUsage = xmlSecKeyUsageEncrypt;
} else {
@@ -635,12 +774,8 @@ xmlSecOpenSSLEvpBlockCipherSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) < (xmlSecSize)cipherKeyLen) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=%d;expected=%d",
- (int)xmlSecBufferGetSize(buffer), (int)cipherKeyLen);
+ xmlSecInvalidKeyDataSizeError(xmlSecBufferGetSize(buffer), cipherKeyLen,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -678,47 +813,35 @@ xmlSecOpenSSLEvpBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSe
(transform->operation == xmlSecTransformOperationEncrypt) ? 1 : 0,
xmlSecTransformGetName(transform), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpBlockCipherCtxInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
if((ctx->ctxInitialized == 0) && (last != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "not enough data to initialize transform");
+ xmlSecInvalidDataError("not enough data to initialize transform",
+ xmlSecTransformGetName(transform));
return(-1);
}
if(ctx->ctxInitialized != 0) {
ret = xmlSecOpenSSLEvpBlockCipherCtxUpdate(ctx, in, out,
- xmlSecTransformGetName(transform),
- transformCtx);
+ xmlSecTransformGetName(transform),
+ transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpBlockCipherCtxUpdate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
if(last != 0) {
ret = xmlSecOpenSSLEvpBlockCipherCtxFinal(ctx, in, out,
- xmlSecTransformGetName(transform),
- transformCtx);
+ xmlSecTransformGetName(transform),
+ transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpBlockCipherCtxFinal",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpBlockCipherCtxFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -733,11 +856,7 @@ xmlSecOpenSSLEvpBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSe
/* the only way we can get here is if there is no enough data in the input */
xmlSecAssert2(last == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", (int)(transform->status));
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -868,6 +987,126 @@ xmlSecOpenSSLTransformAes256CbcGetKlass(void) {
return(&xmlSecOpenSSLAes256CbcKlass);
}
+static xmlSecTransformKlass xmlSecOpenSSLAes128GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecOpenSSLEvpBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes128Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes128Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecOpenSSLEvpBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecOpenSSLEvpBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecOpenSSLEvpBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecOpenSSLEvpBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecOpenSSLEvpBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+* xmlSecOpenSSLTransformAes128GcmGetKlass:
+*
+* AES 128 GCM encryption transform klass.
+*
+* Returns: pointer to AES 128 GCM encryption transform.
+*/
+xmlSecTransformId
+xmlSecOpenSSLTransformAes128GcmGetKlass(void)
+{
+ return(&xmlSecOpenSSLAes128GcmKlass);
+}
+
+static xmlSecTransformKlass xmlSecOpenSSLAes192GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecOpenSSLEvpBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes192Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes192Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecOpenSSLEvpBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecOpenSSLEvpBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecOpenSSLEvpBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecOpenSSLEvpBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecOpenSSLEvpBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+* xmlSecOpenSSLTransformAes192GcmGetKlass:
+*
+* AES 192 GCM encryption transform klass.
+*
+* Returns: pointer to AES 192 GCM encryption transform.
+*/
+xmlSecTransformId
+xmlSecOpenSSLTransformAes192GcmGetKlass(void)
+{
+ return(&xmlSecOpenSSLAes192GcmKlass);
+}
+
+static xmlSecTransformKlass xmlSecOpenSSLAes256GcmKlass = {
+ /* klass/object sizes */
+ sizeof(xmlSecTransformKlass), /* xmlSecSize klassSize */
+ xmlSecOpenSSLEvpBlockCipherSize, /* xmlSecSize objSize */
+
+ xmlSecNameAes256Gcm, /* const xmlChar* name; */
+ xmlSecHrefAes256Gcm, /* const xmlChar* href; */
+ xmlSecTransformUsageEncryptionMethod, /* xmlSecAlgorithmUsage usage; */
+
+ xmlSecOpenSSLEvpBlockCipherInitialize, /* xmlSecTransformInitializeMethod initialize; */
+ xmlSecOpenSSLEvpBlockCipherFinalize, /* xmlSecTransformFinalizeMethod finalize; */
+ NULL, /* xmlSecTransformNodeReadMethod readNode; */
+ NULL, /* xmlSecTransformNodeWriteMethod writeNode; */
+ xmlSecOpenSSLEvpBlockCipherSetKeyReq, /* xmlSecTransformSetKeyMethod setKeyReq; */
+ xmlSecOpenSSLEvpBlockCipherSetKey, /* xmlSecTransformSetKeyMethod setKey; */
+ NULL, /* xmlSecTransformValidateMethod validate; */
+ xmlSecTransformDefaultGetDataType, /* xmlSecTransformGetDataTypeMethod getDataType; */
+ xmlSecTransformDefaultPushBin, /* xmlSecTransformPushBinMethod pushBin; */
+ xmlSecTransformDefaultPopBin, /* xmlSecTransformPopBinMethod popBin; */
+ NULL, /* xmlSecTransformPushXmlMethod pushXml; */
+ NULL, /* xmlSecTransformPopXmlMethod popXml; */
+ xmlSecOpenSSLEvpBlockCipherExecute, /* xmlSecTransformExecuteMethod execute; */
+
+ NULL, /* void* reserved0; */
+ NULL, /* void* reserved1; */
+};
+
+/**
+* xmlSecOpenSSLTransformAes256GcmGetKlass:
+*
+* AES 256 GCM encryption transform klass.
+*
+* Returns: pointer to AES 256 GCM encryption transform.
+*/
+xmlSecTransformId
+xmlSecOpenSSLTransformAes256GcmGetKlass(void)
+{
+ return(&xmlSecOpenSSLAes256GcmKlass);
+}
+
#endif /* XMLSEC_NO_AES */
#ifndef XMLSEC_NO_DES
diff --git a/src/openssl/crypto.c b/src/openssl/crypto.c
index b70eb731..5be249fa 100644
--- a/src/openssl/crypto.c
+++ b/src/openssl/crypto.c
@@ -1,18 +1,23 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for OpenSSL.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
-#include <openssl/evp.h>
-#include <openssl/rand.h>
-
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysmngr.h>
@@ -21,6 +26,9 @@
#include <xmlsec/dl.h>
#include <xmlsec/private.h>
+#include <openssl/x509.h>
+#include <openssl/evp.h>
+#include <openssl/rand.h>
#include <xmlsec/openssl/app.h>
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/x509.h>
@@ -120,6 +128,9 @@ xmlSecCryptoGetFunctions_openssl(void) {
gXmlSecOpenSSLFunctions->transformAes128CbcGetKlass = xmlSecOpenSSLTransformAes128CbcGetKlass;
gXmlSecOpenSSLFunctions->transformAes192CbcGetKlass = xmlSecOpenSSLTransformAes192CbcGetKlass;
gXmlSecOpenSSLFunctions->transformAes256CbcGetKlass = xmlSecOpenSSLTransformAes256CbcGetKlass;
+ gXmlSecOpenSSLFunctions->transformAes128GcmGetKlass = xmlSecOpenSSLTransformAes128GcmGetKlass;
+ gXmlSecOpenSSLFunctions->transformAes192GcmGetKlass = xmlSecOpenSSLTransformAes192GcmGetKlass;
+ gXmlSecOpenSSLFunctions->transformAes256GcmGetKlass = xmlSecOpenSSLTransformAes256GcmGetKlass;
gXmlSecOpenSSLFunctions->transformKWAes128GetKlass = xmlSecOpenSSLTransformKWAes128GetKlass;
gXmlSecOpenSSLFunctions->transformKWAes192GetKlass = xmlSecOpenSSLTransformKWAes192GetKlass;
gXmlSecOpenSSLFunctions->transformKWAes256GetKlass = xmlSecOpenSSLTransformKWAes256GetKlass;
@@ -318,30 +329,18 @@ int
xmlSecOpenSSLInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
if(xmlSecOpenSSLErrorsInit() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLErrorsInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLErrorsInit", NULL);
return(-1);
}
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_openssl()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
@@ -382,21 +381,13 @@ xmlSecOpenSSLKeysMngrInit(xmlSecKeysMngrPtr mngr) {
x509Store = xmlSecKeyDataStoreCreate(xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLX509StoreId");
+ xmlSecInternalError("xmlSecKeyDataStoreCreate(xmlSecOpenSSLX509StoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptDataStore(mngr, x509Store);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptDataStore", NULL);
xmlSecKeyDataStoreDestroy(x509Store);
return(-1);
}
@@ -423,22 +414,15 @@ xmlSecOpenSSLGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
ret = xmlSecBufferSetSize(buffer, size);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL, "size=%d", size);
return(-1);
}
/* get random data */
ret = RAND_bytes((xmlSecByte*)xmlSecBufferGetData(buffer), size);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "RAND_bytes",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", size);
+ xmlSecOpenSSLError2("RAND_bytes", NULL,
+ "size=%lu", (unsigned long)size);
return(-1);
}
return(0);
@@ -454,13 +438,12 @@ xmlSecOpenSSLGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size) {
* @reason: the error code.
* @msg: the additional error message.
*
- * The default OpenSSL errors reporting callback function.
+ * The errors reporting callback function.
*/
void
xmlSecOpenSSLErrorsDefaultCallback(const char* file, int line, const char* func,
const char* errorObject, const char* errorSubject,
int reason, const char* msg) {
-
ERR_put_error(XMLSEC_OPENSSL_ERRORS_LIB,
XMLSEC_OPENSSL_ERRORS_FUNCTION,
reason, file, line);
@@ -471,6 +454,7 @@ xmlSecOpenSSLErrorsDefaultCallback(const char* file, int line, const char* func,
static int
xmlSecOpenSSLErrorsInit(void) {
+#ifndef OPENSSL_IS_BORINGSSL
static ERR_STRING_DATA xmlSecOpenSSLStrReasons[XMLSEC_ERRORS_MAX_NUMBER + 1];
static ERR_STRING_DATA xmlSecOpenSSLStrLib[]= {
{ ERR_PACK(XMLSEC_OPENSSL_ERRORS_LIB,0,0), "xmlsec routines"},
@@ -493,6 +477,7 @@ xmlSecOpenSSLErrorsInit(void) {
ERR_load_strings(XMLSEC_OPENSSL_ERRORS_LIB, xmlSecOpenSSLStrLib); /* define xmlsec lib name */
ERR_load_strings(XMLSEC_OPENSSL_ERRORS_LIB, xmlSecOpenSSLStrDefReason); /* define default reason */
ERR_load_strings(XMLSEC_OPENSSL_ERRORS_LIB, xmlSecOpenSSLStrReasons);
+#endif /* OPENSSL_IS_BORINGSSL */
/* and set default errors callback for xmlsec to us */
xmlSecErrorsSetCallback(xmlSecOpenSSLErrorsDefaultCallback);
@@ -518,11 +503,7 @@ xmlSecOpenSSLSetDefaultTrustedCertsFolder(const xmlChar* path) {
if(path != NULL) {
gXmlSecOpenSSLTrustedCertsFolder = xmlStrdup(BAD_CAST path);
if(gXmlSecOpenSSLTrustedCertsFolder == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(BAD_CAST path, NULL);
return(-1);
}
}
@@ -541,6 +522,3 @@ const xmlChar*
xmlSecOpenSSLGetDefaultTrustedCertsFolder(void) {
return(gXmlSecOpenSSLTrustedCertsFolder);
}
-
-
-
diff --git a/src/openssl/digests.c b/src/openssl/digests.c
index 5ec5299a..537a7399 100644
--- a/src/openssl/digests.c
+++ b/src/openssl/digests.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:digests
+ * @Short_description: Digests transforms implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -19,16 +27,7 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
-
-/* new API from OpenSSL 1.1.0 (https://www.openssl.org/docs/manmaster/crypto/EVP_DigestInit.html):
- *
- * EVP_MD_CTX_create() and EVP_MD_CTX_destroy() were renamed to EVP_MD_CTX_new() and EVP_MD_CTX_free() in OpenSSL 1.1.
- */
-#if !defined(XMLSEC_OPENSSL_110)
-#define EVP_MD_CTX_new() EVP_MD_CTX_create()
-#define EVP_MD_CTX_free(x) EVP_MD_CTX_destroy((x))
-#endif /* !defined(XMLSEC_OPENSSL_110) */
-
+#include "openssl_compat.h"
/**************************************************************************
*
@@ -131,8 +130,6 @@ xmlSecOpenSSLEvpDigestCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- return(0);
}
static int
@@ -194,11 +191,7 @@ xmlSecOpenSSLEvpDigestInitialize(xmlSecTransformPtr transform) {
if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformGostR3411_94Id)) {
ctx->digest = EVP_get_digestbyname("md_gost94");
if (!ctx->digest) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
@@ -209,11 +202,7 @@ xmlSecOpenSSLEvpDigestInitialize(xmlSecTransformPtr transform) {
ctx->digest = EVP_get_digestbyname("md_gost12_256");
if (!ctx->digest)
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
@@ -222,33 +211,22 @@ xmlSecOpenSSLEvpDigestInitialize(xmlSecTransformPtr transform) {
ctx->digest = EVP_get_digestbyname("md_gost12_512");
if (!ctx->digest)
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
#endif /* XMLSEC_NO_GOST2012 */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create digest CTX */
ctx->digestCtx = EVP_MD_CTX_new();
if(ctx->digestCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_MD_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_MD_CTX_new",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -291,24 +269,17 @@ xmlSecOpenSSLEvpDigestVerify(xmlSecTransformPtr transform,
xmlSecAssert2(ctx->dgstSize > 0, -1);
if(dataSize != ctx->dgstSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data_size=%d;dgst_size=%d",
- dataSize, ctx->dgstSize);
+ xmlSecInvalidSizeError("Digest", dataSize, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
- return -1;
+ return(0);
}
if(memcmp(ctx->dgst, data, ctx->dgstSize) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "data and digest do not match");
+ xmlSecInvalidDataError("data and digest do not match",
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
- return -1;
+ return(0);
}
transform->status = xmlSecTransformStatusOk;
@@ -340,11 +311,8 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
if(transform->status == xmlSecTransformStatusNone) {
ret = EVP_DigestInit(ctx->digestCtx, ctx->digest);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_DigestInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusWorking;
@@ -357,21 +325,17 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
if(inSize > 0) {
ret = EVP_DigestUpdate(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecOpenSSLError2("EVP_DigestUpdate",
+ xmlSecTransformGetName(transform),
+ "size=%lu", (unsigned long)inSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
@@ -382,11 +346,8 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
ret = EVP_DigestFinal(ctx->digestCtx, ctx->dgst, &dgstSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_DigestFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(dgstSize > 0, -1);
@@ -396,11 +357,9 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, ctx->dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", ctx->dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->dgstSize);
return(-1);
}
}
@@ -410,11 +369,7 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/openssl/evp.c b/src/openssl/evp.c
index 328602bc..7c008bf7 100644
--- a/src/openssl/evp.c
+++ b/src/openssl/evp.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:evp
+ * @Short_description: Private/public (EVP) keys implementation for OpenSSL.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -19,10 +27,149 @@
#include <xmlsec/keyinfo.h>
#include <xmlsec/transforms.h>
#include <xmlsec/errors.h>
+#include <xmlsec/private.h>
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/bn.h>
#include <xmlsec/openssl/evp.h>
+#include "openssl_compat.h"
+
+/******************************************************************************
+ *
+ * OpenSSL 1.1.0 compatibility
+ *
+ *****************************************************************************/
+#if !defined(XMLSEC_OPENSSL_API_110)
+
+#ifndef XMLSEC_NO_RSA
+
+static inline void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) {
+ xmlSecAssert(r != NULL);
+
+ if(n != NULL) {
+ (*n) = r->n;
+ }
+ if(e != NULL) {
+ (*e) = r->e;
+ }
+ if(d != NULL) {
+ (*d) = r->d;
+ }
+}
+
+static inline int RSA_test_flags(const RSA *r, int flags) {
+ xmlSecAssert2(r != NULL, 0);
+ return(r->flags & flags);
+}
+
+static inline int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
+ xmlSecAssert2(r != NULL, 0);
+
+ if(((r->n == NULL) && (n == NULL)) || ((r->e == NULL) && (e == NULL))) {
+ return(0);
+ }
+ if(n != NULL) {
+ BN_free(r->n);
+ r->n = n;
+ }
+ if(e != NULL) {
+ BN_free(r->e);
+ r->e = e;
+ }
+ if(d != NULL) {
+ BN_free(r->d);
+ r->d = d;
+ }
+ return(1);
+}
+#endif /* XMLSEC_NO_RSA */
+
+
+#ifndef XMLSEC_NO_DSA
+
+static inline void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g) {
+ xmlSecAssert(d != NULL);
+
+ if(p != NULL) {
+ (*p) = d->p;
+ }
+ if(q != NULL) {
+ (*q) = d->q;
+ }
+ if(g != NULL) {
+ (*g) = d->g;
+ }
+}
+
+static inline void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key) {
+ xmlSecAssert(d != NULL);
+
+ if(pub_key != NULL) {
+ (*pub_key) = d->pub_key;
+ }
+ if(priv_key != NULL) {
+ (*priv_key) = d->priv_key;
+ }
+}
+
+static inline ENGINE *DSA_get0_engine(DSA *d) {
+ xmlSecAssert2(d != NULL, NULL);
+ return(d->engine);
+}
+
+static inline int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
+ xmlSecAssert2(d != NULL, 0);
+
+ if(((d->p == NULL) && (p == NULL)) || ((d->q == NULL) && (q == NULL)) || ((d->g == NULL) && (g == NULL))) {
+ return(0);
+ }
+
+ if(p != NULL) {
+ BN_free(d->p);
+ d->p = p;
+ }
+ if(q != NULL) {
+ BN_free(d->q);
+ d->q = q;
+ }
+ if(g != NULL) {
+ BN_free(d->g);
+ d->g = g;
+ }
+ return(1);
+}
+
+static inline int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key) {
+ xmlSecAssert2(d != NULL, 0);
+
+ if((d->pub_key == NULL) && (pub_key == NULL)) {
+ return(0);
+ }
+
+ if(pub_key != NULL) {
+ BN_free(d->pub_key);
+ d->pub_key = pub_key;
+ }
+ if(priv_key != NULL) {
+ BN_free(d->priv_key);
+ d->priv_key = priv_key;
+ }
+ return(1);
+}
+#endif /* XMLSEC_NO_DSA */
+
+#endif /* !defined(XMLSEC_OPENSSL_API_110) */
+
+#ifdef OPENSSL_IS_BORINGSSL
+#ifndef XMLSEC_NO_RSA
+static inline int RSA_test_flags(const RSA *r, int flags) {
+ xmlSecAssert2(r != NULL, 0);
+ return(r->flags & flags);
+}
+#endif /* XMLSEC_NO_RSA */
+
+#endif /* OPENSSL_IS_BORINGSSL */
+
/**************************************************************************
*
@@ -135,11 +282,8 @@ xmlSecOpenSSLEvpKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(ctxSrc->pKey != NULL) {
ctxDst->pKey = xmlSecOpenSSLEvpKeyDup(ctxSrc->pKey);
if(ctxDst->pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecOpenSSLEvpKeyDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDup",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
}
@@ -182,13 +326,9 @@ xmlSecOpenSSLEvpKeyDup(EVP_PKEY* pKey) {
xmlSecAssert2(pKey != NULL, NULL);
- ret = CRYPTO_add(&pKey->references,1,CRYPTO_LOCK_EVP_PKEY);
+ ret = EVP_PKEY_up_ref(pKey);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CRYPTO_add",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_up_ref", NULL);
return(NULL);
}
@@ -210,16 +350,12 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
xmlSecAssert2(pKey != NULL, NULL);
- switch(pKey->type) {
+ switch(EVP_PKEY_base_id(pKey)) {
#ifndef XMLSEC_NO_RSA
case EVP_PKEY_RSA:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataRsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataRsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataRsaId)", NULL);
return(NULL);
}
break;
@@ -228,11 +364,7 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
case EVP_PKEY_DSA:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataDsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataDsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataDsaId)", NULL);
return(NULL);
}
break;
@@ -241,11 +373,7 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
case EVP_PKEY_EC:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataEcdsaId);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataEcdsaId");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataEcdsaId)", NULL);
return(NULL);
}
break;
@@ -255,11 +383,7 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
case NID_id_GostR3410_2001:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGost2001Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataGost2001Id");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGost2001Id)", NULL);
return(NULL);
}
break;
@@ -269,11 +393,7 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
case NID_id_GostR3410_2012_256:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGostR3410_2012_256Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataGostR3410_2012_256Id");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGostR3410_2012_256Id)", NULL);
return(NULL);
}
break;
@@ -281,33 +401,22 @@ xmlSecOpenSSLEvpKeyAdopt(EVP_PKEY *pKey) {
case NID_id_GostR3410_2012_512:
data = xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGostR3410_2012_512Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecOpenSSLKeyDataGostR3410_2012_512Id");
+ xmlSecInternalError("xmlSecKeyDataCreate(xmlSecOpenSSLKeyDataGostR3410_2012_512Id)", NULL);
return(NULL);
}
break;
#endif /* XMLSEC_NO_GOST2012 */
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "evp key type %d not supported", pKey->type);
+ xmlSecInvalidIntegerTypeError("evp key type", EVP_PKEY_base_id(pKey),
+ "supported evp key type", NULL);
return(NULL);
}
xmlSecAssert2(data != NULL, NULL);
ret = xmlSecOpenSSLEvpKeyDataAdoptEvp(data, pKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLEvpKeyDataAdoptEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDataAdoptEvp", NULL);
xmlSecKeyDataDestroy(data);
return(NULL);
}
@@ -481,32 +590,24 @@ xmlSecOpenSSLKeyDataDsaAdoptDsa(xmlSecKeyDataPtr data, DSA* dsa) {
if(dsa != NULL) {
pKey = EVP_PKEY_new();
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = EVP_PKEY_assign_DSA(pKey, dsa);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_assign_DSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_assign_DSA",
+ xmlSecKeyDataGetName(data));
+ EVP_PKEY_free(pKey);
return(-1);
}
}
ret = xmlSecOpenSSLKeyDataDsaAdoptEvp(data, pKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataDsaAdoptEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataDsaAdoptEvp",
+ xmlSecKeyDataGetName(data));
if(pKey != NULL) {
EVP_PKEY_free(pKey);
}
@@ -530,9 +631,9 @@ xmlSecOpenSSLKeyDataDsaGetDsa(xmlSecKeyDataPtr data) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataDsaId), NULL);
pKey = xmlSecOpenSSLKeyDataDsaGetEvp(data);
- xmlSecAssert2((pKey == NULL) || (pKey->type == EVP_PKEY_DSA), NULL);
+ xmlSecAssert2((pKey == NULL) || (EVP_PKEY_base_id(pKey) == EVP_PKEY_DSA), NULL);
- return((pKey != NULL) ? pKey->pkey.dsa : (DSA*)NULL);
+ return((pKey != NULL) ? EVP_PKEY_get0_DSA(pKey) : NULL);
}
/**
@@ -548,7 +649,7 @@ int
xmlSecOpenSSLKeyDataDsaAdoptEvp(xmlSecKeyDataPtr data, EVP_PKEY* pKey) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataDsaId), -1);
xmlSecAssert2(pKey != NULL, -1);
- xmlSecAssert2(pKey->type == EVP_PKEY_DSA, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(pKey) == EVP_PKEY_DSA, -1);
return(xmlSecOpenSSLEvpKeyDataAdoptEvp(data, pKey));
}
@@ -593,9 +694,11 @@ xmlSecOpenSSLKeyDataDsaFinalize(xmlSecKeyDataPtr data) {
static int
xmlSecOpenSSLKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
- xmlSecKeyDataPtr data;
+ xmlSecKeyDataPtr data = NULL;
xmlNodePtr cur;
- DSA *dsa;
+ DSA *dsa = NULL;
+ BIGNUM *p = NULL, *q = NULL, *g = NULL;
+ BIGNUM *priv_key = NULL, *pub_key = NULL;
int ret;
xmlSecAssert2(id == xmlSecOpenSSLKeyDataDsaId, -1);
@@ -604,130 +707,83 @@ xmlSecOpenSSLKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "Key data value is already set");
return(-1);
}
dsa = DSA_new();
if(dsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "DSA_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
+ xmlSecOpenSSLError("DSA_new",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(node->children);
/* first is P node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAP, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
- DSA_free(dsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAP, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->p)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
- DSA_free(dsa);
- return(-1);
+
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &p) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Q node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAQ, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
- DSA_free(dsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAQ, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->q)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
- DSA_free(dsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &q) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is G node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAG, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
- DSA_free(dsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAG, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->g)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
- DSA_free(dsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &g) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeDSAX, xmlSecNs))) {
/* next is X node. It is REQUIRED for private key but
* we are not sure exactly what do we read */
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->priv_key)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
- DSA_free(dsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &priv_key) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
}
/* next is Y node. */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeDSAY, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
- DSA_free(dsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeDSAY, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(dsa->pub_key)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
- DSA_free(dsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &pub_key) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -747,50 +803,65 @@ xmlSecOpenSSLKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
- DSA_free(dsa);
- return(-1);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- DSA_free(dsa);
- return(-1);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
+ }
+
+ ret = DSA_set0_pqg(dsa, p, q, g);
+ if(ret != 1) {
+ xmlSecOpenSSLError("DSA_set0_pqg",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
+ p = NULL;
+ q = NULL;
+ g = NULL;
+
+ ret = DSA_set0_key(dsa, pub_key, priv_key);
+ if(ret != 1) {
+ xmlSecOpenSSLError("DSA_set0_key",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
+ }
+ pub_key = NULL;
+ priv_key = NULL;
ret = xmlSecOpenSSLKeyDataDsaAdoptDsa(data, dsa);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataDsaAdoptDsa",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecKeyDataDestroy(data);
- DSA_free(dsa);
- return(-1);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataDsaAdoptDsa",
+ xmlSecKeyDataGetName(data));
+ goto err_cleanup;
}
+ dsa = NULL;
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecKeyDataDestroy(data);
- return(-1);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
+ data = NULL;
+ goto err_cleanup;
}
return(0);
+
+err_cleanup:
+ DSA_free(dsa);
+ BN_free(p);
+ BN_free(q);
+ BN_free(g);
+ BN_free(priv_key);
+ BN_free(pub_key);
+ if(data != NULL) {
+ xmlSecKeyDataDestroy(data);
+ }
+ return(-1);
}
static int
@@ -799,6 +870,8 @@ xmlSecOpenSSLKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlNodePtr cur;
DSA* dsa;
int ret;
+ const BIGNUM *p = NULL, *q = NULL, *g = NULL;
+ const BIGNUM *priv_key = NULL, *pub_key = NULL;
xmlSecAssert2(id == xmlSecOpenSSLKeyDataDsaId, -1);
xmlSecAssert2(key != NULL, -1);
@@ -814,119 +887,93 @@ xmlSecOpenSSLKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
return(0);
}
+ DSA_get0_pqg(dsa, &p, &q, &g);
+
/* first is P node */
- xmlSecAssert2(dsa->p != NULL, -1);
+ xmlSecAssert2(p != NULL, -1);
cur = xmlSecAddChild(node, xmlSecNodeDSAP, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAP));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->p, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, p, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAP));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAP));
return(-1);
}
/* next is Q node. */
- xmlSecAssert2(dsa->q != NULL, -1);
+ xmlSecAssert2(q != NULL, -1);
cur = xmlSecAddChild(node, xmlSecNodeDSAQ, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAQ));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->q, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, q, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAQ));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAQ));
return(-1);
}
/* next is G node. */
- xmlSecAssert2(dsa->g != NULL, -1);
+ xmlSecAssert2(g != NULL, -1);
cur = xmlSecAddChild(node, xmlSecNodeDSAG, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAG));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->g, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, g, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAG));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAG));
return(-1);
}
+ DSA_get0_key(dsa, &pub_key, &priv_key);
+
/* next is X node: write it ONLY for private keys and ONLY if it is requested */
- if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (dsa->priv_key != NULL)) {
+ if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (priv_key != NULL)) {
cur = xmlSecAddChild(node, xmlSecNodeDSAX, xmlSecNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAX));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->priv_key, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, priv_key, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAX));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAX));
return(-1);
}
}
/* next is Y node. */
- xmlSecAssert2(dsa->pub_key != NULL, -1);
+ xmlSecAssert2(pub_key != NULL, -1);
cur = xmlSecAddChild(node, xmlSecNodeDSAY, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, dsa->pub_key, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, pub_key, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDSAY));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeDSAY));
return(-1);
}
return(0);
@@ -941,46 +988,36 @@ xmlSecOpenSSLKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataDsaId), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
dsa = DSA_new();
if(dsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "DSA_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", sizeBits);
+ xmlSecOpenSSLError("DSA_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = DSA_generate_parameters_ex(dsa, sizeBits, NULL, 0, &counter_ret, &h_ret, NULL);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "DSA_generate_parameters_ex",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", sizeBits);
+ xmlSecOpenSSLError2("DSA_generate_parameters_ex",
+ xmlSecKeyDataGetName(data),
+ "sizeBits=%lu", (unsigned long)sizeBits);
DSA_free(dsa);
return(-1);
}
ret = DSA_generate_key(dsa);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "DSA_generate_key",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_generate_key",
+ xmlSecKeyDataGetName(data));
DSA_free(dsa);
return(-1);
}
ret = xmlSecOpenSSLKeyDataDsaAdoptDsa(data, dsa);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataDsaAdoptDsa",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataDsaAdoptDsa",
+ xmlSecKeyDataGetName(data));
DSA_free(dsa);
return(-1);
}
@@ -991,16 +1028,25 @@ xmlSecOpenSSLKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
static xmlSecKeyDataType
xmlSecOpenSSLKeyDataDsaGetType(xmlSecKeyDataPtr data) {
DSA* dsa;
+ const BIGNUM *p = NULL, *q = NULL, *g = NULL;
+ const BIGNUM *priv_key = NULL, *pub_key = NULL;
+ const ENGINE *dsa_eng = NULL;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataDsaId), xmlSecKeyDataTypeUnknown);
dsa = xmlSecOpenSSLKeyDataDsaGetDsa(data);
- if((dsa != NULL) && (dsa->p != NULL) && (dsa->q != NULL) &&
- (dsa->g != NULL) && (dsa->pub_key != NULL)) {
+ if(dsa == NULL) {
+ return(xmlSecKeyDataTypeUnknown);
+ }
- if(dsa->priv_key != NULL) {
+ DSA_get0_pqg(dsa, &p, &q, &g);
+ DSA_get0_key(dsa, &pub_key, &priv_key);
+ dsa_eng = DSA_get0_engine(dsa);
+
+ if(p != NULL && q != NULL && g != NULL && pub_key != NULL) {
+ if(priv_key != NULL) {
return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
- } else if(dsa->engine != NULL) {
+ } else if(dsa_eng != NULL) {
/*
* !!! HACK !!! Also see RSA key
* We assume here that engine *always* has private key.
@@ -1019,14 +1065,20 @@ xmlSecOpenSSLKeyDataDsaGetType(xmlSecKeyDataPtr data) {
static xmlSecSize
xmlSecOpenSSLKeyDataDsaGetSize(xmlSecKeyDataPtr data) {
DSA* dsa;
+ const BIGNUM *p;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataDsaId), 0);
dsa = xmlSecOpenSSLKeyDataDsaGetDsa(data);
- if((dsa != NULL) && (dsa->p != NULL)) {
- return(BN_num_bits(dsa->p));
+ if(dsa == NULL) {
+ return(0);
}
- return(0);
+
+ DSA_get0_pqg(dsa, &p, NULL, NULL);
+ if(p == NULL) {
+ return(0);
+ }
+ return(BN_num_bits(p));
}
static void
@@ -1145,32 +1197,24 @@ xmlSecOpenSSLKeyDataEcdsaAdoptEcdsa(xmlSecKeyDataPtr data, EC_KEY* ecdsa) {
if(ecdsa != NULL) {
pKey = EVP_PKEY_new();
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = EVP_PKEY_assign_EC_KEY(pKey, ecdsa);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_assign_EC_KEY",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_assign_EC_KEY",
+ xmlSecKeyDataGetName(data));
+ EVP_PKEY_free(pKey);
return(-1);
}
}
ret = xmlSecOpenSSLKeyDataEcdsaAdoptEvp(data, pKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataEcdsaAdoptEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataEcdsaAdoptEvp",
+ xmlSecKeyDataGetName(data));
if(pKey != NULL) {
EVP_PKEY_free(pKey);
}
@@ -1194,9 +1238,9 @@ xmlSecOpenSSLKeyDataEcdsaGetEcdsa(xmlSecKeyDataPtr data) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataEcdsaId), NULL);
pKey = xmlSecOpenSSLKeyDataEcdsaGetEvp(data);
- xmlSecAssert2((pKey == NULL) || (pKey->type == EVP_PKEY_EC), NULL);
+ xmlSecAssert2((pKey == NULL) || (EVP_PKEY_base_id(pKey) == EVP_PKEY_EC), NULL);
- return((pKey != NULL) ? pKey->pkey.ec : (EC_KEY*)NULL);
+ return((pKey != NULL) ? EVP_PKEY_get0_EC_KEY(pKey) : NULL);
}
/**
@@ -1212,7 +1256,7 @@ int
xmlSecOpenSSLKeyDataEcdsaAdoptEvp(xmlSecKeyDataPtr data, EVP_PKEY* pKey) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataEcdsaId), -1);
xmlSecAssert2(pKey != NULL, -1);
- xmlSecAssert2(pKey->type == EVP_PKEY_EC, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(pKey) == EVP_PKEY_EC, -1);
return(xmlSecOpenSSLEvpKeyDataAdoptEvp(data, pKey));
}
@@ -1256,6 +1300,7 @@ xmlSecOpenSSLKeyDataEcdsaFinalize(xmlSecKeyDataPtr data) {
static xmlSecKeyDataType
xmlSecOpenSSLKeyDataEcdsaGetType(xmlSecKeyDataPtr data ATTRIBUTE_UNUSED) {
+ UNREFERENCED_PARAMETER(data);
/* XXX-MAK: Fix this. */
return(xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate);
}
@@ -1266,40 +1311,30 @@ xmlSecOpenSSLKeyDataEcdsaGetSize(xmlSecKeyDataPtr data) {
const EC_KEY *ecdsa;
BIGNUM * order;
xmlSecSize res;
+ int ret;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataEcdsaId), 0);
ecdsa = xmlSecOpenSSLKeyDataEcdsaGetEcdsa(data);
- if((ecdsa == NULL)) {
+ if(ecdsa == NULL) {
return(0);
}
group = EC_KEY_get0_group(ecdsa);
if(group == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EC_KEY_get0_group",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EC_KEY_get0_group", NULL);
return(0);
}
order = BN_new();
if(order == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_new", NULL);
return(0);
}
- if(EC_GROUP_get_order(group, order, NULL) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EC_GROUP_get_order",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ ret = EC_GROUP_get_order(group, order, NULL);
+ if(ret != 1) {
+ xmlSecOpenSSLError("EC_GROUP_get_order", NULL);
BN_free(order);
return(0);
}
@@ -1466,32 +1501,24 @@ xmlSecOpenSSLKeyDataRsaAdoptRsa(xmlSecKeyDataPtr data, RSA* rsa) {
if(rsa != NULL) {
pKey = EVP_PKEY_new();
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = EVP_PKEY_assign_RSA(pKey, rsa);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "EVP_PKEY_assign_RSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_assign_RSA",
+ xmlSecKeyDataGetName(data));
+ EVP_PKEY_free(pKey);
return(-1);
}
}
ret = xmlSecOpenSSLKeyDataRsaAdoptEvp(data, pKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataRsaAdoptEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataRsaAdoptEvp",
+ xmlSecKeyDataGetName(data));
if(pKey != NULL) {
EVP_PKEY_free(pKey);
}
@@ -1515,9 +1542,9 @@ xmlSecOpenSSLKeyDataRsaGetRsa(xmlSecKeyDataPtr data) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataRsaId), NULL);
pKey = xmlSecOpenSSLKeyDataRsaGetEvp(data);
- xmlSecAssert2((pKey == NULL) || (pKey->type == EVP_PKEY_RSA), NULL);
+ xmlSecAssert2((pKey == NULL) || (EVP_PKEY_base_id(pKey) == EVP_PKEY_RSA), NULL);
- return((pKey != NULL) ? pKey->pkey.rsa : (RSA*)NULL);
+ return((pKey != NULL) ? EVP_PKEY_get0_RSA(pKey) : NULL);
}
/**
@@ -1533,7 +1560,7 @@ int
xmlSecOpenSSLKeyDataRsaAdoptEvp(xmlSecKeyDataPtr data, EVP_PKEY* pKey) {
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataRsaId), -1);
xmlSecAssert2(pKey != NULL, -1);
- xmlSecAssert2(pKey->type == EVP_PKEY_RSA, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(pKey) == EVP_PKEY_RSA, -1);
return(xmlSecOpenSSLEvpKeyDataAdoptEvp(data, pKey));
}
@@ -1578,9 +1605,10 @@ xmlSecOpenSSLKeyDataRsaFinalize(xmlSecKeyDataPtr data) {
static int
xmlSecOpenSSLKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
- xmlSecKeyDataPtr data;
+ xmlSecKeyDataPtr data = NULL;
xmlNodePtr cur;
- RSA *rsa;
+ RSA *rsa = NULL;
+ BIGNUM *n = NULL, *e = NULL, *d = NULL;
int ret;
xmlSecAssert2(id == xmlSecOpenSSLKeyDataRsaId, -1);
@@ -1589,21 +1617,16 @@ xmlSecOpenSSLKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(keyInfoCtx != NULL, -1);
if(xmlSecKeyGetValue(key) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA,
- "key already has a value");
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_KEY_DATA,
+ xmlSecKeyDataKlassGetName(id),
+ "Key data value is already set");
return(-1);
}
rsa = RSA_new();
if(rsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "RSA_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1611,111 +1634,90 @@ xmlSecOpenSSLKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* first is Modulus node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAModulus, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
- RSA_free(rsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAModulus, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(rsa->n)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
- RSA_free(rsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &n) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is Exponent node. It is REQUIRED because we do not support Seed and PgenCounter*/
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeRSAExponent, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
- RSA_free(rsa);
- return(-1);
+ xmlSecInvalidNodeError(cur, xmlSecNodeRSAExponent, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(rsa->e)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
- RSA_free(rsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &e) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeRSAPrivateExponent, xmlSecNs))) {
/* next is X node. It is REQUIRED for private key but
* we are not sure exactly what do we read */
- if(xmlSecOpenSSLNodeGetBNValue(cur, &(rsa->d)) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeGetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
- RSA_free(rsa);
- return(-1);
+ if(xmlSecOpenSSLNodeGetBNValue(cur, &d) == NULL) {
+ xmlSecInternalError2("xmlSecOpenSSLNodeGetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ goto err_cleanup;
}
cur = xmlSecGetNextElementNode(cur->next);
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "no nodes expected");
- RSA_free(rsa);
- return(-1);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
+ ret = RSA_set0_key(rsa, n, e, d);
+ if(ret == 0) {
+ xmlSecOpenSSLError("RSA_set0_key",
+ xmlSecKeyDataGetName(data));
+ goto err_cleanup;
+ }
+ n = NULL;
+ e = NULL;
+ d = NULL;
+
data = xmlSecKeyDataCreate(id);
if(data == NULL ) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- RSA_free(rsa);
- return(-1);
+ xmlSecInternalError("xmlSecKeyDataCreate",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
ret = xmlSecOpenSSLKeyDataRsaAdoptRsa(data, rsa);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataRsaAdoptRsa",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecKeyDataDestroy(data);
- RSA_free(rsa);
- return(-1);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataRsaAdoptRsa",
+ xmlSecKeyDataKlassGetName(id));
+ goto err_cleanup;
}
ret = xmlSecKeySetValue(key, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecKeyDataDestroy(data);
- return(-1);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataKlassGetName(id));
+ data = NULL;
+ goto err_cleanup;
}
return(0);
+
+err_cleanup:
+ RSA_free(rsa);
+ BN_free(n);
+ BN_free(e);
+ BN_free(d);
+ if(data != NULL) {
+ xmlSecKeyDataDestroy(data);
+ }
+ return(-1);
}
static int
@@ -1723,6 +1725,7 @@ xmlSecOpenSSLKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
xmlNodePtr cur;
RSA* rsa;
+ const BIGNUM *n = NULL, *e = NULL, *d = NULL;
int ret;
xmlSecAssert2(id == xmlSecOpenSSLKeyDataRsaId, -1);
@@ -1738,71 +1741,55 @@ xmlSecOpenSSLKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
/* we can have only private key or public key */
return(0);
}
+ RSA_get0_key(rsa, &n, &e, &d);
/* first is Modulus node */
cur = xmlSecAddChild(node, xmlSecNodeRSAModulus, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, rsa->n, 1);
+
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, n, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAModulus));
return(-1);
}
/* next is Exponent node. */
cur = xmlSecAddChild(node, xmlSecNodeRSAExponent, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, rsa->e, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, e, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAExponent));
return(-1);
}
/* next is PrivateExponent node: write it ONLY for private keys and ONLY if it is requested */
- if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (rsa->d != NULL)) {
+ if(((keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate) != 0) && (d != NULL)) {
cur = xmlSecAddChild(node, xmlSecNodeRSAPrivateExponent, xmlSecNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ xmlSecInternalError2("xmlSecAddChild",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
return(-1);
}
- ret = xmlSecOpenSSLNodeSetBNValue(cur, rsa->d, 1);
+ ret = xmlSecOpenSSLNodeSetBNValue(cur, d, 1);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLNodeSetBNValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
+ xmlSecInternalError2("xmlSecOpenSSLNodeSetBNValue",
+ xmlSecKeyDataKlassGetName(id),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeRSAPrivateExponent));
return(-1);
}
}
@@ -1818,47 +1805,37 @@ xmlSecOpenSSLKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataRsaId), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
/* create exponent */
e = BN_new();
if(e == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "BN_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "sizeBits=%d", sizeBits);
+ xmlSecOpenSSLError("BN_new",
+ xmlSecKeyDataGetName(data));
return(-1);
}
ret = BN_set_word(e, RSA_F4);
if(ret != 1){
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "BN_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "sizeBits=%d", sizeBits);
+ xmlSecOpenSSLError("BN_set_word",
+ xmlSecKeyDataGetName(data));
BN_free(e);
return(-1);
}
rsa = RSA_new();
if(rsa == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "RSA_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "sizeBits=%d", sizeBits);
+ xmlSecOpenSSLError("RSA_new",
+ xmlSecKeyDataGetName(data));
BN_free(e);
return(-1);
}
ret = RSA_generate_key_ex(rsa, sizeBits, e, NULL);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "RSA_generate_key",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "sizeBits=%d", sizeBits);
+ xmlSecOpenSSLError2("RSA_generate_key_ex",
+ xmlSecKeyDataGetName(data),
+ "sizeBits=%lu", (unsigned long)sizeBits);
RSA_free(rsa);
BN_free(e);
return(-1);
@@ -1866,11 +1843,8 @@ xmlSecOpenSSLKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
ret = xmlSecOpenSSLKeyDataRsaAdoptRsa(data, rsa);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataRsaAdoptRsa",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataRsaAdoptRsa",
+ xmlSecKeyDataGetName(data));
RSA_free(rsa);
BN_free(e);
return(-1);
@@ -1886,14 +1860,20 @@ xmlSecOpenSSLKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
static xmlSecKeyDataType
xmlSecOpenSSLKeyDataRsaGetType(xmlSecKeyDataPtr data) {
RSA* rsa;
+ const BIGNUM *n = NULL, *e = NULL, *d = NULL;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataRsaId), xmlSecKeyDataTypeUnknown);
rsa = xmlSecOpenSSLKeyDataRsaGetRsa(data);
- if((rsa != NULL) && (rsa->n != NULL) && (rsa->e != NULL)) {
- if(rsa->d != NULL) {
+ if(rsa == NULL) {
+ return(xmlSecKeyDataTypeUnknown);
+ }
+
+ RSA_get0_key(rsa, &n, &e, &d);
+ if(n != NULL && e != NULL) {
+ if(d != NULL) {
return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
- } else if((rsa->flags & RSA_FLAG_EXT_PKEY) != 0) {
+ } else if(RSA_test_flags(rsa, (RSA_FLAG_EXT_PKEY)) != 0) {
/*
* !!! HACK !!! Also see DSA key
* We assume here that engine *always* has private key.
@@ -1912,12 +1892,17 @@ xmlSecOpenSSLKeyDataRsaGetType(xmlSecKeyDataPtr data) {
static xmlSecSize
xmlSecOpenSSLKeyDataRsaGetSize(xmlSecKeyDataPtr data) {
RSA* rsa;
+ const BIGNUM *n;
xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecOpenSSLKeyDataRsaId), 0);
rsa = xmlSecOpenSSLKeyDataRsaGetRsa(data);
- if((rsa != NULL) && (rsa->n != NULL)) {
- return(BN_num_bits(rsa->n));
+ if(rsa == NULL) {
+ return(0);
+ }
+ RSA_get0_key(rsa, &n, NULL, NULL);
+ if(n != NULL) {
+ return(BN_num_bits(n));
}
return(0);
}
diff --git a/src/openssl/evp_signatures.c b/src/openssl/evp_signatures.c
index 4dc493ca..5ed61c97 100644
--- a/src/openssl/evp_signatures.c
+++ b/src/openssl/evp_signatures.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:evp_signatures
+ * @Short_description: Private/public (EVP) signatures implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -21,17 +29,7 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
-
-/* new API from OpenSSL 1.1.0 (https://www.openssl.org/docs/manmaster/crypto/EVP_DigestInit.html):
- *
- * EVP_MD_CTX_create() and EVP_MD_CTX_destroy() were renamed to EVP_MD_CTX_new() and EVP_MD_CTX_free() in OpenSSL 1.1.
- */
-#if !defined(XMLSEC_OPENSSL_110)
-#define EVP_MD_CTX_new() EVP_MD_CTX_create()
-#define EVP_MD_CTX_free(x) EVP_MD_CTX_destroy((x))
-#define EVP_MD_CTX_md_data(x) ((x)->md_data)
-#endif /* !defined(XMLSEC_OPENSSL_110) */
-
+#include "openssl_compat.h"
/**************************************************************************
*
@@ -141,8 +139,6 @@ xmlSecOpenSSLEvpSignatureCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- return(0);
}
static int
@@ -215,11 +211,7 @@ xmlSecOpenSSLEvpSignatureInitialize(xmlSecTransformPtr transform) {
ctx->keyId = xmlSecOpenSSLKeyDataGost2001Id;
ctx->digest = EVP_get_digestbyname("md_gost94");
if (!ctx->digest) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
@@ -230,11 +222,7 @@ xmlSecOpenSSLEvpSignatureInitialize(xmlSecTransformPtr transform) {
ctx->keyId = xmlSecOpenSSLKeyDataGostR3410_2012_256Id;
ctx->digest = EVP_get_digestbyname("md_gost12_256");
if (!ctx->digest) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
@@ -243,33 +231,22 @@ xmlSecOpenSSLEvpSignatureInitialize(xmlSecTransformPtr transform) {
ctx->keyId = xmlSecOpenSSLKeyDataGostR3410_2012_512Id;
ctx->digest = EVP_get_digestbyname("md_gost12_512");
if (!ctx->digest) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
} else
#endif /* XMLSEC_NO_GOST2012 */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create digest CTX */
ctx->digestCtx = EVP_MD_CTX_new();
if(ctx->digestCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_MD_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_MD_CTX_new",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -320,11 +297,8 @@ xmlSecOpenSSLEvpSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key)
pKey = xmlSecOpenSSLEvpKeyDataGetEvp(value);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDataGetEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDataGetEvp",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -334,11 +308,8 @@ xmlSecOpenSSLEvpSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key)
ctx->pKey = xmlSecOpenSSLEvpKeyDup(pKey);
if(ctx->pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDup",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -390,18 +361,13 @@ xmlSecOpenSSLEvpSignatureVerify(xmlSecTransformPtr transform,
ret = EVP_VerifyFinal(ctx->digestCtx, (xmlSecByte*)data, dataSize, ctx->pKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_VerifyFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_VerifyFinal",
+ xmlSecTransformGetName(transform));
return(-1);
} else if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_VerifyFinal",
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "signature do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "EVP_VerifyFinal: signature does not verify");
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -443,21 +409,15 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
if(transform->operation == xmlSecTransformOperationSign) {
ret = EVP_SignInit(ctx->digestCtx, ctx->digest);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_SignInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_SignInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
ret = EVP_VerifyInit(ctx->digestCtx, ctx->digest);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_VerifyInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_VerifyInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -470,32 +430,23 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
if(transform->operation == xmlSecTransformOperationSign) {
ret = EVP_SignUpdate(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_SignUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_SignUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
ret = EVP_VerifyUpdate(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_VerifyUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_VerifyUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -509,31 +460,24 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
signSize = EVP_PKEY_size(ctx->pKey);
ret = xmlSecBufferSetMaxSize(out, signSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%u", signSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%u", signSize);
return(-1);
}
ret = EVP_SignFinal(ctx->digestCtx, xmlSecBufferGetData(out), &signSize, ctx->pKey);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_SignFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_SignFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetSize(out, signSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%u", signSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%u", signSize);
return(-1);
}
}
@@ -544,11 +488,7 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/openssl/globals.h b/src/openssl/globals.h
index 065c3e8f..291a84e0 100644
--- a/src/openssl/globals.h
+++ b/src/openssl/globals.h
@@ -21,4 +21,79 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+
+/**************************************************************
+ *
+ * Error constants for OpenSSL
+ *
+ *************************************************************/
+/**
+ * XMLSEC_OPENSSL_ERRORS_LIB:
+ *
+ * Macro. The XMLSec library klass for OpenSSL errors reporting functions.
+ */
+#define XMLSEC_OPENSSL_ERRORS_LIB (ERR_LIB_USER + 57)
+
+/**
+ * XMLSEC_OPENSSL_ERRORS_FUNCTION:
+ *
+ * Macro. The XMLSec library functions OpenSSL errors reporting functions.
+ */
+#define XMLSEC_OPENSSL_ERRORS_FUNCTION 0
+
+/**
+ * xmlSecOpenSSLError:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ *
+ * Macro. The XMLSec library macro for reporting OpenSSL crypro errors.
+ */
+#define xmlSecOpenSSLError(errorFunction, errorObject) \
+ { \
+ unsigned long error_code = ERR_peek_error(); \
+ const char* lib = ERR_lib_error_string(error_code); \
+ const char* func = ERR_func_error_string(error_code); \
+ const char* reason = ERR_reason_error_string(error_code); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ "openssl error: %lu: %s: %s %s", \
+ error_code, \
+ xmlSecErrorsSafeString(lib), \
+ xmlSecErrorsSafeString(func), \
+ xmlSecErrorsSafeString(reason) \
+ ); \
+ }
+
+/**
+ * xmlSecOpenSSLError2:
+ * @errorFunction: the failed function name.
+ * @errorObject: the error specific error object (e.g. transform, key data, etc).
+ * @msg: the extra message.
+ * @param: the extra message param.
+ *
+ * Macro. The XMLSec library macro for reporting OpenSSL crypro errors.
+ */
+#define xmlSecOpenSSLError2(errorFunction, errorObject, msg, param) \
+ { \
+ unsigned long error_code = ERR_peek_error(); \
+ const char* lib = ERR_lib_error_string(error_code); \
+ const char* func = ERR_func_error_string(error_code); \
+ const char* reason = ERR_reason_error_string(error_code); \
+ xmlSecError(XMLSEC_ERRORS_HERE, \
+ (const char*)(errorObject), \
+ (errorFunction), \
+ XMLSEC_ERRORS_R_CRYPTO_FAILED, \
+ msg "; openssl error: %lu: %s: %s %s", \
+ (param), \
+ error_code, \
+ xmlSecErrorsSafeString(lib), \
+ xmlSecErrorsSafeString(func), \
+ xmlSecErrorsSafeString(reason) \
+ ); \
+ }
+
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/openssl/hmac.c b/src/openssl/hmac.c
index edfc3af4..d9c60cba 100644
--- a/src/openssl/hmac.c
+++ b/src/openssl/hmac.c
@@ -1,20 +1,29 @@
-/**
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
- * XMLSec library
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
+/**
+ * SECTION:hmac
+ * @Short_description: HMAC transforms implementation for OpenSSL.
+ * @Stability: Private
*
- * HMAC Algorithm support (http://www.w3.org/TR/xmldsig-core/#sec-HMAC):
+ * [HMAC Algorithm support](http://www.w3.org/TR/xmldsig-core/#sec-HMAC):
* The HMAC algorithm (RFC2104 [HMAC]) takes the truncation length in bits
* as a parameter; if the parameter is not specified then all the bits of the
* hash are output. An example of an HMAC SignatureMethod element:
+ *
+ * |[<!-- language="XML" -->
* <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
* <HMACOutputLength>128</HMACOutputLength>
* </SignatureMethod>
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ * |]
*/
+
#ifndef XMLSEC_NO_HMAC
#include "globals.h"
@@ -32,16 +41,7 @@
#include <xmlsec/errors.h>
#include <xmlsec/openssl/crypto.h>
-
-/* new API from OpenSSL 1.1.0 (https://www.openssl.org/docs/manmaster/crypto/hmac.html):
- *
- * HMAC_CTX_new() and HMAC_CTX_free() are new in OpenSSL version 1.1.
- */
-#if !defined(XMLSEC_OPENSSL_110)
-#define HMAC_CTX_new() ((HMAC_CTX*)calloc(1, sizeof(HMAC_CTX)))
-#define HMAC_CTX_free(x) { HMAC_CTX_cleanup((x)); free((x)); }
-#endif /* !defined(XMLSEC_OPENSSL_110) */
-
+#include "openssl_compat.h"
/* sizes in bits */
#define XMLSEC_OPENSSL_MIN_HMAC_SIZE 80
@@ -171,9 +171,6 @@ xmlSecOpenSSLHmacCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- /* just in case */
- return(0);
}
@@ -234,22 +231,15 @@ xmlSecOpenSSLHmacInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_MD5 */
{
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create hmac CTX */
ctx->hmacCtx = HMAC_CTX_new();
if(ctx->hmacCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "HMAC_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("HMAC_CTX_new",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -302,11 +292,8 @@ xmlSecOpenSSLHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecT
small value
*/
if((int)ctx->dgstSize < xmlSecOpenSSLHmacGetMinOutputLength()) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "HMAC output length is too small");
+ xmlSecInvalidNodeContentError(cur, xmlSecTransformGetName(transform),
+ "HMAC output length is too small");
return(-1);
}
@@ -314,11 +301,7 @@ xmlSecOpenSSLHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecT
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -327,7 +310,8 @@ xmlSecOpenSSLHmacNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecT
static int
xmlSecOpenSSLHmacSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
xmlSecAssert2(xmlSecOpenSSLHmacCheckId(transform), -1);
- xmlSecAssert2((transform->operation == xmlSecTransformOperationSign) || (transform->operation == xmlSecTransformOperationVerify), -1);
+ xmlSecAssert2((transform->operation == xmlSecTransformOperationSign)
+ || (transform->operation == xmlSecTransformOperationVerify), -1);
xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecOpenSSLHmacSize), -1);
xmlSecAssert2(keyReq != NULL, -1);
@@ -367,38 +351,20 @@ xmlSecOpenSSLHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecAssert2(buffer != NULL, -1);
if(xmlSecBufferGetSize(buffer) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "keySize=0");
+ xmlSecInvalidZeroKeyDataSizeError(xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(xmlSecBufferGetData(buffer) != NULL, -1);
-#if (defined(XMLSEC_OPENSSL_098))
- /* no return value in 0.9.8 */
- HMAC_Init_ex(ctx->hmacCtx,
- xmlSecBufferGetData(buffer),
- xmlSecBufferGetSize(buffer),
- ctx->hmacDgst,
- NULL);
- ret = 1;
-#else /* (defined(XMLSEC_OPENSSL_098)) */
ret = HMAC_Init_ex(ctx->hmacCtx,
xmlSecBufferGetData(buffer),
xmlSecBufferGetSize(buffer),
ctx->hmacDgst,
NULL);
-#endif /* (defined(XMLSEC_OPENSSL_098)) */
-
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "HMAC_Init_ex",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- NULL);
+ xmlSecOpenSSLError("HMAC_Init_ex",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -429,44 +395,29 @@ xmlSecOpenSSLHmacVerify(xmlSecTransformPtr transform,
/* compare the digest size in bytes */
if(dataSize != ((ctx->dgstSize + 7) / 8)){
- /* NO COMMIT */
- xmlChar* a;
- mask = last_byte_masks[ctx->dgstSize % 8];
- ctx->dgst[dataSize - 1] &= mask;
- a = xmlSecBase64Encode(ctx->dgst, (ctx->dgstSize + 7) / 8, -1);
- fprintf(stderr, "%s\n", a);
- xmlFree(a);
-
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "data=%d;dgst=%d",
- dataSize, ((ctx->dgstSize + 7) / 8));
+ xmlSecInvalidSizeError("HMAC digest",
+ dataSize, ((ctx->dgstSize + 7) / 8),
+ xmlSecTransformGetName(transform));
transform->status = xmlSecTransformStatusFail;
return(0);
}
- /* we check the last byte separatelly */
+ /* we check the last byte separately */
xmlSecAssert2(dataSize > 0, -1);
mask = last_byte_masks[ctx->dgstSize % 8];
if((ctx->dgst[dataSize - 1] & mask) != (data[dataSize - 1] & mask)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match (last byte)");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match (last byte)");
transform->status = xmlSecTransformStatusFail;
return(0);
}
/* now check the rest of the digest */
if((dataSize > 1) && (memcmp(ctx->dgst, data, dataSize - 1) != 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "data and digest do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "data and digest do not match");
transform->status = xmlSecTransformStatusFail;
return(0);
}
@@ -504,23 +455,31 @@ xmlSecOpenSSLHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
inSize = xmlSecBufferGetSize(in);
if(inSize > 0) {
- HMAC_Update(ctx->hmacCtx, xmlSecBufferGetData(in), inSize);
+ ret = HMAC_Update(ctx->hmacCtx, xmlSecBufferGetData(in), inSize);
+ if(ret != 1) {
+ xmlSecOpenSSLError("HMAC_Update",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
}
if(last) {
- unsigned int dgstSize;
+ unsigned int dgstSize = 0;
- HMAC_Final(ctx->hmacCtx, ctx->dgst, &dgstSize);
+ ret = HMAC_Final(ctx->hmacCtx, ctx->dgst, &dgstSize);
+ if(ret != 1) {
+ xmlSecOpenSSLError("HMAC_Final",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
xmlSecAssert2(dgstSize > 0, -1);
/* check/set the result digest size */
@@ -529,12 +488,9 @@ xmlSecOpenSSLHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
} else if(ctx->dgstSize <= XMLSEC_SIZE_BAD_CAST(8 * dgstSize)) {
dgstSize = ((ctx->dgstSize + 7) / 8); /* we need to truncate result digest */
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "result-bits=%d;required-bits=%d",
- 8 * dgstSize, ctx->dgstSize);
+ xmlSecInvalidSizeLessThanError("HMAC digest (bits)",
+ 8 * dgstSize, ctx->dgstSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -542,11 +498,9 @@ xmlSecOpenSSLHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
if(transform->operation == xmlSecTransformOperationSign) {
ret = xmlSecBufferAppend(out, ctx->dgst, dgstSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", dgstSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", dgstSize);
return(-1);
}
}
@@ -556,11 +510,7 @@ xmlSecOpenSSLHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(in) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/openssl/kt_rsa.c b/src/openssl/kt_rsa.c
index 8d47e427..8fcb93b6 100644
--- a/src/openssl/kt_rsa.c
+++ b/src/openssl/kt_rsa.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * RSA Algorithms support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kt_rsa
+ * @Short_description: RSA Key Transport transforms implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_RSA
@@ -34,6 +39,41 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
#include <xmlsec/openssl/bn.h>
+#include "openssl_compat.h"
+
+#ifdef OPENSSL_IS_BORINGSSL
+
+/* defined in boringssl/crypto/fipsmodule/rsa/internal.h */
+int RSA_padding_check_PKCS1_OAEP_mgf1(uint8_t *out, size_t *out_len, size_t max_out,
+ const uint8_t *from, size_t from_len,
+ const uint8_t *param, size_t param_len,
+ const EVP_MD *md, const EVP_MD *mgf1md);
+
+static int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int to_len,
+ unsigned char *from, int from_len,
+ int rsa_len,
+ unsigned char *param, int param_len) {
+ size_t out_len = 0;
+ int ret;
+
+ ret = RSA_padding_check_PKCS1_OAEP_mgf1(to, &out_len, to_len, from, from_len, param, param_len, NULL, NULL);
+ if(!ret) {
+ return(-1);
+ }
+ return((int)out_len);
+}
+
+
+int RSA_padding_add_PKCS1_OAEP(uint8_t *to, size_t to_len,
+ const uint8_t *from,
+ size_t from_len,
+ const uint8_t *param,
+ size_t param_len) {
+ return RSA_padding_add_PKCS1_OAEP_mgf1(to, to_len, from, from_len, param, param_len, NULL, NULL);
+}
+#endif /* OPENSSL_IS_BORINGSSL */
+
+
/**************************************************************************
*
@@ -166,6 +206,7 @@ static int
xmlSecOpenSSLRsaPkcs1SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecOpenSSLRsaPkcs1CtxPtr ctx;
EVP_PKEY* pKey;
+ RSA *rsa;
xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaPkcs1Id), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
@@ -179,23 +220,18 @@ xmlSecOpenSSLRsaPkcs1SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
pKey = xmlSecOpenSSLKeyDataRsaGetEvp(xmlSecKeyGetValue(key));
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLKeyDataRsaGetEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataRsaGetEvp",
+ xmlSecTransformGetName(transform));
return(-1);
}
- xmlSecAssert2(pKey->type == EVP_PKEY_RSA, -1);
- xmlSecAssert2(pKey->pkey.rsa != NULL, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(pKey) == EVP_PKEY_RSA, -1);
+ rsa = EVP_PKEY_get0_RSA(pKey);
+ xmlSecAssert2(rsa != NULL, -1);
ctx->pKey = xmlSecOpenSSLEvpKeyDup(pKey);
if(ctx->pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDup",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -225,11 +261,8 @@ xmlSecOpenSSLRsaPkcs1Execute(xmlSecTransformPtr transform, int last, xmlSecTrans
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
ret = xmlSecOpenSSLRsaPkcs1Process(transform, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLRsaPkcs1Process",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLRsaPkcs1Process",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -237,11 +270,7 @@ xmlSecOpenSSLRsaPkcs1Execute(xmlSecTransformPtr transform, int last, xmlSecTrans
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -253,6 +282,7 @@ xmlSecOpenSSLRsaPkcs1Process(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
xmlSecBufferPtr in, out;
xmlSecSize inSize, outSize;
xmlSecSize keySize;
+ RSA *rsa;
int ret;
xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaPkcs1Id), -1);
@@ -263,10 +293,11 @@ xmlSecOpenSSLRsaPkcs1Process(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
ctx = xmlSecOpenSSLRsaPkcs1GetCtx(transform);
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(ctx->pKey != NULL, -1);
- xmlSecAssert2(ctx->pKey->type == EVP_PKEY_RSA, -1);
- xmlSecAssert2(ctx->pKey->pkey.rsa != NULL, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(ctx->pKey) == EVP_PKEY_RSA, -1);
+ rsa = EVP_PKEY_get0_RSA(ctx->pKey);
+ xmlSecAssert2(rsa != NULL, -1);
- keySize = RSA_size(ctx->pKey->pkey.rsa);
+ keySize = RSA_size(rsa);
xmlSecAssert2(keySize > 0, -1);
in = &(transform->inBuf);
@@ -279,55 +310,43 @@ xmlSecOpenSSLRsaPkcs1Process(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
/* the encoded size is equal to the keys size so we could not
* process more than that */
if((transform->operation == xmlSecTransformOperationEncrypt) && (inSize >= keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected less than %d", inSize, keySize);
+ xmlSecInvalidSizeLessThanError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
} else if((transform->operation == xmlSecTransformOperationDecrypt) && (inSize != keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected %d", inSize, keySize);
+ xmlSecInvalidSizeError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = keySize;
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
if(transform->operation == xmlSecTransformOperationEncrypt) {
ret = RSA_public_encrypt(inSize, xmlSecBufferGetData(in),
- xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_PKCS1_PADDING);
+ xmlSecBufferGetData(out),
+ rsa, RSA_PKCS1_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_public_encrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecOpenSSLError2("RSA_public_encrypt",
+ xmlSecTransformGetName(transform),
+ "size=%lu", (unsigned long)inSize);
return(-1);
}
outSize = ret;
} else {
ret = RSA_private_decrypt(inSize, xmlSecBufferGetData(in),
- xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_PKCS1_PADDING);
+ xmlSecBufferGetData(out),
+ rsa, RSA_PKCS1_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_private_decrypt",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", inSize);
+ xmlSecOpenSSLError2("RSA_private_decrypt",
+ xmlSecTransformGetName(transform),
+ "size=%lu", (unsigned long)inSize);
return(-1);
}
outSize = ret;
@@ -335,21 +354,17 @@ xmlSecOpenSSLRsaPkcs1Process(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -449,11 +464,8 @@ xmlSecOpenSSLRsaOaepInitialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->oaepParams), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -496,11 +508,8 @@ xmlSecOpenSSLRsaOaepNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
if(xmlSecCheckNodeName(cur, xmlSecNodeRsaOAEPparams, xmlSecEncNs)) {
ret = xmlSecBufferBase64NodeContentRead(&(ctx->oaepParams), cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeDigestMethod, xmlSecDSigNs)) {
@@ -509,33 +518,24 @@ xmlSecOpenSSLRsaOaepNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
/* Algorithm attribute is required */
algorithm = xmlGetProp(cur, xmlSecAttrAlgorithm);
if(algorithm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrAlgorithm,
+ xmlSecTransformGetName(transform),
+ "empty");
return(-1);
}
/* for now we support only sha1 */
if(xmlStrcmp(algorithm, xmlSecHrefSha1) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(algorithm),
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "digest algorithm is not supported for rsa/oaep");
+ xmlSecInvalidTransfromError2(transform,
+ "digest algorithm=\"%s\" is not supported for rsa/oaep",
+ xmlSecErrorsSafeString(algorithm));
xmlFree(algorithm);
return(-1);
}
xmlFree(algorithm);
} else {
/* not found */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
@@ -574,6 +574,7 @@ static int
xmlSecOpenSSLRsaOaepSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecOpenSSLRsaOaepCtxPtr ctx;
EVP_PKEY* pKey;
+ RSA *rsa;
xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaOaepId), -1);
xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
@@ -587,23 +588,18 @@ xmlSecOpenSSLRsaOaepSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
pKey = xmlSecOpenSSLKeyDataRsaGetEvp(xmlSecKeyGetValue(key));
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLKeyDataRsaGetEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataRsaGetEvp",
+ xmlSecTransformGetName(transform));
return(-1);
}
- xmlSecAssert2(pKey->type == EVP_PKEY_RSA, -1);
- xmlSecAssert2(pKey->pkey.rsa != NULL, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(pKey) == EVP_PKEY_RSA, -1);
+ rsa = EVP_PKEY_get0_RSA(pKey);
+ xmlSecAssert2(rsa != NULL, -1);
ctx->pKey = xmlSecOpenSSLEvpKeyDup(pKey);
if(ctx->pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDup",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -633,11 +629,8 @@ xmlSecOpenSSLRsaOaepExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
ret = xmlSecOpenSSLRsaOaepProcess(transform, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLRsaOaepProcess",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLRsaOaepProcess",
+ xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -645,11 +638,7 @@ xmlSecOpenSSLRsaOaepExecute(xmlSecTransformPtr transform, int last, xmlSecTransf
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -662,6 +651,7 @@ xmlSecOpenSSLRsaOaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
xmlSecBufferPtr in, out;
xmlSecSize inSize, outSize;
xmlSecSize keySize;
+ RSA *rsa;
int ret;
xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaOaepId), -1);
@@ -672,10 +662,11 @@ xmlSecOpenSSLRsaOaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
ctx = xmlSecOpenSSLRsaOaepGetCtx(transform);
xmlSecAssert2(ctx != NULL, -1);
xmlSecAssert2(ctx->pKey != NULL, -1);
- xmlSecAssert2(ctx->pKey->type == EVP_PKEY_RSA, -1);
- xmlSecAssert2(ctx->pKey->pkey.rsa != NULL, -1);
+ xmlSecAssert2(EVP_PKEY_base_id(ctx->pKey) == EVP_PKEY_RSA, -1);
+ rsa = EVP_PKEY_get0_RSA(ctx->pKey);
+ xmlSecAssert2(rsa != NULL, -1);
- keySize = RSA_size(ctx->pKey->pkey.rsa);
+ keySize = RSA_size(rsa);
xmlSecAssert2(keySize > 0, -1);
in = &(transform->inBuf);
@@ -688,29 +679,21 @@ xmlSecOpenSSLRsaOaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
/* the encoded size is equal to the keys size so we could not
* process more than that */
if((transform->operation == xmlSecTransformOperationEncrypt) && (inSize >= keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected less than %d", inSize, keySize);
+ xmlSecInvalidSizeLessThanError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
} else if((transform->operation == xmlSecTransformOperationDecrypt) && (inSize != keySize)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d when expected %d", inSize, keySize);
+ xmlSecInvalidSizeError("Input data", inSize, keySize,
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = keySize;
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -719,125 +702,105 @@ xmlSecOpenSSLRsaOaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
/* encode w/o OAEPParams --> simple */
ret = RSA_public_encrypt(inSize, xmlSecBufferGetData(in),
xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_PKCS1_OAEP_PADDING);
+ rsa, RSA_PKCS1_OAEP_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_public_encrypt(RSA_PKCS1_OAEP_PADDING)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_public_encrypt(RSA_PKCS1_OAEP_PADDING)",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
} else if((transform->operation == xmlSecTransformOperationEncrypt) && (paramsSize > 0)) {
+ xmlSecBuffer tmp;
+
xmlSecAssert2(xmlSecBufferGetData(&(ctx->oaepParams)) != NULL, -1);
- /* add space for padding */
- ret = xmlSecBufferSetMaxSize(in, keySize);
+ /* allocate space for temp buffer */
+ ret = xmlSecBufferInitialize(&tmp, keySize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", keySize);
+ xmlSecInternalError2("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform),
+ "size=%d", keySize);
return(-1);
}
/* add padding */
- ret = RSA_padding_add_PKCS1_OAEP(xmlSecBufferGetData(in), keySize,
+ ret = RSA_padding_add_PKCS1_OAEP(xmlSecBufferGetData(&tmp), keySize,
xmlSecBufferGetData(in), inSize,
- xmlSecBufferGetData(&(ctx->oaepParams)),
- paramsSize);
+ xmlSecBufferGetData(&(ctx->oaepParams)), paramsSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_padding_add_PKCS1_OAEP",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_padding_add_PKCS1_OAEP",
+ xmlSecTransformGetName(transform));
+ xmlSecBufferFinalize(&tmp);
return(-1);
}
- inSize = keySize;
/* encode with OAEPParams */
- ret = RSA_public_encrypt(inSize, xmlSecBufferGetData(in),
+ ret = RSA_public_encrypt(keySize, xmlSecBufferGetData(&tmp),
xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_NO_PADDING);
+ rsa, RSA_NO_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_public_encrypt(RSA_NO_PADDING)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_public_encrypt(RSA_NO_PADDING)",
+ xmlSecTransformGetName(transform));
+ xmlSecBufferFinalize(&tmp);
return(-1);
}
outSize = ret;
+ xmlSecBufferFinalize(&tmp);
} else if((transform->operation == xmlSecTransformOperationDecrypt) && (paramsSize == 0)) {
ret = RSA_private_decrypt(inSize, xmlSecBufferGetData(in),
xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_PKCS1_OAEP_PADDING);
+ rsa, RSA_PKCS1_OAEP_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_private_decrypt(RSA_PKCS1_OAEP_PADDING)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_private_decrypt(RSA_PKCS1_OAEP_PADDING)",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
} else if((transform->operation == xmlSecTransformOperationDecrypt) && (paramsSize != 0)) {
BIGNUM * bn;
- bn = BN_new();
- if(bn == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "BN_new()",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
ret = RSA_private_decrypt(inSize, xmlSecBufferGetData(in),
xmlSecBufferGetData(out),
- ctx->pKey->pkey.rsa, RSA_NO_PADDING);
+ rsa, RSA_NO_PADDING);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_private_decrypt(RSA_NO_PADDING)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- BN_free(bn);
+ xmlSecOpenSSLError("RSA_private_decrypt(RSA_NO_PADDING)",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
+#ifndef OPENSSL_IS_BORINGSSL
/*
- * the private decrypt w/o padding adds '0's at the begginning.
+ * the private decrypt w/o padding adds '0's at the beginning.
* it's not clear for me can I simply skip all '0's from the
* beggining so I have to do decode it back to BIGNUM and dump
* buffer again
*/
+ bn = BN_new();
+ if(bn == NULL) {
+ xmlSecOpenSSLError("BN_new()",
+ xmlSecTransformGetName(transform));
+ return(-1);
+ }
+
if(BN_bin2bn(xmlSecBufferGetData(out), outSize, bn) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "BN_bin2bn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", outSize);
+ xmlSecOpenSSLError2("BN_bin2bn",
+ xmlSecTransformGetName(transform),
+ "size=%lu", (unsigned long)outSize);
BN_free(bn);
return(-1);
}
ret = BN_bn2bin(bn, xmlSecBufferGetData(out));
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "BN_bn2bin",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bn2bin",
+ xmlSecTransformGetName(transform));
BN_free(bn);
return(-1);
}
BN_free(bn);
outSize = ret;
+#endif /* OPENSSL_IS_BORINGSSL */
ret = RSA_padding_check_PKCS1_OAEP(xmlSecBufferGetData(out), outSize,
xmlSecBufferGetData(out), outSize,
@@ -845,41 +808,32 @@ xmlSecOpenSSLRsaOaepProcess(xmlSecTransformPtr transform, xmlSecTransformCtxPtr
xmlSecBufferGetData(&(ctx->oaepParams)),
paramsSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "RSA_padding_check_PKCS1_OAEP",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("RSA_padding_check_PKCS1_OAEP",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "Unexpected trasnform operation: %d; paramsSize: %d",
- (int)transform->operation, (int)paramsSize);
+ xmlSecOtherError3(XMLSEC_ERRORS_R_INVALID_OPERATION,
+ xmlSecTransformGetName(transform),
+ "Unexpected transform operation: %ld; paramsSize: %ld",
+ (long int)transform->operation, (long int)paramsSize);
return(-1);
}
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
diff --git a/src/openssl/kw_aes.c b/src/openssl/kw_aes.c
index 8e71148e..fe0640d0 100644
--- a/src/openssl/kw_aes.c
+++ b/src/openssl/kw_aes.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * AES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_aes
+ * @Short_description: AES Key Transport transforms implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_AES
#include "globals.h"
@@ -104,21 +109,14 @@ xmlSecOpenSSLKWAesInitialize(xmlSecTransformPtr transform) {
} else if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformKWAes256Id)) {
ctx->keyExpectedSize = XMLSEC_KW_AES256_KEY_SIZE;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLKWAesGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKWAesGetKey",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -183,12 +181,8 @@ xmlSecOpenSSLKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < ctx->keyExpectedSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key=%d;expected=%d",
- keySize, ctx->keyExpectedSize);
+ xmlSecInvalidKeyDataSizeError(keySize, ctx->keyExpectedSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -196,12 +190,9 @@ xmlSecOpenSSLKWAesSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
xmlSecBufferGetData(buffer),
ctx->keyExpectedSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "expected-size=%d",
- ctx->keyExpectedSize);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", ctx->keyExpectedSize);
return(-1);
}
@@ -241,11 +232,8 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % 8) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "size=%d(not 8 bytes aligned)", inSize);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, 8, xmlSecTransformGetName(transform));
return(-1);
}
@@ -259,11 +247,9 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -273,11 +259,8 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
8 * keySize,
&aesKey);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "AES_set_decrypt_key",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("AES_set_decrypt_key",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -285,11 +268,8 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -299,11 +279,8 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
8 * keySize,
&aesKey);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "AES_set_decrypt_key",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("AES_set_decrypt_key",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -311,11 +288,8 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWAesEncode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKWAesEncode",
+ xmlSecTransformGetName(transform));
return(-1);
}
outSize = ret;
@@ -323,21 +297,17 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "outSize=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "inSize%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -346,11 +316,7 @@ xmlSecOpenSSLKWAesExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
diff --git a/src/openssl/kw_des.c b/src/openssl/kw_des.c
index c9642579..e20a86df 100644
--- a/src/openssl/kw_des.c
+++ b/src/openssl/kw_des.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:kw_des
+ * @Short_description: DES Key Transport transforms implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#ifndef XMLSEC_NO_DES
#include "globals.h"
@@ -29,6 +34,7 @@
#include <xmlsec/openssl/crypto.h>
#include "../kw_aes_des.h"
+#include "openssl_compat.h"
/*********************************************************************
*
@@ -159,11 +165,8 @@ xmlSecOpenSSLKWDes3Initialize(xmlSecTransformPtr transform) {
ret = xmlSecBufferInitialize(&(ctx->keyBuffer), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -227,22 +230,16 @@ xmlSecOpenSSLKWDes3SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
keySize = xmlSecBufferGetSize(buffer);
if(keySize < XMLSEC_KW_DES3_KEY_LENGTH) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE,
- "key length %d is not enough (%d expected)",
- keySize, XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInvalidKeyDataSizeError(keySize, XMLSEC_KW_DES3_KEY_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferSetData(&(ctx->keyBuffer), xmlSecBufferGetData(buffer), XMLSEC_KW_DES3_KEY_LENGTH);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
+ xmlSecInternalError2("xmlSecBufferSetData",
+ xmlSecTransformGetName(transform),
+ "size=%d", XMLSEC_KW_DES3_KEY_LENGTH);
return(-1);
}
@@ -281,12 +278,9 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
/* just do nothing */
} else if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
if((inSize % XMLSEC_KW_DES3_BLOCK_LENGTH) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "%d bytes - not %d bytes aligned",
- inSize, XMLSEC_KW_DES3_BLOCK_LENGTH);
+ xmlSecInvalidSizeNotMultipleOfError("Input data",
+ inSize, XMLSEC_KW_DES3_BLOCK_LENGTH,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -302,11 +296,9 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
ret = xmlSecBufferSetMaxSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
@@ -315,12 +307,8 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Encode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -329,12 +317,8 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
xmlSecBufferGetData(in), inSize,
xmlSecBufferGetData(out), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecKWDes3Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "key=%d,in=%d,out=%d",
- keySize, inSize, outSize);
+ xmlSecInternalError4("xmlSecKWDes3Decode", xmlSecTransformGetName(transform),
+ "key=%d,in=%d,out=%d", keySize, inSize, outSize);
return(-1);
}
outSize = ret;
@@ -342,21 +326,17 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
ret = xmlSecBufferSetSize(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -365,11 +345,7 @@ xmlSecOpenSSLKWDes3Execute(xmlSecTransformPtr transform, int last, xmlSecTransfo
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -394,11 +370,7 @@ xmlSecOpenSSLKWDes3Sha1(void * context,
xmlSecAssert2(outSize >= SHA_DIGEST_LENGTH, -1);
if(SHA1(in, inSize, out) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "SHA1",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("SHA1", NULL);
return(-1);
}
return(SHA_DIGEST_LENGTH);
@@ -416,11 +388,8 @@ xmlSecOpenSSLKWDes3GenerateRandom(void * context,
ret = RAND_bytes(out, outSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "RAND_bytes",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "ret=%d", ret);
+ xmlSecOpenSSLError2("RAND_bytes", NULL,
+ "size=%lu", (unsigned long)outSize);
return(-1);
}
@@ -451,11 +420,7 @@ xmlSecOpenSSLKWDes3BlockEncrypt(void * context,
out, outSize,
1); /* encrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKWDes3Encrypt", NULL);
return(-1);
}
@@ -486,11 +451,7 @@ xmlSecOpenSSLKWDes3BlockDecrypt(void * context,
out, outSize,
0); /* decrypt */
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLKWDes3Encrypt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKWDes3Encrypt", NULL);
return(-1);
}
@@ -521,21 +482,13 @@ xmlSecOpenSSLKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
cipherCtx = EVP_CIPHER_CTX_new();
if(cipherCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_CIPHER_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CIPHER_CTX_new", NULL);
return(-1);
}
ret = EVP_CipherInit(cipherCtx, EVP_des_ede3_cbc(), key, iv, enc);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_CipherInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherInit", NULL);
EVP_CIPHER_CTX_free(cipherCtx);
return(-1);
}
@@ -544,22 +497,14 @@ xmlSecOpenSSLKWDes3Encrypt(const xmlSecByte *key, xmlSecSize keySize,
ret = EVP_CipherUpdate(cipherCtx, out, &updateLen, in, inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_CipherUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherUpdate", NULL);
EVP_CIPHER_CTX_free(cipherCtx);
return(-1);
}
ret = EVP_CipherFinal(cipherCtx, out + updateLen, &finalLen);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_CipherFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_CipherFinal", NULL);
EVP_CIPHER_CTX_free(cipherCtx);
return(-1);
}
diff --git a/src/openssl/openssl_compat.h b/src/openssl/openssl_compat.h
new file mode 100644
index 00000000..9d5b01cf
--- /dev/null
+++ b/src/openssl/openssl_compat.h
@@ -0,0 +1,88 @@
+#ifndef __XMLSEC_OPENSSL_OPENSSL_COMPAT_H__
+#define __XMLSEC_OPENSSL_OPENSSL_COMPAT_H__
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * This file provides a compatibility layer for pre-OpenSSL 1.1.0 versions.
+ *
+ * The functions here provide accessors for structs which were made opaque in
+ * 1.0.0 and 1.1.0 so they an be accessed in earlier versions of the library
+ * using the same syntax. This file won't be required once OpenSSL 1.1.0 is
+ * the minimum supported version. Note that LibreSSL "forked" at OpenSSL 1.0.0.
+ */
+
+/******************************************************************************
+ *
+ * OpenSSL 1.1.0 compatibility
+ *
+ *****************************************************************************/
+#if !defined(XMLSEC_OPENSSL_API_110)
+
+/* EVP_PKEY stuff */
+#define EVP_PKEY_up_ref(pKey) CRYPTO_add(&((pKey)->references), 1, CRYPTO_LOCK_EVP_PKEY)
+#define EVP_PKEY_get0_DSA(pKey) (((pKey) != NULL) ? ((pKey)->pkey.dsa) : (DSA*)NULL)
+#define EVP_PKEY_get0_RSA(pKey) (((pKey) != NULL) ? ((pKey)->pkey.rsa) : (RSA*)NULL)
+#define EVP_PKEY_get0_EC_KEY(pKey) (((pKey) != NULL) ? ((pKey)->pkey.ec) : (EC_KEY*)NULL)
+
+/* EVP_MD stuff */
+#define EVP_MD_CTX_new() EVP_MD_CTX_create()
+#define EVP_MD_CTX_free(x) EVP_MD_CTX_destroy((x))
+#define EVP_MD_CTX_md_data(x) ((x)->md_data)
+
+/* EVP_CIPHER_CTX stuff */
+#define EVP_CIPHER_CTX_encrypting(x) ((x)->encrypt)
+
+/* HMAC_CTX stuff */
+#define HMAC_CTX_new() ((HMAC_CTX*)calloc(1, sizeof(HMAC_CTX)))
+#define HMAC_CTX_free(x) { HMAC_CTX_cleanup((x)); free((x)); }
+
+/* X509 stuff */
+#define ASN1_STRING_get0_data(data) ASN1_STRING_data((data))
+#define X509_CRL_get0_nextUpdate(crl) X509_CRL_get_nextUpdate((crl))
+#define X509_get0_notBefore(x509) X509_get_notBefore((x509))
+#define X509_get0_notAfter(x509) X509_get_notAfter((x509))
+#define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject
+#define X509_REVOKED_get0_serialNumber(r) (((r) != NULL) ? ((r)->serialNumber) : (ASN1_INTEGER *)NULL)
+#define X509_OBJECT_new() (calloc(1, sizeof(X509_OBJECT)))
+#define X509_OBJECT_free(x) { X509_OBJECT_free_contents(x); free(x); }
+#define X509_OBJECT_get0_X509(x) (((x) != NULL) ? ((x)->data.x509) : (X509 *)NULL)
+
+#endif /* !defined(XMLSEC_OPENSSL_API_110) */
+
+/******************************************************************************
+ *
+ * boringssl compatibility
+ *
+ *****************************************************************************/
+#ifdef OPENSSL_IS_BORINGSSL
+
+#define ENGINE_cleanup(...) {}
+#define CONF_modules_unload(...) {}
+#define RAND_write_file(file) (0)
+
+#define EVP_PKEY_base_id(pkey) EVP_PKEY_id(pkey)
+#define EVP_CipherFinal(ctx, out, out_len) EVP_CipherFinal_ex(ctx, out, out_len)
+#define EVP_read_pw_string(...) (-1)
+
+#define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject
+#define X509_OBJECT_new() (calloc(1, sizeof(X509_OBJECT)))
+#define X509_OBJECT_free(x) { X509_OBJECT_free_contents(x); free(x); }
+
+#endif /* OPENSSL_IS_BORINGSSL */
+
+/******************************************************************************
+ *
+ * LibreSSL 2.7 compatibility (implements most of OpenSSL 1.1 API)
+ *
+ *****************************************************************************/
+#if defined(LIBRESSL_VERSION_NUMBER) && defined(XMLSEC_OPENSSL_API_110)
+/* EVP_CIPHER_CTX stuff */
+#define EVP_CIPHER_CTX_encrypting(x) ((x)->encrypt)
+
+/* X509 stuff */
+#define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject
+#define X509_OBJECT_new() (calloc(1, sizeof(X509_OBJECT)))
+#define X509_OBJECT_free(x) { X509_OBJECT_free_contents(x); free(x); }
+#endif /* defined(LIBRESSL_VERSION_NUMBER) && defined(XMLSEC_OPENSSL_API_110) */
+
+#endif /* __XMLSEC_OPENSSL_OPENSSL_COMPAT_H__ */
diff --git a/src/openssl/signatures.c b/src/openssl/signatures.c
index d10204de..bc695f42 100644
--- a/src/openssl/signatures.c
+++ b/src/openssl/signatures.c
@@ -1,15 +1,24 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:signatures
+ * @Short_description: Signatures implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <string.h>
+#include <openssl/bn.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/sha.h>
@@ -21,55 +30,72 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
+#include "openssl_compat.h"
-/* new API from OpenSSL 1.1.0 (https://www.openssl.org/docs/manmaster/crypto/EVP_DigestInit.html):
+/******************************************************************************
*
- * EVP_MD_CTX_create() and EVP_MD_CTX_destroy() were renamed to EVP_MD_CTX_new() and EVP_MD_CTX_free() in OpenSSL 1.1.
- */
-#if !defined(XMLSEC_OPENSSL_110)
-#define EVP_MD_CTX_new() EVP_MD_CTX_create()
-#define EVP_MD_CTX_free(x) EVP_MD_CTX_destroy((x))
-#define EVP_MD_CTX_md_data(x) ((x)->md_data)
+ * OpenSSL 1.1.0 compatibility
+ *
+ *****************************************************************************/
+#if !defined(XMLSEC_OPENSSL_API_110)
-#ifndef XMLSEC_NO_DSA
-/* we expect the r/s to be NOT NULL */
-static void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, ECDSA_SIG *sig) {
- if (pr != NULL) {
- if(sig->r == NULL) {
- sig->r = BN_new();
- }
- *pr = sig->r;
+#ifndef XMLSEC_NO_ECDSA
+
+static inline void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps) {
+ xmlSecAssert(sig != NULL);
+
+ if(pr != NULL) {
+ (*pr) = sig->r;
}
- if (ps != NULL) {
- if(sig->s == NULL) {
- sig->s = BN_new();
- }
- *ps = sig->s;
+ if(ps != NULL) {
+ (*ps) = sig->s;
}
}
-#endif /* XMLSEC_NO_ECDSA */
-#endif /* !defined(XMLSEC_OPENSSL_110) */
+static inline int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s) {
+ xmlSecAssert2(sig != NULL, 0);
+
+ if((r == NULL) || (s == NULL)) {
+ return(0);
+ }
+ BN_clear_free(sig->r);
+ BN_clear_free(sig->s);
+ sig->r = r;
+ sig->s = s;
+ return(1);
+}
+#endif /* XMLSEC_NO_ECDSA */
-/* Preparation for OpenSSL 1.1.0 compatibility: we expect the r/s to be NOT NULL */
#ifndef XMLSEC_NO_DSA
-static void DSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, DSA_SIG *sig) {
- if (pr != NULL) {
- if(sig->r == NULL) {
- sig->r = BN_new();
- }
- *pr = sig->r;
+
+static inline void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps) {
+ xmlSecAssert(sig != NULL);
+
+ if(pr != NULL) {
+ (*pr) = sig->r;
}
- if (ps != NULL) {
- if(sig->s == NULL) {
- sig->s = BN_new();
- }
- *ps = sig->s;
+ if(ps != NULL) {
+ (*ps) = sig->s;
}
}
-#endif /* XMLSEC_NO_DSA */
+static inline int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s) {
+ xmlSecAssert2(sig != NULL, 0);
+
+ if(r == NULL || s == NULL) {
+ return(0);
+ }
+ BN_clear_free(sig->r);
+ BN_clear_free(sig->s);
+
+ sig->r = r;
+ sig->s = s;
+ return(1);
+}
+#endif /* XMLSEC_NO_DSA */
+
+#endif /* !defined(XMLSEC_OPENSSL_API_110) */
/**************************************************************************
@@ -214,8 +240,6 @@ xmlSecOpenSSLSignatureCheckId(xmlSecTransformPtr transform) {
{
return(0);
}
-
- return(0);
}
static int
@@ -303,32 +327,22 @@ xmlSecOpenSSLSignatureInitialize(xmlSecTransformPtr transform) {
#endif /* XMLSEC_NO_ECDSA */
if(1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidTransfromError(transform)
return(-1);
}
/* create/init digest CTX */
ctx->digestCtx = EVP_MD_CTX_new();
if(ctx->digestCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_MD_CTX_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_MD_CTX_new",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = EVP_DigestInit(ctx->digestCtx, ctx->digest);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestInit",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_DigestInit",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -379,11 +393,8 @@ xmlSecOpenSSLSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
pKey = xmlSecOpenSSLEvpKeyDataGetEvp(value);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDataGetEvp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDataGetEvp",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -393,11 +404,8 @@ xmlSecOpenSSLSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
ctx->pKey = xmlSecOpenSSLEvpKeyDup(pKey);
if(ctx->pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecOpenSSLEvpKeyDup",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyDup",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -450,11 +458,8 @@ xmlSecOpenSSLSignatureVerify(xmlSecTransformPtr transform,
ret = (ctx->verifyCallback)(ctx, data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "verifyCallback",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("verifyCallback",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -462,11 +467,9 @@ xmlSecOpenSSLSignatureVerify(xmlSecTransformPtr transform,
if(ret == 1) {
transform->status = xmlSecTransformStatusOk;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "verifyCallback",
- XMLSEC_ERRORS_R_DATA_NOT_MATCH,
- "signature do not match");
+ xmlSecOtherError(XMLSEC_ERRORS_R_DATA_NOT_MATCH,
+ xmlSecTransformGetName(transform),
+ "ctx->verifyCallback: signature does not verify");
transform->status = xmlSecTransformStatusFail;
}
@@ -513,21 +516,15 @@ xmlSecOpenSSLSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTran
ret = EVP_DigestUpdate(ctx->digestCtx, xmlSecBufferGetData(in), inSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestUpdate",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_DigestUpdate",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -537,11 +534,8 @@ xmlSecOpenSSLSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTran
ret = EVP_DigestFinal(ctx->digestCtx, ctx->dgst, &ctx->dgstSize);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "EVP_DigestFinal",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_DigestFinal",
+ xmlSecTransformGetName(transform));
return(-1);
}
xmlSecAssert2(ctx->dgstSize > 0, -1);
@@ -550,11 +544,8 @@ xmlSecOpenSSLSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTran
if(transform->operation == xmlSecTransformOperationSign) {
ret = (ctx->signCallback)(ctx, out);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "signCallback",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("signCallback",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -567,11 +558,7 @@ xmlSecOpenSSLSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTran
/* the only way we can get here is if there is no input */
xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
@@ -610,7 +597,7 @@ static int
xmlSecOpenSSLSignatureDsaSign(xmlSecOpenSSLSignatureCtxPtr ctx, xmlSecBufferPtr out) {
DSA * dsaKey = NULL;
DSA_SIG *sig = NULL;
- BIGNUM *rr = NULL, *ss = NULL;
+ const BIGNUM *rr = NULL, *ss = NULL;
xmlSecByte *outData;
xmlSecSize dsaSignSize, signHalfSize, rSize, sSize;
int res = -1;
@@ -625,85 +612,54 @@ xmlSecOpenSSLSignatureDsaSign(xmlSecOpenSSLSignatureCtxPtr ctx, xmlSecBufferPtr
/* get key */
dsaKey = EVP_PKEY_get1_DSA(ctx->pKey);
if(dsaKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_PKEY_get1_DSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_get1_DSA", NULL);
goto done;
}
/* signature size = r + s + 8 bytes, we just need r+s */
dsaSignSize = DSA_size(dsaKey);
if(dsaSignSize < 8) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_size",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "dsaSignSize=%d", (int)dsaSignSize);
+ xmlSecInvalidSizeLessThanError("DSA signature", dsaSignSize, 8, NULL);
goto done;
}
signHalfSize = (dsaSignSize - 8) / 2;
if(signHalfSize < 4) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "signHalfSize",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "signHalfSize=%d", (int)signHalfSize);
+ xmlSecInvalidSizeLessThanError("DSA signature (half)", signHalfSize, 4, NULL);
goto done;
}
/* calculate signature */
sig = DSA_do_sign(ctx->dgst, ctx->dgstSize, dsaKey);
if(sig == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_do_sign",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_do_sign", NULL);
goto done;
}
/* get signature components */
- DSA_SIG_get0(&rr, &ss, sig);
+ DSA_SIG_get0(sig, &rr, &ss);
if((rr == NULL) || (ss == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_SIG_get0",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_SIG_get0", NULL);
goto done;
}
rSize = BN_num_bytes(rr);
if(rSize > signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "rSize=%d > %d",
- rSize, signHalfSize);
+ xmlSecInvalidSizeMoreThanError("DSA signature r",
+ rSize, signHalfSize, NULL);
goto done;
}
sSize = BN_num_bytes(ss);
if(sSize > signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "sSize=%d > %d",
- sSize, signHalfSize);
+ xmlSecInvalidSizeMoreThanError("DSA signature s",
+ sSize, signHalfSize, NULL);
goto done;
}
/* allocate buffer */
ret = xmlSecBufferSetSize(out, 2 * signHalfSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)(2 * signHalfSize));
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", (int)(2 * signHalfSize));
goto done;
}
outData = xmlSecBufferGetData(out);
@@ -726,12 +682,6 @@ done:
if(dsaKey != NULL) {
DSA_free(dsaKey);
}
- if(rr != NULL) {
- BN_free(rr);
- }
- if(ss != NULL) {
- BN_free(ss);
- }
/* done */
return(res);
@@ -754,95 +704,63 @@ xmlSecOpenSSLSignatureDsaVerify(xmlSecOpenSSLSignatureCtxPtr ctx, const xmlSecBy
/* get key */
dsaKey = EVP_PKEY_get1_DSA(ctx->pKey);
if(dsaKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_PKEY_get1_DSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_get1_DSA", NULL);
goto done;
}
/* signature size = r + s + 8 bytes, we just need r+s */
dsaSignSize = DSA_size(dsaKey);
if(dsaSignSize < 8) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_size",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "dsaSignSize=%d", (int)dsaSignSize);
+ xmlSecInvalidSizeLessThanError("DSA signatue",
+ dsaSignSize, 8, NULL);
goto done;
}
signHalfSize = (dsaSignSize - 8) / 2;
if(signHalfSize < 4) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "signHalfSize",
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "signHalfSize=%d", (int)signHalfSize);
+ xmlSecInvalidSizeLessThanError("DSA signatue (half size)",
+ signHalfSize, 4, NULL);
goto done;
}
/* check size */
if(signSize != 2 * signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "invalid length %d (%d expected)",
- (int)signSize, (int)(2 * signHalfSize));
+ xmlSecInvalidSizeError("DSA signature", signSize, 2 * signHalfSize,
+ NULL);
goto done;
}
/* create/read signature */
sig = DSA_SIG_new();
if (sig == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_SIG_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_SIG_new", NULL);
goto done;
}
- /* get signature components */
- DSA_SIG_get0(&rr, &ss, sig);
- if((rr == NULL) || (ss == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_SIG_get0",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto done;
- }
-
- rr = BN_bin2bn(signData, signHalfSize, rr);
+ rr = BN_bin2bn(signData, signHalfSize, NULL);
if(rr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bin2bn(sig->r)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bin2bn(sig->r)", NULL);
goto done;
}
- ss = BN_bin2bn(signData + signHalfSize, signHalfSize, ss);
+ ss = BN_bin2bn(signData + signHalfSize, signHalfSize, NULL);
if(ss == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bin2bn(sig->s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bin2bn(sig->s)", NULL);
+ goto done;
+ }
+
+ ret = DSA_SIG_set0(sig, rr, ss);
+ if(ret == 0) {
+ xmlSecOpenSSLError("DSA_SIG_set0", NULL);
goto done;
}
+ rr = NULL;
+ ss = NULL;
+
/* verify signature */
ret = DSA_do_verify(ctx->dgst, ctx->dgstSize, sig, dsaKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_do_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_do_verify", NULL);
goto done;
}
@@ -855,19 +773,10 @@ xmlSecOpenSSLSignatureDsaVerify(xmlSecOpenSSLSignatureCtxPtr ctx, const xmlSecBy
done:
/* cleanup */
- if(sig != NULL) {
- DSA_SIG_free(sig);
- }
- if(dsaKey != NULL) {
- DSA_free(dsaKey);
- }
- if(rr != NULL) {
- BN_free(rr);
- }
- if(ss != NULL) {
- BN_free(ss);
- }
-
+ DSA_SIG_free(sig);
+ DSA_free(dsaKey);
+ BN_clear_free(rr);
+ BN_clear_free(ss);
/* done */
return(res);
}
@@ -1000,30 +909,18 @@ xmlSecOpenSSLSignatureEcdsaSignatureHalfSize(EC_KEY * ecKey) {
group = EC_KEY_get0_group(ecKey);
if(group == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EC_KEY_get0_group",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EC_KEY_get0_group", NULL);
goto done;
}
order = BN_new();
if(order == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_new", NULL);
goto done;
}
if(EC_GROUP_get_order(group, order, NULL) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EC_GROUP_get_order",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EC_GROUP_get_order", NULL);
goto done;
}
@@ -1045,7 +942,7 @@ static int
xmlSecOpenSSLSignatureEcdsaSign(xmlSecOpenSSLSignatureCtxPtr ctx, xmlSecBufferPtr out) {
EC_KEY * ecKey = NULL;
ECDSA_SIG *sig = NULL;
- BIGNUM *rr = NULL, *ss = NULL;
+ const BIGNUM *rr = NULL, *ss = NULL;
xmlSecByte *outData;
xmlSecSize signHalfSize, rSize, sSize;
int res = -1;
@@ -1060,78 +957,51 @@ xmlSecOpenSSLSignatureEcdsaSign(xmlSecOpenSSLSignatureCtxPtr ctx, xmlSecBufferPt
/* get key */
ecKey = EVP_PKEY_get1_EC_KEY(ctx->pKey);
if(ecKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_PKEY_get1_DSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_get1_DSA", NULL);
goto done;
}
/* calculate signature size */
signHalfSize = xmlSecOpenSSLSignatureEcdsaSignatureHalfSize(ecKey);
if(signHalfSize <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLSignatureEcdsaSignatureHalfSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLSignatureEcdsaSignatureHalfSize", NULL);
goto done;
}
/* sign */
sig = ECDSA_do_sign(ctx->dgst, ctx->dgstSize, ecKey);
if(sig == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ECDSA_do_sign",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("ECDSA_do_sign", NULL);
goto done;
}
/* get signature components */
- ECDSA_SIG_get0(&rr, &ss, sig);
+ ECDSA_SIG_get0(sig, &rr, &ss);
if((rr == NULL) || (ss == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ECDSA_SIG_get0",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("ECDSA_SIG_get0", NULL);
goto done;
}
/* check sizes */
rSize = BN_num_bytes(rr);
if(rSize > signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "rSize=%d > %d",
- (int)rSize, (int)signHalfSize);
+ xmlSecInvalidSizeMoreThanError("ECDSA signatue r",
+ rSize, signHalfSize, NULL);
goto done;
}
sSize = BN_num_bytes(ss);
if(sSize > signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "sSize=%d > %d",
- (int)sSize, (int)signHalfSize);
+ xmlSecInvalidSizeMoreThanError("ECDSA signatue s",
+ sSize, signHalfSize, NULL);
goto done;
}
/* allocate buffer */
ret = xmlSecBufferSetSize(out, 2 * signHalfSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", (int)(2 * signHalfSize));
+ xmlSecInternalError2("xmlSecBufferSetSize", NULL,
+ "size=%d", (int)(2 * signHalfSize));
goto done;
}
outData = xmlSecBufferGetData(out);
@@ -1154,12 +1024,6 @@ done:
if(ecKey != NULL) {
EC_KEY_free(ecKey);
}
- if(rr != NULL) {
- BN_free(rr);
- }
- if(ss != NULL) {
- BN_free(ss);
- }
/* done */
return(res);
@@ -1183,85 +1047,58 @@ xmlSecOpenSSLSignatureEcdsaVerify(xmlSecOpenSSLSignatureCtxPtr ctx, const xmlSec
/* get key */
ecKey = EVP_PKEY_get1_EC_KEY(ctx->pKey);
if(ecKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "EVP_PKEY_get1_DSA",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("EVP_PKEY_get1_EC_KEY", NULL);
goto done;
}
/* calculate signature size */
signHalfSize = xmlSecOpenSSLSignatureEcdsaSignatureHalfSize(ecKey);
if(signHalfSize <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLSignatureEcdsaSignatureHalfSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLSignatureEcdsaSignatureHalfSize", NULL);
goto done;
}
- /* check size */
- if(signSize != 2 * signHalfSize) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "invalid length %d (%d expected)",
- (int)signSize, (int)(2 * signHalfSize));
+ /* check size: we expect the r and s to be the same size and match the size of
+ * the key (RFC 6931); however some implementations (e.g. Java) cut leading zeros:
+ * https://github.com/lsh123/xmlsec/issues/228 */
+ if((signSize < 2 * signHalfSize) && (signSize % 2 == 0)) {
+ signHalfSize = signSize / 2;
+ } else if(signSize != 2 * signHalfSize) {
+ xmlSecInvalidSizeError("ECDSA signature", signSize, 2 * signHalfSize,
+ NULL);
goto done;
}
/* create/read signature */
sig = ECDSA_SIG_new();
if (sig == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "DSA_SIG_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- goto done;
- }
-
- /* get signature components */
- ECDSA_SIG_get0(&rr, &ss, sig);
- if((rr == NULL) || (ss == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ECDSA_SIG_get0",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("DSA_SIG_new", NULL);
goto done;
}
- rr = BN_bin2bn(signData, signHalfSize, rr);
+ rr = BN_bin2bn(signData, signHalfSize, NULL);
if(rr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bin2bn(sig->r)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bin2bn(sig->r)", NULL);
goto done;
}
- ss = BN_bin2bn(signData + signHalfSize, signHalfSize, ss);
+ ss = BN_bin2bn(signData + signHalfSize, signHalfSize, NULL);
if(ss == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bin2bn(sig->s)",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bin2bn(sig->s)", NULL);
+ goto done;
+ }
+
+ ret = ECDSA_SIG_set0(sig, rr, ss);
+ if(ret == 0) {
+ xmlSecOpenSSLError("ECDSA_SIG_set0()", NULL);
goto done;
}
+ rr = NULL;
+ ss = NULL;
/* verify signature */
ret = ECDSA_do_verify(ctx->dgst, ctx->dgstSize, sig, ecKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ECDSA_do_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("ECDSA_do_verify", NULL);
goto done;
}
@@ -1274,19 +1111,10 @@ xmlSecOpenSSLSignatureEcdsaVerify(xmlSecOpenSSLSignatureCtxPtr ctx, const xmlSec
done:
/* cleanup */
- if(sig != NULL) {
- ECDSA_SIG_free(sig);
- }
- if(ecKey != NULL) {
- EC_KEY_free(ecKey);
- }
- if(rr != NULL) {
- BN_free(rr);
- }
- if(ss != NULL) {
- BN_free(ss);
- }
-
+ ECDSA_SIG_free(sig);
+ EC_KEY_free(ecKey);
+ BN_clear_free(rr);
+ BN_clear_free(ss);
/* done */
return(res);
}
diff --git a/src/openssl/symkeys.c b/src/openssl/symkeys.c
index 78d29e29..6079ec68 100644
--- a/src/openssl/symkeys.c
+++ b/src/openssl/symkeys.c
@@ -1,14 +1,19 @@
-/**
- *
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
- * DES Algorithm support
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:symkeys
+ * @Short_description: Symmetric keys implementation for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -23,6 +28,7 @@
#include <xmlsec/keyinfo.h>
#include <xmlsec/transforms.h>
#include <xmlsec/errors.h>
+#include <xmlsec/private.h>
#include <xmlsec/openssl/crypto.h>
@@ -132,6 +138,7 @@ xmlSecOpenSSLSymKeyDataGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlS
xmlSecAssert2(xmlSecOpenSSLSymKeyDataCheckId(data), -1);
xmlSecAssert2(sizeBits > 0, -1);
+ UNREFERENCED_PARAMETER(type);
buffer = xmlSecKeyDataBinaryValueGetBuffer(data);
xmlSecAssert2(buffer != NULL, -1);
diff --git a/src/openssl/x509.c b/src/openssl/x509.c
index 891db6b6..0bdb06cc 100644
--- a/src/openssl/x509.c
+++ b/src/openssl/x509.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +7,13 @@
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509
+ * @Short_description: X509 certificates implementation for OpenSSL.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -21,11 +26,6 @@
#include <time.h>
#include <libxml/tree.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/x509_vfy.h>
-#include <openssl/x509v3.h>
-#include <openssl/asn1.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/xmltree.h>
@@ -35,11 +35,37 @@
#include <xmlsec/x509.h>
#include <xmlsec/base64.h>
#include <xmlsec/errors.h>
+#include <xmlsec/private.h>
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
#include <xmlsec/openssl/x509.h>
+/* Windows overwrites X509_NAME and other things that break openssl */
+#include <openssl/evp.h>
+#include <openssl/x509.h>
+#include <openssl/x509_vfy.h>
+#include <openssl/x509v3.h>
+#include <openssl/asn1.h>
+
+#ifdef OPENSSL_IS_BORINGSSL
+#include <openssl/mem.h>
+#endif /* OPENSSL_IS_BORINGSSL */
+
+
+
+#include "openssl_compat.h"
+
+
+/* The ASN1_TIME_check() function was changed from ASN1_TIME * to
+ * const ASN1_TIME * in 1.1.0. To avoid compiler warnings, we use this hack.
+ */
+#if !defined(XMLSEC_OPENSSL_API_110) || defined(OPENSSL_IS_BORINGSSL)
+typedef ASN1_TIME XMLSEC_CONST_ASN1_TIME;
+#else /* !defined(XMLSEC_OPENSSL_API_110) || defined(OPENSSL_IS_BORINGSSL) */
+typedef const ASN1_TIME XMLSEC_CONST_ASN1_TIME;
+#endif /* !defined(XMLSEC_OPENSSL_API_110) || defined(OPENSSL_IS_BORINGSSL) */
+
/*************************************************************************
*
* X509 utility functions
@@ -98,7 +124,7 @@ static void xmlSecOpenSSLX509CertDebugDump (X509* cert,
FILE* output);
static void xmlSecOpenSSLX509CertDebugXmlDump (X509* cert,
FILE* output);
-static int xmlSecOpenSSLX509CertGetTime (ASN1_TIME* t,
+static int xmlSecOpenSSLX509CertGetTime (XMLSEC_CONST_ASN1_TIME * t,
time_t* res);
/*************************************************************************
@@ -350,22 +376,16 @@ xmlSecOpenSSLKeyDataX509AdoptCert(xmlSecKeyDataPtr data, X509* cert) {
if(ctx->certsList == NULL) {
ctx->certsList = sk_X509_new_null();
if(ctx->certsList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "sk_X509_new_null",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_new_null",
+ xmlSecKeyDataGetName(data));
return(-1);
}
}
ret = sk_X509_push(ctx->certsList, cert);
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "sk_X509_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_push",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -391,9 +411,9 @@ xmlSecOpenSSLKeyDataX509GetCert(xmlSecKeyDataPtr data, xmlSecSize pos) {
ctx = xmlSecOpenSSLX509DataGetCtx(data);
xmlSecAssert2(ctx != NULL, NULL);
xmlSecAssert2(ctx->certsList != NULL, NULL);
- xmlSecAssert2((int)pos < sk_X509_num(ctx->certsList), NULL);
+ xmlSecAssert2(pos < (xmlSecSize)sk_X509_num(ctx->certsList), NULL);
- return(sk_X509_value(ctx->certsList, pos));
+ return(sk_X509_value(ctx->certsList, (int)pos));
}
/**
@@ -439,22 +459,16 @@ xmlSecOpenSSLKeyDataX509AdoptCrl(xmlSecKeyDataPtr data, X509_CRL* crl) {
if(ctx->crlsList == NULL) {
ctx->crlsList = sk_X509_CRL_new_null();
if(ctx->crlsList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "sk_X509_CRL_new_null",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_CRL_new_null",
+ xmlSecKeyDataGetName(data));
return(-1);
}
}
ret = sk_X509_CRL_push(ctx->crlsList, crl);
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "sk_X509_CRL_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_CRL_push",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -481,9 +495,9 @@ xmlSecOpenSSLKeyDataX509GetCrl(xmlSecKeyDataPtr data, xmlSecSize pos) {
xmlSecAssert2(ctx != NULL, NULL);
xmlSecAssert2(ctx->crlsList != NULL, NULL);
- xmlSecAssert2((int)pos < sk_X509_CRL_num(ctx->crlsList), NULL);
+ xmlSecAssert2(pos < (xmlSecSize)sk_X509_CRL_num(ctx->crlsList), NULL);
- return(sk_X509_CRL_value(ctx->crlsList, pos));
+ return(sk_X509_CRL_value(ctx->crlsList, (int)pos));
}
/**
@@ -536,31 +550,23 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
for(pos = 0; pos < size; ++pos) {
certSrc = xmlSecOpenSSLKeyDataX509GetCert(src, pos);
if(certSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecOpenSSLKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCert",
+ xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
+ "pos=%d", pos);
return(-1);
}
certDst = X509_dup(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(dst));
X509_free(certDst);
return(-1);
}
@@ -571,31 +577,23 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
for(pos = 0; pos < size; ++pos) {
crlSrc = xmlSecOpenSSLKeyDataX509GetCrl(src, pos);
if(crlSrc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(src)),
- "xmlSecOpenSSLKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCrl",
+ xmlSecKeyDataGetName(src),
+ "pos=%d", pos);
return(-1);
}
crlDst = X509_CRL_dup(crlSrc);
if(crlDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "X509_CRL_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_CRL_dup",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCrl(dst, crlDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecOpenSSLKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(dst));
X509_CRL_free(crlDst);
return(-1);
}
@@ -606,20 +604,14 @@ xmlSecOpenSSLKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
if(certSrc != NULL) {
certDst = X509_dup(certSrc);
if(certDst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(dst));
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptKeyCert(dst, certDst);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
- "xmlSecOpenSSLKeyDataX509AdoptKeyCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptKeyCert",
+ xmlSecKeyDataGetName(dst));
X509_free(certDst);
return(-1);
}
@@ -661,34 +653,23 @@ xmlSecOpenSSLKeyDataX509XmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
data = xmlSecKeyEnsureData(key, id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
ret = xmlSecOpenSSLX509DataNodeRead(data, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509DataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509DataNodeRead",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
- if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
- ret = xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
+ ret = xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
+ return(-1);
}
return(0);
}
@@ -708,13 +689,11 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
xmlSecAssert2(node != NULL, -1);
xmlSecAssert2(keyInfoCtx != NULL, -1);
- content = xmlSecX509DataGetNodeContent (node, 1, keyInfoCtx);
+ content = xmlSecX509DataGetNodeContent (node, keyInfoCtx);
if (content < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecX509DataGetNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "content=%d", content);
+ xmlSecInternalError2("xmlSecX509DataGetNodeContent",
+ xmlSecKeyDataKlassGetName(id),
+ "content=%d", content);
return(-1);
} else if(content == 0) {
/* by default we are writing certificates and crls */
@@ -733,22 +712,18 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
cert = xmlSecOpenSSLKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCert",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
if((content & XMLSEC_X509DATA_CERTIFICATE_NODE) != 0) {
ret = xmlSecOpenSSLX509CertificateNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509CertificateNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLX509CertificateNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -756,11 +731,9 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SUBJECTNAME_NODE) != 0) {
ret = xmlSecOpenSSLX509SubjectNameNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509SubjectNameNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLX509SubjectNameNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -768,11 +741,9 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_ISSUERSERIAL_NODE) != 0) {
ret = xmlSecOpenSSLX509IssuerSerialNodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509IssuerSerialNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLX509IssuerSerialNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -780,11 +751,9 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
if((content & XMLSEC_X509DATA_SKI_NODE) != 0) {
ret = xmlSecOpenSSLX509SKINodeWrite(cert, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509SKINodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLX509SKINodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -796,21 +765,17 @@ xmlSecOpenSSLKeyDataX509XmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
for(pos = 0; pos < size; ++pos) {
crl = xmlSecOpenSSLKeyDataX509GetCrl(data, pos);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataX509GetCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCrl",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
ret = xmlSecOpenSSLX509CRLNodeWrite(crl, node, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLX509CRLNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLX509CRLNodeWrite",
+ xmlSecKeyDataKlassGetName(id),
+ "pos=%d", pos);
return(-1);
}
}
@@ -855,11 +820,9 @@ xmlSecOpenSSLKeyDataX509DebugDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecOpenSSLKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "==== Certificate:\n");
@@ -889,11 +852,9 @@ xmlSecOpenSSLKeyDataX509DebugXmlDump(xmlSecKeyDataPtr data, FILE* output) {
for(pos = 0; pos < size; ++pos) {
cert = xmlSecOpenSSLKeyDataX509GetCert(data, pos);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509GetCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecOpenSSLKeyDataX509GetCert",
+ xmlSecKeyDataGetName(data),
+ "pos=%d", pos);
return;
}
fprintf(output, "<Certificate>\n");
@@ -921,29 +882,47 @@ xmlSecOpenSSLX509DataNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyI
ret = 0;
if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
ret = xmlSecOpenSSLX509CertificateNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecOpenSSLX509CertificateNodeRead",
+ xmlSecKeyDataGetName(data),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
ret = xmlSecOpenSSLX509SubjectNameNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecOpenSSLX509SubjectNameNodeRead",
+ xmlSecKeyDataGetName(data),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
ret = xmlSecOpenSSLX509IssuerSerialNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecOpenSSLX509IssuerSerialNodeRead",
+ xmlSecKeyDataGetName(data),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
ret = xmlSecOpenSSLX509SKINodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecOpenSSLX509SKINodeRead",
+ xmlSecKeyDataGetName(data),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ return(-1);
+ }
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
ret = xmlSecOpenSSLX509CRLNodeRead(data, cur, keyInfoCtx);
+ if(ret < 0) {
+ xmlSecInternalError2("xmlSecOpenSSLX509CRLNodeRead",
+ xmlSecKeyDataGetName(data),
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ return(-1);
+ }
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD) != 0) {
/* laxi schema validation: ignore unknown nodes */
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "read node failed");
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
return(-1);
}
}
@@ -966,11 +945,7 @@ xmlSecOpenSSLX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -978,22 +953,16 @@ xmlSecOpenSSLX509CertificateNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
cert = xmlSecOpenSSLX509CertBase64DerRead(content);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLX509CertBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CertBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
X509_free(cert);
xmlFree(content);
return(-1);
@@ -1015,29 +984,20 @@ xmlSecOpenSSLX509CertificateNodeWrite(X509* cert, xmlNodePtr node, xmlSecKeyInfo
/* set base64 lines size from context */
buf = xmlSecOpenSSLX509CertBase64DerWrite(cert, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509CertBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CertBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509Certificate)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
return(0);
@@ -1058,11 +1018,8 @@ xmlSecOpenSSLX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1072,11 +1029,7 @@ xmlSecOpenSSLX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
xmlFree(subject);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1086,12 +1039,8 @@ xmlSecOpenSSLX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "subject=%s",
- xmlSecErrorsSafeString(subject));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "subject=%s", xmlSecErrorsSafeString(subject));
xmlFree(subject);
return(-1);
}
@@ -1102,23 +1051,16 @@ xmlSecOpenSSLX509SubjectNameNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xml
cert2 = X509_dup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
-
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(data));
xmlFree(subject);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
X509_free(cert2);
xmlFree(subject);
return(-1);
@@ -1132,32 +1074,33 @@ static int
xmlSecOpenSSLX509SubjectNameNodeWrite(X509* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar* buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
buf = xmlSecOpenSSLX509NameWrite(X509_get_subject_name(cert));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameWrite(X509_get_subject_name)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509NameWrite(X509_get_subject_name)", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509SubjectName)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
+
+ /* done */
xmlFree(buf);
return(0);
}
@@ -1179,23 +1122,16 @@ xmlSecOpenSSLX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
cur = xmlSecGetNextElementNode(node->children);
if(cur == NULL) {
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecNodeNotFoundError("xmlSecGetNextElementNode", node, NULL,
+ xmlSecKeyDataGetName(data));
return(-1);
}
return(0);
@@ -1203,56 +1139,32 @@ xmlSecOpenSSLX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
/* the first is required node X509IssuerName */
if(!xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509IssuerName, xmlSecKeyDataGetName(data));
return(-1);
}
issuerName = xmlNodeGetContent(cur);
if(issuerName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
/* next is required node X509SerialNumber */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInvalidNodeError(cur, xmlSecNodeX509SerialNumber, xmlSecKeyDataGetName(data));
xmlFree(issuerName);
return(-1);
}
issuerSerial = xmlNodeGetContent(cur);
if(issuerSerial == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeContentError(cur, xmlSecKeyDataGetName(data), "empty");
xmlFree(issuerName);
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1262,13 +1174,10 @@ xmlSecOpenSSLX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
if(cert == NULL){
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "issuerName=%s;issuerSerial=%s",
- xmlSecErrorsSafeString(issuerName),
- xmlSecErrorsSafeString(issuerSerial));
+ xmlSecOtherError3(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "issuerName=%s;issuerSerial=%s",
+ xmlSecErrorsSafeString(issuerName),
+ xmlSecErrorsSafeString(issuerSerial));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1280,11 +1189,8 @@ xmlSecOpenSSLX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
cert2 = X509_dup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(data));
xmlFree(issuerSerial);
xmlFree(issuerName);
return(-1);
@@ -1292,11 +1198,8 @@ xmlSecOpenSSLX509IssuerSerialNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xm
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
X509_free(cert2);
xmlFree(issuerSerial);
xmlFree(issuerName);
@@ -1314,69 +1217,61 @@ xmlSecOpenSSLX509IssuerSerialNodeWrite(X509* cert, xmlNodePtr node, xmlSecKeyInf
xmlNodePtr issuerNameNode;
xmlNodePtr issuerNumberNode;
xmlChar* buf;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
/* create xml nodes */
- cur = xmlSecAddChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509IssuerSerial)", NULL);
return(-1);
}
- issuerNameNode = xmlSecAddChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ issuerNameNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509IssuerName, xmlSecDSigNs);
if(issuerNameNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509IssuerName)", NULL);
return(-1);
}
- issuerNumberNode = xmlSecAddChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ issuerNumberNode = xmlSecEnsureEmptyChild(cur, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
if(issuerNumberNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509SerialNumber)", NULL);
return(-1);
}
/* write data */
buf = xmlSecOpenSSLX509NameWrite(X509_get_issuer_name(cert));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameWrite(X509_get_issuer_name)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509NameWrite(X509_get_issuer_name)", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNameNode)", NULL);
+ xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNameNode, buf);
xmlFree(buf);
buf = xmlSecOpenSSLASN1IntegerWrite(X509_get_serialNumber(cert));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLASN1IntegerWrite(X509_get_serialNumber)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLASN1IntegerWrite(X509_get_serialNumber)", NULL);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(issuerNumberNode, buf);
- xmlFree(buf);
+ ret = xmlSecNodeEncodeAndSetContent(issuerNumberNode, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent(issuerNumberNode)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1396,11 +1291,8 @@ xmlSecOpenSSLX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1410,12 +1302,7 @@ xmlSecOpenSSLX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
xmlFree(ski);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1426,12 +1313,8 @@ xmlSecOpenSSLX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
xmlFree(ski);
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data),
+ "ski=%s", xmlSecErrorsSafeString(ski));
return(-1);
}
return(0);
@@ -1439,22 +1322,16 @@ xmlSecOpenSSLX509SKINodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
cert2 = X509_dup(cert);
if(cert2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(data));
xmlFree(ski);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert2);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataGetName(data));
X509_free(cert2);
xmlFree(ski);
return(-1);
@@ -1468,34 +1345,34 @@ static int
xmlSecOpenSSLX509SKINodeWrite(X509* cert, xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx ATTRIBUTE_UNUSED) {
xmlChar *buf = NULL;
xmlNodePtr cur = NULL;
+ int ret;
xmlSecAssert2(cert != NULL, -1);
xmlSecAssert2(node != NULL, -1);
+ UNREFERENCED_PARAMETER(keyInfoCtx);
buf = xmlSecOpenSSLX509SKIWrite(cert);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509SKIWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509SKIWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509SKI)", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(cur, buf);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
xmlFree(buf);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(cur, buf);
- xmlFree(buf);
+ /* done */
+ xmlFree(buf);
return(0);
}
@@ -1515,11 +1392,7 @@ xmlSecOpenSSLX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
xmlFree(content);
}
if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, xmlSecKeyDataGetName(data), "empty");
return(-1);
}
return(0);
@@ -1527,22 +1400,16 @@ xmlSecOpenSSLX509CRLNodeRead(xmlSecKeyDataPtr data, xmlNodePtr node, xmlSecKeyIn
crl = xmlSecOpenSSLX509CrlBase64DerRead(content);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLX509CrlBase64DerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CrlBase64DerRead",
+ xmlSecKeyDataGetName(data));
xmlFree(content);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCrl(data, crl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLKeyDataX509AdoptCrl",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCrl",
+ xmlSecKeyDataGetName(data));
X509_CRL_free(crl);
xmlFree(content);
return(-1);
@@ -1564,28 +1431,19 @@ xmlSecOpenSSLX509CRLNodeWrite(X509_CRL* crl, xmlNodePtr node, xmlSecKeyInfoCtxPt
/* set base64 lines size from context */
buf = xmlSecOpenSSLX509CrlBase64DerWrite(crl, keyInfoCtx->base64LineSize);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509CrlBase64DerWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CrlBase64DerWrite", NULL);
return(-1);
}
- cur = xmlSecAddChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
+ cur = xmlSecEnsureEmptyChild(node, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "new_node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+ xmlSecInternalError("xmlSecEnsureEmptyChild(xmlSecNodeX509CRL)", NULL);
xmlFree(buf);
return(-1);
}
/* todo: add \n around base64 data - from context */
/* todo: add errors check */
- xmlNodeSetContent(cur, xmlSecStringCR);
+ xmlNodeSetContent(cur, xmlSecGetDefaultLineFeed());
xmlNodeSetContent(cur, buf);
xmlFree(buf);
@@ -1609,11 +1467,8 @@ xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
x509Store = xmlSecKeysMngrGetDataStore(keyInfoCtx->keysMngr, xmlSecOpenSSLX509StoreId);
if(x509Store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeysMngrGetDataStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetDataStore",
+ xmlSecKeyDataGetName(data));
return(-1);
}
@@ -1626,74 +1481,52 @@ xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
ctx->keyCert = X509_dup(cert);
if(ctx->keyCert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_dup",
+ xmlSecKeyDataGetName(data));
return(-1);
}
keyValue = xmlSecOpenSSLX509CertGetKey(ctx->keyCert);
if(keyValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLX509CertGetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CertGetKey",
+ xmlSecKeyDataGetName(data));
return(-1);
}
/* verify that the key matches our expectations */
if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeyReqMatchKeyValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyReqMatchKeyValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
ret = xmlSecKeySetValue(key, keyValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecKeySetValue",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeySetValue",
+ xmlSecKeyDataGetName(data));
xmlSecKeyDataDestroy(keyValue);
return(-1);
}
- if((X509_get_notBefore(ctx->keyCert) != NULL) && (X509_get_notAfter(ctx->keyCert) != NULL)) {
- ret = xmlSecOpenSSLX509CertGetTime(X509_get_notBefore(ctx->keyCert), &(key->notValidBefore));
+ if((X509_get0_notBefore(ctx->keyCert) != NULL) && (X509_get0_notAfter(ctx->keyCert) != NULL)) {
+ ret = xmlSecOpenSSLX509CertGetTime(X509_get0_notBefore(ctx->keyCert), &(key->notValidBefore));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidBefore");
+ xmlSecInternalError("xmlSecOpenSSLX509CertGetTime(notAfter)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
- ret = xmlSecOpenSSLX509CertGetTime(X509_get_notAfter(ctx->keyCert), &(key->notValidAfter));
+ ret = xmlSecOpenSSLX509CertGetTime(X509_get0_notAfter(ctx->keyCert), &(key->notValidAfter));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- "xmlSecOpenSSLX509CertGetTime",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "notValidAfter");
+ xmlSecInternalError("xmlSecOpenSSLX509CertGetTime(notBefore)",
+ xmlSecKeyDataGetName(data));
return(-1);
}
} else {
key->notValidBefore = key->notValidAfter = 0;
}
} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_NOT_FOUND, xmlSecKeyDataGetName(data), NULL);
return(-1);
}
}
@@ -1703,9 +1536,28 @@ xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
#ifdef HAVE_TIMEGM
extern time_t timegm (struct tm *tm);
#else /* HAVE_TIMEGM */
+
#ifdef WIN32
+
+#ifdef _MSC_VER
+static time_t
+my_timegm(struct tm *t) {
+ long seconds = 0;
+ if(_get_timezone(&seconds) != 0) {
+ return(-1);
+ }
+ return (mktime(t) - seconds);
+}
+#define timegm(tm) my_timegm(tm)
+
+#else /* _MSC_VER */
+
#define timegm(tm) (mktime(tm) - _timezone)
+
+#endif /* _MSC_VER */
+
#else /* WIN32 */
+
/* Absolutely not the best way but it's the only ANSI compatible way I know.
* If you system has a native struct tm --> GMT time_t conversion function
* (like timegm) use it instead.
@@ -1720,7 +1572,7 @@ my_timegm(struct tm *t) {
t->tm_hour--;
tl = mktime (t);
if (tl == -1) {
- return -1;
+ return (-1);
}
tl += 3600;
}
@@ -1731,7 +1583,7 @@ my_timegm(struct tm *t) {
tg->tm_hour--;
tb = mktime (tg);
if (tb == -1) {
- return -1;
+ return (-1);
}
tb += 3600;
}
@@ -1739,11 +1591,12 @@ my_timegm(struct tm *t) {
}
#define timegm(tm) my_timegm(tm)
+
#endif /* WIN32 */
#endif /* HAVE_TIMEGM */
static int
-xmlSecOpenSSLX509CertGetTime(ASN1_TIME* t, time_t* res) {
+xmlSecOpenSSLX509CertGetTime(XMLSEC_CONST_ASN1_TIME * t, time_t* res) {
struct tm tm;
int offset;
@@ -1752,11 +1605,7 @@ xmlSecOpenSSLX509CertGetTime(ASN1_TIME* t, time_t* res) {
(*res) = 0;
if(!ASN1_TIME_check(t)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ASN1_TIME_check",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("ASN1_TIME_check", NULL);
return(-1);
}
@@ -1766,7 +1615,6 @@ xmlSecOpenSSLX509CertGetTime(ASN1_TIME* t, time_t* res) {
if(t->type == V_ASN1_UTCTIME) {
xmlSecAssert2(t->length > 12, -1);
-
/* this code is copied from OpenSSL asn1/a_utctm.c file */
tm.tm_year = g2(t->data);
if(tm.tm_year < 50) {
@@ -1831,21 +1679,13 @@ xmlSecOpenSSLX509CertGetKey(X509* cert) {
pKey = X509_get_pubkey(cert);
if(pKey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_get_pubkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_get_pubkey", NULL);
return(NULL);
}
data = xmlSecOpenSSLEvpKeyAdopt(pKey);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLEvpKeyAdopt",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLEvpKeyAdopt", NULL);
EVP_PKEY_free(pKey);
return(NULL);
}
@@ -1862,11 +1702,7 @@ xmlSecOpenSSLX509CertBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1884,32 +1720,22 @@ xmlSecOpenSSLX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
mem = BIO_new(BIO_s_mem());
if(mem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "BIO_s_mem");
+ xmlSecOpenSSLError("BIO_new", NULL);
return(NULL);
}
ret = BIO_write(mem, buf, size);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_write",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", size);
+ xmlSecOpenSSLError2("BIO_write", NULL,
+ "size=%lu", (unsigned long)size);
BIO_free_all(mem);
return(NULL);
}
cert = d2i_X509_bio(mem, NULL);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_X509_bio",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError2("d2i_X509_bio", NULL,
+ "size=%lu", (unsigned long)size);
BIO_free_all(mem);
return(NULL);
}
@@ -1929,11 +1755,7 @@ xmlSecOpenSSLX509CertBase64DerWrite(X509* cert, int base64LineWrap) {
mem = BIO_new(BIO_s_mem());
if(mem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "BIO_s_mem");
+ xmlSecOpenSSLError("BIO_new", NULL);
return(NULL);
}
@@ -1943,22 +1765,14 @@ xmlSecOpenSSLX509CertBase64DerWrite(X509* cert, int base64LineWrap) {
size = BIO_get_mem_data(mem, &p);
if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_get_mem_data",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BIO_get_mem_data", NULL);
BIO_free_all(mem);
return(NULL);
}
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
BIO_free_all(mem);
return(NULL);
}
@@ -1976,11 +1790,7 @@ xmlSecOpenSSLX509CrlBase64DerRead(xmlChar* buf) {
/* usual trick with base64 decoding "in-place" */
ret = xmlSecBase64Decode(buf, (xmlSecByte*)buf, xmlStrlen(buf));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Decode", NULL);
return(NULL);
}
@@ -1998,32 +1808,21 @@ xmlSecOpenSSLX509CrlDerRead(xmlSecByte* buf, xmlSecSize size) {
mem = BIO_new(BIO_s_mem());
if(mem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "BIO_s_mem");
+ xmlSecOpenSSLError("BIO_new", NULL);
return(NULL);
}
ret = BIO_write(mem, buf, size);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_write",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "size=%d", size);
+ xmlSecOpenSSLError2("BIO_write", NULL,
+ "size=%lu", (unsigned long)size);
BIO_free_all(mem);
return(NULL);
}
crl = d2i_X509_CRL_bio(mem, NULL);
if(crl == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "d2i_X509_CRL_bio",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("d2i_X509_CRL_bio", NULL);
BIO_free_all(mem);
return(NULL);
}
@@ -2043,11 +1842,7 @@ xmlSecOpenSSLX509CrlBase64DerWrite(X509_CRL* crl, int base64LineWrap) {
mem = BIO_new(BIO_s_mem());
if(mem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "BIO_s_mem");
+ xmlSecOpenSSLError("BIO_new", NULL);
return(NULL);
}
@@ -2057,22 +1852,14 @@ xmlSecOpenSSLX509CrlBase64DerWrite(X509_CRL* crl, int base64LineWrap) {
size = BIO_get_mem_data(mem, &p);
if((size <= 0) || (p == NULL)){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_get_mem_data",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BIO_get_mem_data", NULL);
BIO_free_all(mem);
return(NULL);
}
res = xmlSecBase64Encode(p, size, base64LineWrap);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
BIO_free_all(mem);
return(NULL);
}
@@ -2091,20 +1878,12 @@ xmlSecOpenSSLX509NameWrite(X509_NAME* nm) {
mem = BIO_new(BIO_s_mem());
if(mem == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BIO_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "BIO_s_mem");
+ xmlSecOpenSSLError("BIO_new", NULL);
return(NULL);
}
if (X509_NAME_print_ex(mem, nm, 0, XN_FLAG_RFC2253) <=0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_NAME_print_ex",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_NAME_print_ex", NULL);
BIO_free_all(mem);
return(NULL);
}
@@ -2112,13 +1891,9 @@ xmlSecOpenSSLX509NameWrite(X509_NAME* nm) {
(void)BIO_flush(mem); /* should call flush ? */
size = BIO_pending(mem);
- res = xmlMalloc(size + 1);
+ res = (xmlChar *)xmlMalloc(size + 1);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecMallocError(size + 1, NULL);
BIO_free_all(mem);
return(NULL);
}
@@ -2140,21 +1915,13 @@ xmlSecOpenSSLASN1IntegerWrite(ASN1_INTEGER *asni) {
bn = ASN1_INTEGER_to_BN(asni, NULL);
if(bn == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ASN1_INTEGER_to_BN",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("ASN1_INTEGER_to_BN", NULL);
return(NULL);
}
p = BN_bn2dec(bn);
if (p == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_bn2dec",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_bn2dec", NULL);
BN_free(bn);
return(NULL);
}
@@ -2167,11 +1934,7 @@ xmlSecOpenSSLASN1IntegerWrite(ASN1_INTEGER *asni) {
*/
res = xmlCharStrdup(p);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlCharStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(BAD_CAST p, NULL);
OPENSSL_free(p);
return(NULL);
}
@@ -2191,42 +1954,26 @@ xmlSecOpenSSLX509SKIWrite(X509* cert) {
index = X509_get_ext_by_NID(cert, NID_subject_key_identifier, -1);
if (index < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "Certificate without SubjectKeyIdentifier extension",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_get_ext_by_NID(): Certificate without SubjectKeyIdentifier extension", NULL);
return(NULL);
}
ext = X509_get_ext(cert, index);
if (ext == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_get_ext",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_get_ext", NULL);
return(NULL);
}
- keyId = X509V3_EXT_d2i(ext);
+ keyId = (ASN1_OCTET_STRING *)X509V3_EXT_d2i(ext);
if (keyId == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509V3_EXT_d2i",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509V3_EXT_d2i", NULL);
ASN1_OCTET_STRING_free(keyId);
return(NULL);
}
- res = xmlSecBase64Encode(ASN1_STRING_data(keyId), ASN1_STRING_length(keyId), 0);
+ res = xmlSecBase64Encode(ASN1_STRING_get0_data(keyId), ASN1_STRING_length(keyId), 0);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBase64Encode", NULL);
ASN1_OCTET_STRING_free(keyId);
return(NULL);
}
@@ -2367,43 +2114,30 @@ xmlSecOpenSSLKeyDataRawX509CertBinRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
cert = xmlSecOpenSSLX509CertDerRead(buf, bufSize);
if(cert == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509CertDerRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509CertDerRead", NULL);
return(-1);
}
data = xmlSecKeyEnsureData(key, xmlSecOpenSSLKeyDataX509Id);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecKeyEnsureData",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyEnsureData",
+ xmlSecKeyDataKlassGetName(id));
X509_free(cert);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509AdoptCert(data, cert);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataX509AdoptCert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509AdoptCert",
+ xmlSecKeyDataKlassGetName(id));
X509_free(cert);
return(-1);
}
ret = xmlSecOpenSSLKeyDataX509VerifyAndExtractKey(data, key, keyInfoCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
- "xmlSecOpenSSLKeyDataX509VerifyAndExtractKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLKeyDataX509VerifyAndExtractKey",
+ xmlSecKeyDataKlassGetName(id));
return(-1);
}
return(0);
diff --git a/src/openssl/x509vfy.c b/src/openssl/x509vfy.c
index f828afb2..2e54f136 100644
--- a/src/openssl/x509vfy.c
+++ b/src/openssl/x509vfy.c
@@ -1,7 +1,5 @@
-/**
- * XMLSec library
- *
- * X509 support
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
*
*
* This is free software; see Copyright file in the source
@@ -9,6 +7,13 @@
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509vfy
+ * @Short_description: X509 certificates verification support functions for OpenSSL.
+ * @Stability: Private
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -20,10 +25,6 @@
#include <errno.h>
#include <libxml/tree.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/x509_vfy.h>
-#include <openssl/x509v3.h>
#include <xmlsec/xmlsec.h>
#include <xmlsec/xmltree.h>
@@ -36,11 +37,18 @@
#include <xmlsec/openssl/crypto.h>
#include <xmlsec/openssl/evp.h>
#include <xmlsec/openssl/x509.h>
+#include "openssl_compat.h"
-/* new API from OpenSSL 1.1.0 */
-#if !defined(XMLSEC_OPENSSL_110)
-#define X509_REVOKED_get0_serialNumber(x) ((x)->serialNumber)
-#endif /* !defined(XMLSEC_OPENSSL_110) */
+#include <openssl/evp.h>
+#include <openssl/x509.h>
+#include <openssl/x509_vfy.h>
+#include <openssl/x509v3.h>
+
+#ifdef OPENSSL_IS_BORINGSSL
+typedef size_t x509_size_t;
+#else /* OPENSSL_IS_BORINGSSL */
+typedef int x509_size_t;
+#endif /* OPENSSL_IS_BORINGSSL */
/**************************************************************************
*
@@ -181,15 +189,22 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
X509 * res = NULL;
X509 * cert;
X509 * err_cert = NULL;
- char buf[256];
+ X509_STORE_CTX *xsc;
int err = 0;
- int i;
+ x509_size_t i;
int ret;
xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecOpenSSLX509StoreId), NULL);
xmlSecAssert2(certs != NULL, NULL);
xmlSecAssert2(keyInfoCtx != NULL, NULL);
+ xsc = X509_STORE_CTX_new();
+ if(xsc == NULL) {
+ xmlSecOpenSSLError("X509_STORE_CTX_new",
+ xmlSecKeyDataStoreGetName(store));
+ goto done;
+ }
+
ctx = xmlSecOpenSSLX509StoreGetCtx(store);
xmlSecAssert2(ctx != NULL, NULL);
xmlSecAssert2(ctx->xst != NULL, NULL);
@@ -197,11 +212,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
/* dup certs */
certs2 = sk_X509_dup(certs);
if(certs2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_dup",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
@@ -210,11 +222,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
for(i = 0; i < sk_X509_num(ctx->untrusted); ++i) {
ret = sk_X509_push(certs2, sk_X509_value(ctx->untrusted, i));
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_push",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -224,11 +233,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
if(crls != NULL) {
crls2 = sk_X509_CRL_dup(crls);
if(crls2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_CRL_dup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_CRL_dup",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
@@ -239,11 +245,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
} else if(ret == 0) {
(void)sk_X509_CRL_delete(crls2, i);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecOpenSSLX509VerifyCRL",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509VerifyCRL",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -259,11 +262,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
(void)sk_X509_delete(certs2, i);
continue;
} else if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecOpenSSLX509VerifyCertAgainstCrls",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509VerifyCertAgainstCrls",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -274,11 +274,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
(void)sk_X509_delete(certs2, i);
continue;
} else if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "xmlSecOpenSSLX509VerifyCertAgainstCrls",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509VerifyCertAgainstCrls",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
}
@@ -289,18 +286,16 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
for(i = 0; i < sk_X509_num(certs2); ++i) {
cert = sk_X509_value(certs2, i);
if(xmlSecOpenSSLX509FindNextChainCert(certs2, cert) == NULL) {
- X509_STORE_CTX xsc;
-
- if(!X509_STORE_CTX_init(&xsc, ctx->xst, cert, certs2)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_CTX_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+
+ ret = X509_STORE_CTX_init(xsc, ctx->xst, cert, certs2);
+ if(ret != 1) {
+ xmlSecOpenSSLError("X509_STORE_CTX_init",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
+
if(keyInfoCtx->certsVerificationTime > 0) {
- X509_STORE_CTX_set_time(&xsc, 0, keyInfoCtx->certsVerificationTime);
+ X509_STORE_CTX_set_time(xsc, 0, keyInfoCtx->certsVerificationTime);
}
{
@@ -309,11 +304,8 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
vpm = X509_VERIFY_PARAM_new();
if(vpm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_VERIFY_PARAM_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_VERIFY_PARAM_new",
+ xmlSecKeyDataStoreGetName(store));
goto done;
}
vpm_flags = X509_VERIFY_PARAM_get_flags(vpm);
@@ -324,54 +316,41 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
X509_VERIFY_PARAM_set_time(vpm, keyInfoCtx->certsVerificationTime);
}
- X509_VERIFY_PARAM_set_depth(vpm, 9);
+ X509_VERIFY_PARAM_set_depth(vpm, keyInfoCtx->certsVerificationDepth);
X509_VERIFY_PARAM_set_flags(vpm, vpm_flags);
- X509_STORE_CTX_set0_param(&xsc, vpm);
+ X509_STORE_CTX_set0_param(xsc, vpm);
}
- ret = X509_verify_cert(&xsc);
- err_cert = X509_STORE_CTX_get_current_cert(&xsc);
- err = X509_STORE_CTX_get_error(&xsc);
-
- X509_STORE_CTX_cleanup (&xsc);
- if(ret != 1 && keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_ALLOW_BROKEN_CHAIN){
+ if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS) == 0) {
+ ret = X509_verify_cert(xsc);
+ } else {
ret = 1;
- keyInfoCtx->flags2 |= XMLSEC_KEYINFO_ERROR_FLAGS_BROKEN_CHAIN;
}
+ err_cert = X509_STORE_CTX_get_current_cert(xsc);
+ err = X509_STORE_CTX_get_error(xsc);
+
+ X509_STORE_CTX_cleanup (xsc);
if(ret == 1) {
res = cert;
goto done;
} else if(ret < 0) {
- const char* err_msg;
-
- buf[0] = '\0';
- X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof buf);
- err_msg = X509_verify_cert_error_string(err);
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_verify_cert",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "subj=%s;err=%d;msg=%s",
- xmlSecErrorsSafeString(buf),
- err,
- xmlSecErrorsSafeString(err_msg));
+ /* real error */
+ xmlSecOpenSSLError("X509_verify_cert", xmlSecKeyDataStoreGetName(store));
goto done;
} else if(ret == 0) {
const char* err_msg;
+ char subject[256], issuer[256];
- buf[0] = '\0';
- X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof buf);
+ X509_NAME_oneline(X509_get_subject_name(err_cert), subject, sizeof(subject));
+ X509_NAME_oneline(X509_get_issuer_name(err_cert), issuer, sizeof(issuer));
err_msg = X509_verify_cert_error_string(err);
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_verify_cert",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "subj=%s;err=%d;msg=%s",
- xmlSecErrorsSafeString(buf),
- err,
- xmlSecErrorsSafeString(err_msg));
+
+ xmlSecOtherError5(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "X509_verify_cert: subject=%s; issuer=%s; err=%d; msg=%s",
+ subject, issuer, err, xmlSecErrorsSafeString(err_msg));
}
}
}
@@ -379,45 +358,39 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
/* if we came here then we found nothing. do we have any error? */
if((err != 0) && (err_cert != NULL)) {
const char* err_msg;
+ char subject[256], issuer[256];
+ X509_NAME_oneline(X509_get_subject_name(err_cert), subject, sizeof(subject));
+ X509_NAME_oneline(X509_get_issuer_name(err_cert), issuer, sizeof(issuer));
err_msg = X509_verify_cert_error_string(err);
+
switch (err) {
case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
- X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof buf);
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_ISSUER_FAILED,
- "err=%d;msg=%s;issuer=%s",
- err,
- xmlSecErrorsSafeString(err_msg),
- xmlSecErrorsSafeString(buf));
+ xmlSecOtherError5(XMLSEC_ERRORS_R_CERT_ISSUER_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s; issuer=%s; err=%d; msg=%s",
+ subject, issuer, err, xmlSecErrorsSafeString(err_msg));
break;
case X509_V_ERR_CERT_NOT_YET_VALID:
case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_NOT_YET_VALID,
- "err=%d;msg=%s", err,
- xmlSecErrorsSafeString(err_msg));
+ xmlSecOtherError5(XMLSEC_ERRORS_R_CERT_NOT_YET_VALID,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s; issuer=%s; err=%d; msg=%s",
+ subject, issuer, err, xmlSecErrorsSafeString(err_msg));
break;
case X509_V_ERR_CERT_HAS_EXPIRED:
case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
- "err=%d;msg=%s", err,
- xmlSecErrorsSafeString(err_msg));
+ xmlSecOtherError5(XMLSEC_ERRORS_R_CERT_HAS_EXPIRED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s; issuer=%s; err=%d; msg=%s",
+ subject, issuer, err, xmlSecErrorsSafeString(err_msg));
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- NULL,
- XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
- "err=%d;msg=%s", err,
- xmlSecErrorsSafeString(err_msg));
+ xmlSecOtherError5(XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
+ xmlSecKeyDataStoreGetName(store),
+ "subject=%s; issuer=%s; err=%d; msg=%s",
+ subject, issuer, err, xmlSecErrorsSafeString(err_msg));
+ break;
}
}
@@ -428,6 +401,9 @@ done:
if(crls2 != NULL) {
sk_X509_CRL_free(crls2);
}
+ if(xsc != NULL) {
+ X509_STORE_CTX_free(xsc);
+ }
return(res);
}
@@ -457,11 +433,8 @@ xmlSecOpenSSLX509StoreAdoptCert(xmlSecKeyDataStorePtr store, X509* cert, xmlSecK
ret = X509_STORE_add_cert(ctx->xst, cert);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_add_cert",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_add_cert",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
/* add cert increments the reference */
@@ -471,11 +444,8 @@ xmlSecOpenSSLX509StoreAdoptCert(xmlSecKeyDataStorePtr store, X509* cert, xmlSecK
ret = sk_X509_push(ctx->untrusted, cert);
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_push",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
}
@@ -505,11 +475,8 @@ xmlSecOpenSSLX509StoreAdoptCrl(xmlSecKeyDataStorePtr store, X509_CRL* crl) {
ret = sk_X509_CRL_push(ctx->crls, crl);
if(ret < 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_CRL_push",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_CRL_push",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
@@ -540,21 +507,15 @@ xmlSecOpenSSLX509StoreAddCertsPath(xmlSecKeyDataStorePtr store, const char *path
lookup = X509_STORE_add_lookup(ctx->xst, X509_LOOKUP_hash_dir());
if(lookup == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_add_lookup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_add_lookup",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
if(!X509_LOOKUP_add_dir(lookup, path, X509_FILETYPE_PEM)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_LOOKUP_add_dir",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "path='%s'",
- xmlSecErrorsSafeString(path)
- );
+ xmlSecOpenSSLError2("X509_LOOKUP_add_dir",
+ xmlSecKeyDataStoreGetName(store),
+ "path='%s'",
+ xmlSecErrorsSafeString(path));
return(-1);
}
return(0);
@@ -563,7 +524,7 @@ xmlSecOpenSSLX509StoreAddCertsPath(xmlSecKeyDataStorePtr store, const char *path
/**
* xmlSecOpenSSLX509StoreAddCertsFile:
* @store: the pointer to OpenSSL x509 store.
- * @file: the certs file.
+ * @filename: the certs file.
*
* Adds all certs in @file to the list of trusted certs
* in @store. It is possible for @file to contain multiple certs.
@@ -571,12 +532,12 @@ xmlSecOpenSSLX509StoreAddCertsPath(xmlSecKeyDataStorePtr store, const char *path
* Returns: 0 on success or a negative value otherwise.
*/
int
-xmlSecOpenSSLX509StoreAddCertsFile(xmlSecKeyDataStorePtr store, const char *file) {
+xmlSecOpenSSLX509StoreAddCertsFile(xmlSecKeyDataStorePtr store, const char *filename) {
xmlSecOpenSSLX509StoreCtxPtr ctx;
X509_LOOKUP *lookup = NULL;
xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecOpenSSLX509StoreId), -1);
- xmlSecAssert2(file != NULL, -1);
+ xmlSecAssert2(filename != NULL, -1);
ctx = xmlSecOpenSSLX509StoreGetCtx(store);
xmlSecAssert2(ctx != NULL, -1);
@@ -584,21 +545,15 @@ xmlSecOpenSSLX509StoreAddCertsFile(xmlSecKeyDataStorePtr store, const char *file
lookup = X509_STORE_add_lookup(ctx->xst, X509_LOOKUP_file());
if(lookup == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_add_lookup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_add_lookup",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
- if(!X509_LOOKUP_load_file(lookup, file, X509_FILETYPE_PEM)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_LOOKUP_load_file",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "file='%s'",
- xmlSecErrorsSafeString(file)
- );
+ if(!X509_LOOKUP_load_file(lookup, filename, X509_FILETYPE_PEM)) {
+ xmlSecOpenSSLError2("X509_LOOKUP_load_file",
+ xmlSecKeyDataStoreGetName(store),
+ "filename='%s'",
+ xmlSecErrorsSafeString(filename));
return(-1);
}
return(0);
@@ -619,85 +574,60 @@ xmlSecOpenSSLX509StoreInitialize(xmlSecKeyDataStorePtr store) {
ctx->xst = X509_STORE_new();
if(ctx->xst == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_new",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
if(!X509_STORE_set_default_paths(ctx->xst)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_set_default_paths",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_set_default_paths",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
lookup = X509_STORE_add_lookup(ctx->xst, X509_LOOKUP_hash_dir());
if(lookup == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_STORE_add_lookup",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_STORE_add_lookup",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
path = xmlSecOpenSSLGetDefaultTrustedCertsFolder();
if(path != NULL) {
if(!X509_LOOKUP_add_dir(lookup, (char*)path, X509_FILETYPE_PEM)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_LOOKUP_add_dir",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- "path='%s'",
- xmlSecErrorsSafeString(path)
- );
+ xmlSecOpenSSLError2("X509_LOOKUP_add_dir",
+ xmlSecKeyDataStoreGetName(store),
+ "path='%s'",
+ xmlSecErrorsSafeString(path));
return(-1);
}
} else {
if(!X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_LOOKUP_add_dir",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE
- );
+ xmlSecOpenSSLError("X509_LOOKUP_add_dir",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
}
ctx->untrusted = sk_X509_new_null();
if(ctx->untrusted == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_new_null",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_new_null",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
ctx->crls = sk_X509_CRL_new_null();
if(ctx->crls == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "sk_X509_CRL_new_null",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_CRL_new_null",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
ctx->vpm = X509_VERIFY_PARAM_new();
if(ctx->vpm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
- "X509_VERIFY_PARAM_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_VERIFY_PARAM_new",
+ xmlSecKeyDataStoreGetName(store));
return(-1);
}
X509_VERIFY_PARAM_set_depth(ctx->vpm, 9); /* the default cert verification path in openssl */
@@ -740,54 +670,54 @@ xmlSecOpenSSLX509StoreFinalize(xmlSecKeyDataStorePtr store) {
*****************************************************************************/
static int
xmlSecOpenSSLX509VerifyCRL(X509_STORE* xst, X509_CRL *crl ) {
- X509_STORE_CTX xsc;
- X509_OBJECT xobj;
- EVP_PKEY *pkey;
+ X509_STORE_CTX *xsc = NULL;
+ X509_OBJECT *xobj = NULL;
+ EVP_PKEY *pkey = NULL;
int ret;
xmlSecAssert2(xst != NULL, -1);
xmlSecAssert2(crl != NULL, -1);
- ret = X509_STORE_CTX_init(&xsc, xst, NULL, NULL);
- if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_STORE_CTX_init",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
+ xsc = X509_STORE_CTX_new();
+ if(xsc == NULL) {
+ xmlSecOpenSSLError("X509_STORE_CTX_new", NULL);
+ goto err;
}
- ret = X509_STORE_get_by_subject(&xsc, X509_LU_X509,
- X509_CRL_get_issuer(crl), &xobj);
+ xobj = (X509_OBJECT *)X509_OBJECT_new();
+ if(xobj == NULL) {
+ xmlSecOpenSSLError("X509_OBJECT_new", NULL);
+ goto err;
+ }
+
+ ret = X509_STORE_CTX_init(xsc, xst, NULL, NULL);
+ if(ret != 1) {
+ xmlSecOpenSSLError("X509_STORE_CTX_init", NULL);
+ goto err;
+ }
+ ret = X509_STORE_CTX_get_by_subject(xsc, X509_LU_X509,
+ X509_CRL_get_issuer(crl), xobj);
if(ret <= 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_STORE_get_by_subject",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
+ xmlSecOpenSSLError("X509_STORE_CTX_get_by_subject", NULL);
+ goto err;
}
- pkey = X509_get_pubkey(xobj.data.x509);
- X509_OBJECT_free_contents(&xobj);
+ pkey = X509_get_pubkey(X509_OBJECT_get0_X509(xobj));
if(pkey == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_get_pubkey",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
+ xmlSecOpenSSLError("X509_get_pubkey", NULL);
+ goto err;
}
ret = X509_CRL_verify(crl, pkey);
EVP_PKEY_free(pkey);
if(ret != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_CRL_verify",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_CRL_verify", NULL);
}
- X509_STORE_CTX_cleanup (&xsc);
+ X509_STORE_CTX_free(xsc);
+ X509_OBJECT_free(xobj);
return((ret == 1) ? 1 : 0);
+
+err:
+ X509_STORE_CTX_free(xsc);
+ X509_OBJECT_free(xobj);
+ return(-1);
}
static X509*
@@ -795,7 +725,7 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
xmlChar *issuerName, xmlChar *issuerSerial,
xmlChar *ski) {
X509 *cert = NULL;
- int i;
+ x509_size_t i;
xmlSecAssert2(certs != NULL, NULL);
@@ -806,12 +736,8 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
nm = xmlSecOpenSSLX509NameRead(subjectName, xmlStrlen(subjectName));
if(nm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "subject=%s",
- xmlSecErrorsSafeString(subjectName));
+ xmlSecInternalError2("xmlSecOpenSSLX509NameRead", NULL,
+ "subject=%s", xmlSecErrorsSafeString(subjectName));
return(NULL);
}
@@ -832,31 +758,19 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
nm = xmlSecOpenSSLX509NameRead(issuerName, xmlStrlen(issuerName));
if(nm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "issuer=%s",
- xmlSecErrorsSafeString(issuerName));
+ xmlSecInternalError2("xmlSecOpenSSLX509NameRead", NULL,
+ "issuer=%s", xmlSecErrorsSafeString(issuerName));
return(NULL);
}
bn = BN_new();
if(bn == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_new", NULL);
X509_NAME_free(nm);
return(NULL);
}
if(BN_dec2bn(&bn, (char*)issuerSerial) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_dec2bn",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_dec2bn", NULL);
BN_free(bn);
X509_NAME_free(nm);
return(NULL);
@@ -864,11 +778,7 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
serial = BN_to_ASN1_INTEGER(bn, NULL);
if(serial == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "BN_to_ASN1_INTEGER",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("BN_to_ASN1_INTEGER", NULL);
BN_free(bn);
X509_NAME_free(nm);
return(NULL);
@@ -900,26 +810,29 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
/* our usual trick with base64 decode */
len = xmlSecBase64Decode(ski, (xmlSecByte*)ski, xmlStrlen(ski));
if(len < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Decode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ski=%s",
- xmlSecErrorsSafeString(ski));
+ xmlSecInternalError2("xmlSecBase64Decode", NULL,
+ "ski=%s", xmlSecErrorsSafeString(ski));
return(NULL);
}
for(i = 0; i < sk_X509_num(certs); ++i) {
cert = sk_X509_value(certs, i);
index = X509_get_ext_by_NID(cert, NID_subject_key_identifier, -1);
- if((index >= 0) && (ext = X509_get_ext(cert, index))) {
- keyId = X509V3_EXT_d2i(ext);
- if((keyId != NULL) && (keyId->length == len) &&
- (memcmp(keyId->data, ski, len) == 0)) {
- ASN1_OCTET_STRING_free(keyId);
- return(cert);
- }
+ if(index < 0) {
+ continue;
+ }
+ ext = X509_get_ext(cert, index);
+ if(ext == NULL) {
+ continue;
+ }
+ keyId = (ASN1_OCTET_STRING *)X509V3_EXT_d2i(ext);
+ if(keyId == NULL) {
+ continue;
+ }
+ if((keyId->length == len) && (memcmp(keyId->data, ski, len) == 0)) {
ASN1_OCTET_STRING_free(keyId);
+ return(cert);
}
+ ASN1_OCTET_STRING_free(keyId);
}
}
@@ -929,7 +842,7 @@ xmlSecOpenSSLX509FindCert(STACK_OF(X509) *certs, xmlChar *subjectName,
static X509*
xmlSecOpenSSLX509FindNextChainCert(STACK_OF(X509) *chain, X509 *cert) {
unsigned long certSubjHash;
- int i;
+ x509_size_t i;
xmlSecAssert2(chain != NULL, NULL);
xmlSecAssert2(cert != NULL, NULL);
@@ -950,7 +863,7 @@ xmlSecOpenSSLX509VerifyCertAgainstCrls(STACK_OF(X509_CRL) *crls, X509* cert) {
X509_NAME *issuer;
X509_CRL *crl = NULL;
X509_REVOKED *revoked;
- int i, n;
+ x509_size_t i, n;
int ret;
xmlSecAssert2(crls != NULL, -1);
@@ -980,7 +893,7 @@ xmlSecOpenSSLX509VerifyCertAgainstCrls(STACK_OF(X509_CRL) *crls, X509* cert) {
/*
* Check date of CRL to make sure it's not expired
*/
- ret = X509_cmp_current_time(X509_CRL_get_nextUpdate(crl));
+ ret = X509_cmp_current_time(X509_CRL_get0_nextUpdate(crl));
if (ret == 0) {
/* crl expired */
return(1);
@@ -993,11 +906,7 @@ xmlSecOpenSSLX509VerifyCertAgainstCrls(STACK_OF(X509_CRL) *crls, X509* cert) {
for (i = 0; i < n; i++) {
revoked = sk_X509_REVOKED_value(X509_CRL_get_REVOKED(crl), i);
if (ASN1_INTEGER_cmp(X509_REVOKED_get0_serialNumber(revoked), X509_get_serialNumber(cert)) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_CERT_REVOKED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_CERT_REVOKED, NULL, NULL);
return(0);
}
}
@@ -1016,11 +925,7 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
nm = X509_NAME_new();
if(nm == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "X509_NAME_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("X509_NAME_new", NULL);
return(NULL);
}
@@ -1032,11 +937,7 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
nameLen = xmlSecOpenSSLX509NameStringRead(&str, &len, name, sizeof(name), '=', 0);
if(nameLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509NameStringRead", NULL);
X509_NAME_free(nm);
return(NULL);
}
@@ -1048,23 +949,14 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
valueLen = xmlSecOpenSSLX509NameStringRead(&str, &len,
value, sizeof(value), '"', 1);
if(valueLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509NameStringRead", NULL);
X509_NAME_free(nm);
return(NULL);
}
/* skip quote */
if((len <= 0) || ((*str) != '\"')) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "quote is expected:%s",
- xmlSecErrorsSafeString(str));
+ xmlSecInvalidIntegerDataError("char", (*str), "quote '\"'", NULL);
X509_NAME_free(nm);
return(NULL);
}
@@ -1075,12 +967,7 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
++str; --len;
}
if((len > 0) && ((*str) != ',')) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "comma is expected:%s",
- xmlSecErrorsSafeString(str));
+ xmlSecInvalidIntegerDataError("char", (*str), "comma ','", NULL);
X509_NAME_free(nm);
return(NULL);
}
@@ -1090,22 +977,14 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
type = MBSTRING_ASC;
} else if((*str) == '#') {
/* TODO: read octect values */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "reading octect values is not implemented yet");
+ xmlSecNotImplementedError("reading octect values is not implemented yet");
X509_NAME_free(nm);
return(NULL);
} else {
valueLen = xmlSecOpenSSLX509NameStringRead(&str, &len,
value, sizeof(value), ',', 1);
if(valueLen < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509NameStringRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509NameStringRead", NULL);
X509_NAME_free(nm);
return(NULL);
}
@@ -1138,29 +1017,23 @@ xmlSecOpenSSLX509NameStringRead(xmlSecByte **str, int *strLen,
nonSpace = q = res;
while(((p - (*str)) < (*strLen)) && ((*p) != delim) && ((q - res) < resLen)) {
if((*p) != '\\') {
- if(ingoreTrailingSpaces && !isspace(*p)) nonSpace = q;
+ if(ingoreTrailingSpaces && !isspace(*p)) {
+ nonSpace = q;
+ }
*(q++) = *(p++);
} else {
++p;
nonSpace = q;
if(xmlSecIsHex((*p))) {
if((p - (*str) + 1) >= (*strLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "two hex digits expected");
+ xmlSecInvalidDataError("two hex digits expected", NULL);
return(-1);
}
*(q++) = xmlSecGetHex(p[0]) * 16 + xmlSecGetHex(p[1]);
p += 2;
} else {
if(((++p) - (*str)) >= (*strLen)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "escaped symbol missed");
+ xmlSecInvalidDataError("escaped symbol missed", NULL);
return(-1);
}
*(q++) = *(p++);
@@ -1168,19 +1041,15 @@ xmlSecOpenSSLX509NameStringRead(xmlSecByte **str, int *strLen,
}
}
if(((p - (*str)) < (*strLen)) && ((*p) != delim)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_SIZE,
- "buffer is too small");
+ xmlSecInvalidSizeOtherError("buffer is too small", NULL);
return(-1);
}
- (*strLen) -= (p - (*str));
+ (*strLen) -= (int)(p - (*str));
(*str) = p;
- return((ingoreTrailingSpaces) ? nonSpace - res + 1 : q - res);
+ return(int)((ingoreTrailingSpaces) ? nonSpace - res + 1 : q - res);
}
-/**
+/*
* This function DOES NOT create duplicates for X509_NAME_ENTRY objects!
*/
static STACK_OF(X509_NAME_ENTRY)*
@@ -1190,11 +1059,7 @@ xmlSecOpenSSLX509_NAME_ENTRIES_copy(X509_NAME * a) {
res = sk_X509_NAME_ENTRY_new(xmlSecOpenSSLX509_NAME_ENTRY_cmp);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "sk_X509_NAME_ENTRY_new",
- XMLSEC_ERRORS_R_CRYPTO_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOpenSSLError("sk_X509_NAME_ENTRY_new", NULL);
return(NULL);
}
@@ -1249,20 +1114,12 @@ xmlSecOpenSSLX509NamesCompare(X509_NAME *a, X509_NAME *b) {
a1 = xmlSecOpenSSLX509_NAME_ENTRIES_copy(a);
if(a1 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509_NAME_ENTRIES_copy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509_NAME_ENTRIES_copy", NULL);
return(-1);
}
b1 = xmlSecOpenSSLX509_NAME_ENTRIES_copy(b);
if(b1 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecOpenSSLX509_NAME_ENTRIES_copy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecOpenSSLX509_NAME_ENTRIES_copy", NULL);
sk_X509_NAME_ENTRY_free(a1);
return(1);
}
@@ -1286,6 +1143,7 @@ static int
xmlSecOpenSSLX509_NAME_ENTRY_cmp(const X509_NAME_ENTRY * const *a, const X509_NAME_ENTRY * const *b) {
ASN1_STRING *a_value, *b_value;
ASN1_OBJECT *a_name, *b_name;
+ int a_len, b_len;
int ret;
xmlSecAssert2(a != NULL, -1);
@@ -1306,13 +1164,15 @@ xmlSecOpenSSLX509_NAME_ENTRY_cmp(const X509_NAME_ENTRY * const *a, const X509_NA
return(0);
}
- ret = ASN1_STRING_length(a_value) - ASN1_STRING_length(b_value);
+ a_len = ASN1_STRING_length(a_value);
+ b_len = ASN1_STRING_length(b_value);
+ ret = a_len - b_len;
if(ret != 0) {
return(ret);
}
- if(ASN1_STRING_length(a_value) > 0) {
- ret = memcmp(ASN1_STRING_data(a_value), ASN1_STRING_data(b_value), ASN1_STRING_length(a_value));
+ if(a_len > 0) {
+ ret = memcmp(ASN1_STRING_get0_data(a_value), ASN1_STRING_get0_data(b_value), a_len);
if(ret != 0) {
return(ret);
}
@@ -1333,7 +1193,6 @@ xmlSecOpenSSLX509_NAME_ENTRY_cmp(const X509_NAME_ENTRY * const *a, const X509_NA
return(OBJ_cmp(a_name, b_name));
}
-
#endif /* XMLSEC_NO_X509 */
diff --git a/src/parser.c b/src/parser.c
index 969c3e4f..ddeb590c 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * XML Parser transform and utility functions.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:parser
+ * @Short_description: XML parser functions and the XML parser transform implementation.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -87,6 +93,7 @@ static xmlSecTransformKlass xmlSecParserKlass = {
NULL, /* void* reserved1; */
};
+
/**
* xmlSecTransformXmlParserGetKlass:
*
@@ -125,6 +132,10 @@ xmlSecParserFinalize(xmlSecTransformPtr transform) {
xmlSecAssert(ctx != NULL);
if(ctx->parserCtx != NULL) {
+ if(ctx->parserCtx->myDoc != NULL) {
+ xmlFreeDoc(ctx->parserCtx->myDoc);
+ ctx->parserCtx->myDoc = NULL;
+ }
xmlFreeParserCtxt(ctx->parserCtx);
}
memset(ctx, 0, sizeof(xmlSecParserCtx));
@@ -148,11 +159,7 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
ctx->parserCtx = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL);
if(ctx->parserCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlCreatePushParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlCreatePushParserCtxt", xmlSecTransformGetName(transform));
return(-1);
}
@@ -165,11 +172,7 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
} else if(transform->status == xmlSecTransformStatusFinished) {
return(0);
} else if(transform->status != xmlSecTransformStatusWorking) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
xmlSecAssert2(transform->status == xmlSecTransformStatusWorking, -1);
@@ -179,11 +182,9 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
if((data != NULL) && (dataSize > 0)) {
ret = xmlParseChunk(ctx->parserCtx, (const char*)data, dataSize, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- "size=%d", dataSize);
+ xmlSecXmlParserError2("xmlParseChunk", ctx->parserCtx,
+ xmlSecTransformGetName(transform),
+ "size=%lu", (unsigned long)dataSize);
return(-1);
}
}
@@ -192,11 +193,8 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
if(final != 0) {
ret = xmlParseChunk(ctx->parserCtx, NULL, 0, 1);
if((ret != 0) || (ctx->parserCtx->myDoc == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("xmlParseChunk", ctx->parserCtx,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -204,11 +202,8 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
transform->outNodes = xmlSecNodeSetCreate(ctx->parserCtx->myDoc,
NULL, xmlSecNodeSetTree);
if(transform->outNodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetCreate",
+ xmlSecTransformGetName(transform));
xmlFreeDoc(ctx->parserCtx->myDoc);
ctx->parserCtx->myDoc = NULL;
return(-1);
@@ -220,11 +215,8 @@ xmlSecParserPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
if(transform->next != NULL) {
ret = xmlSecTransformPushXml(transform->next, transform->outNodes, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformPushXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushXml",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -264,53 +256,38 @@ xmlSecParserPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
(*nodes) = NULL;
return(0);
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
xmlSecAssert2(transform->status == xmlSecTransformStatusWorking, -1);
/* prepare parser context */
if(transform->prev == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "prev transform is null");
+ xmlSecInvalidTransfromError2(transform,
+ "prev transform=\"%s\"",
+ xmlSecErrorsSafeString(transform->prev));
return(-1);
}
buf = xmlSecTransformCreateInputBuffer(transform->prev, transformCtx);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformCreateInputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCreateInputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
ctxt = xmlNewParserCtxt();
if (ctxt == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlNewParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewParserCtxt",
+ xmlSecTransformGetName(transform));
xmlFreeParserInputBuffer(buf);
return(-1);
}
input = xmlNewIOInputStream(ctxt, buf, XML_CHAR_ENCODING_NONE);
if(input == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlNewParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("xmlNewParserCtxt", ctxt,
+ xmlSecTransformGetName(transform));
xmlFreeParserCtxt(ctxt);
xmlFreeParserInputBuffer(buf);
return(-1);
@@ -318,12 +295,13 @@ xmlSecParserPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
ret = inputPush(ctxt, input);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "inputPush",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("inputPush", ctxt,
+ xmlSecTransformGetName(transform));
xmlFreeInputStream(input);
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
xmlFreeParserCtxt(ctxt);
return(-1);
}
@@ -335,11 +313,8 @@ xmlSecParserPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
/* finaly do the parsing */
ret = xmlParseDocument(ctxt);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParseDocument",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("xmlParseDocument", ctxt,
+ xmlSecTransformGetName(transform));
if(ctxt->myDoc != NULL) {
xmlFreeDoc(ctxt->myDoc);
ctxt->myDoc = NULL;
@@ -356,11 +331,8 @@ xmlSecParserPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
/* return result to the caller */
(*nodes) = xmlSecNodeSetCreate(doc, NULL, xmlSecNodeSetTree);
if((*nodes) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetCreate",
+ xmlSecTransformGetName(transform));
xmlFreeDoc(doc);
return(-1);
}
@@ -394,15 +366,18 @@ typedef struct _xmlSecExtMemoryParserCtx {
*/
xmlDocPtr
xmlSecParseFile(const char *filename) {
- xmlDocPtr ret;
xmlParserCtxtPtr ctxt;
+ xmlDocPtr res = NULL;
char *directory = NULL;
+ int ret;
xmlSecAssert2(filename != NULL, NULL);
xmlInitParser();
ctxt = xmlCreateFileParserCtxt(filename);
if (ctxt == NULL) {
+ xmlSecXmlError2("xmlCreateFileParserCtxt", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
return(NULL);
}
@@ -410,26 +385,56 @@ xmlSecParseFile(const char *filename) {
/* crashes on x64 xmlCtxtUseOptions (ctxt, XML_PARSE_HUGE); */
/* todo: set directories from current doc? */
- if ((ctxt->directory == NULL) && (directory == NULL))
+ if ((ctxt->directory == NULL) && (directory == NULL)) {
directory = xmlParserGetDirectory(filename);
- if ((ctxt->directory == NULL) && (directory != NULL))
- ctxt->directory = (char *) xmlStrdup((xmlChar *) directory);
+ if(directory == NULL) {
+ xmlSecXmlError2("xmlParserGetDirectory", NULL,
+ "filename=%s", xmlSecErrorsSafeString(filename));
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
+ }
+ }
+ if ((ctxt->directory == NULL) && (directory != NULL)) {
+ ctxt->directory = (char *) xmlStrdup(BAD_CAST directory);
+ if(ctxt->directory == NULL) {
+ xmlSecStrdupError(BAD_CAST directory, NULL);
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
+ }
+ }
/* required for c14n! */
ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
ctxt->replaceEntities = 1;
- xmlParseDocument(ctxt);
+ ret = xmlParseDocument(ctxt);
+ if(ret < 0) {
+ xmlSecXmlParserError2("xmlParseDocument", ctxt, NULL,
+ "filename=%s",
+ xmlSecErrorsSafeString(filename));
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
+ }
- if(ctxt->wellFormed) {
- ret = ctxt->myDoc;
- } else {
- ret = NULL;
- xmlFreeDoc(ctxt->myDoc);
- ctxt->myDoc = NULL;
+ if(!ctxt->wellFormed) {
+ xmlSecInternalError("document is not well formed", NULL);
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
}
+
+ /* done */
+ res = ctxt->myDoc;
+ ctxt->myDoc = NULL;
xmlFreeParserCtxt(ctxt);
- return(ret);
+ return(res);
}
@@ -457,11 +462,7 @@ xmlSecParseMemoryExt(const xmlSecByte *prefix, xmlSecSize prefixSize,
/* create context */
ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL);
if(ctxt == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlCreatePushParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlCreatePushParserCtxt", NULL);
goto done;
}
@@ -473,11 +474,9 @@ xmlSecParseMemoryExt(const xmlSecByte *prefix, xmlSecSize prefixSize,
if((prefix != NULL) && (prefixSize > 0)) {
ret = xmlParseChunk(ctxt, (const char*)prefix, prefixSize, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- "prefixSize=%d", prefixSize);
+ xmlSecXmlParserError2("xmlParseChunk", ctxt, NULL,
+ "chunkSize=%d", prefixSize);
+
goto done;
}
}
@@ -486,11 +485,9 @@ xmlSecParseMemoryExt(const xmlSecByte *prefix, xmlSecSize prefixSize,
if((buffer != NULL) && (bufferSize > 0)) {
ret = xmlParseChunk(ctxt, (const char*)buffer, bufferSize, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- "bufferSize=%d", bufferSize);
+ xmlSecXmlParserError2("xmlParseChunk", ctxt, NULL,
+ "chunkSize=%d", bufferSize);
+
goto done;
}
}
@@ -499,11 +496,9 @@ xmlSecParseMemoryExt(const xmlSecByte *prefix, xmlSecSize prefixSize,
if((postfix != NULL) && (postfixSize > 0)) {
ret = xmlParseChunk(ctxt, (const char*)postfix, postfixSize, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- "postfixSize=%d", postfixSize);
+ xmlSecXmlParserError2("xmlParseChunk", ctxt, NULL,
+ "chunkSize=%d", postfixSize);
+
goto done;
}
}
@@ -511,17 +506,18 @@ xmlSecParseMemoryExt(const xmlSecByte *prefix, xmlSecSize prefixSize,
/* finishing */
ret = xmlParseChunk(ctxt, NULL, 0, 1);
if((ret != 0) || (ctxt->myDoc == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("xmlParseChunk", ctxt, NULL);
goto done;
}
doc = ctxt->myDoc;
+ ctxt->myDoc = NULL;
done:
if(ctxt != NULL) {
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
xmlFreeParserCtxt(ctxt);
}
return(doc);
@@ -541,18 +537,15 @@ done:
*/
xmlDocPtr
xmlSecParseMemory(const xmlSecByte *buffer, xmlSecSize size, int recovery) {
- xmlDocPtr ret;
xmlParserCtxtPtr ctxt;
+ xmlDocPtr res = NULL;
+ int ret;
xmlSecAssert2(buffer != NULL, NULL);
ctxt = xmlCreateMemoryParserCtxt((char*)buffer, size);
if (ctxt == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlCreateMemoryParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlCreateMemoryParserCtxt", NULL);
return(NULL);
}
@@ -560,16 +553,31 @@ xmlSecParseMemory(const xmlSecByte *buffer, xmlSecSize size, int recovery) {
ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
ctxt->replaceEntities = 1;
- xmlParseDocument(ctxt);
+ ret = xmlParseDocument(ctxt);
+ if(ret < 0) {
+ xmlSecXmlParserError("xmlParseDocument", ctxt, NULL);
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
+ }
- if((ctxt->wellFormed) || recovery) {
- ret = ctxt->myDoc;
- } else {
- ret = NULL;
- xmlFreeDoc(ctxt->myDoc);
- ctxt->myDoc = NULL;
+ if(!(ctxt->wellFormed) && !recovery) {
+ xmlSecInternalError("document is not well formed", NULL);
+ if(ctxt->myDoc != NULL) {
+ xmlFreeDoc(ctxt->myDoc);
+ ctxt->myDoc = NULL;
+ }
+ xmlFreeParserCtxt(ctxt);
+ return(NULL);
}
+
+ /* done */
+ res = ctxt->myDoc;
+ ctxt->myDoc = NULL;
xmlFreeParserCtxt(ctxt);
- return(ret);
+ return(res);
}
diff --git a/src/relationship.c b/src/relationship.c
index e510d4b6..54cef688 100644
--- a/src/relationship.c
+++ b/src/relationship.c
@@ -1,37 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Relationship transform
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
-#include "globals.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxml/tree.h>
-#include <libxml/xpointer.h>
-#include <libxml/c14n.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/xmltree.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/list.h>
-#include <xmlsec/transforms.h>
-#include <xmlsec/errors.h>
-
-
-/******************************************************************************
- *
- * Relationship transform
- *
- * http://standards.iso.org/ittf/PubliclyAvailableStandards/c061796_ISO_IEC_29500-2_2012.zip
+/**
+ * SECTION:relationship
+ * @Short_description: Relationship transform implementation
+ * @Stability: Private
*
- * 13.2.4.24 Relationships Transform Algorithm
+ * [Relationship transform](http://standards.iso.org/ittf/PubliclyAvailableStandards/c061796_ISO_IEC_29500-2_2012.zip)
*
* The relationships transform takes the XML document from the Relationships part and converts
* it to another XML document.
@@ -79,7 +60,7 @@
* IMPLEMENTATION NOTES (https://github.com/lsh123/xmlsec/pull/24):
*
* * We don't simply manipulate the XML tree, but do an XML tree -> output bytes transformation,
- * so e.g. because we never write characters inside XML elements, we implicitly remove all character
+ * because we never write characters inside XML elements, we implicitly remove all character
* contents, as required by step 3, point 1. It also simplifies the task of the situation that
* realistically the input of the transformation is always a document that conforms to the OOXML
* relationships XML schema, so in practice it'll never happen that the input document has e.g.
@@ -91,7 +72,24 @@
* when there will be such an input, then it'll be easy to add support for that. But I didn't want to clutter
* the current implementation with details that doesn't seem to be used in practice
*
- *****************************************************************************/
+ */
+#include "globals.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <libxml/tree.h>
+#include <libxml/xpointer.h>
+#include <libxml/c14n.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/list.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+
+
typedef struct _xmlSecRelationshipCtx xmlSecRelationshipCtx,
*xmlSecRelationshipCtxPtr;
struct _xmlSecRelationshipCtx {
@@ -168,11 +166,8 @@ xmlSecRelationshipInitialize(xmlSecTransformPtr transform) {
ctx->sourceIdList = xmlSecPtrListCreate(xmlSecStringListId);
if(ctx->sourceIdList == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCreate",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -212,43 +207,21 @@ xmlSecRelationshipReadNode(xmlSecTransformPtr transform, xmlNodePtr node, xmlSec
while(cur != NULL) {
if(xmlSecCheckNodeName(cur, xmlSecNodeRelationshipReference, xmlSecRelationshipReferenceNs)) {
xmlChar* sourceId;
- xmlChar* tmp;
sourceId = xmlGetProp(cur, xmlSecRelationshipAttrSourceId);
if(sourceId == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- "xmlGetProp",
- xmlSecErrorsSafeString(xmlSecRelationshipAttrSourceId),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
- return(-1);
- }
-
- tmp = xmlStrdup(sourceId);
- if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlStrdup",
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "len=%d", xmlStrlen(sourceId));
- xmlFree(sourceId);
+ xmlSecInvalidNodeAttributeError(cur, xmlSecRelationshipAttrSourceId,
+ NULL, "empty");
return(-1);
}
- ret = xmlSecPtrListAdd(ctx->sourceIdList, tmp);
+ ret = xmlSecPtrListAdd(ctx->sourceIdList, sourceId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlFree(sourceId);
- xmlFree(tmp);
return(-1);
}
- xmlFree(sourceId);
- xmlFree(tmp);
}
cur = cur->next;
@@ -260,8 +233,8 @@ xmlSecRelationshipReadNode(xmlSecTransformPtr transform, xmlNodePtr node, xmlSec
/* Sorts Relationship elements by Id value in lexicographical order. */
static int
xmlSecTransformRelationshipCompare(xmlNodePtr node1, xmlNodePtr node2) {
- xmlChar* id1;
- xmlChar* id2;
+ xmlChar* id1 = NULL;
+ xmlChar* id2 = NULL;
int ret;
if(node1 == node2) {
@@ -277,21 +250,28 @@ xmlSecTransformRelationshipCompare(xmlNodePtr node1, xmlNodePtr node2) {
id1 = xmlGetProp(node1, xmlSecRelationshipAttrId);
id2 = xmlGetProp(node2, xmlSecRelationshipAttrId);
if(id1 == NULL) {
- return(-1);
+ ret = -1;
+ goto done;
}
if(id2 == NULL) {
- xmlFree(id1);
- return(1);
+ ret = 1;
+ goto done;
}
ret = xmlStrcmp(id1, id2);
- xmlFree(id1);
- xmlFree(id2);
- return(ret);
+done:
+ if (id1 != NULL) {
+ xmlFree(id1);
+ }
+ if (id2 != NULL) {
+ xmlFree(id2);
+ }
+
+ return ret;
}
-/**
+/*
* This is step 2, point 4: if the input sourceId list doesn't contain the Id attribute of the current node,
* then exclude it from the output, instead of processing it.
*/
@@ -309,43 +289,38 @@ xmlSecTransformRelationshipProcessNode(xmlSecTransformPtr transform, xmlOutputBu
if(xmlSecCheckNodeName(cur, xmlSecNodeRelationship, xmlSecRelationshipsNs)) {
xmlChar* id = xmlGetProp(cur, xmlSecRelationshipAttrId);
if(id == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlGetProp(xmlSecRelationshipAttrId)",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=Id");
+ xmlSecXmlError2("xmlGetProp(xmlSecRelationshipAttrId)",
+ xmlSecTransformGetName(transform),
+ "name=%s", xmlSecRelationshipAttrId);
return(-1);
}
ctx = xmlSecRelationshipGetCtx(transform);
for(ii = 0; ii < xmlSecPtrListGetSize(ctx->sourceIdList); ++ii) {
- if(xmlStrcmp(xmlSecPtrListGetItem(ctx->sourceIdList, ii), id) == 0) {
+ if(xmlStrcmp((xmlChar *)xmlSecPtrListGetItem(ctx->sourceIdList, ii), id) == 0) {
found = 1;
break;
}
}
+ xmlFree(id);
+
if(found < 0) {
- xmlFree(id);
return(0);
}
- xmlFree(id);
}
ret = xmlSecTransformRelationshipProcessElementNode(transform, buf, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipProcessElementNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipProcessElementNode",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
}
-/**
+/*
* This is step 2, point 3: sort elements by Id: we process other elements as-is, but for elements we collect them in a list,
* then sort, and finally process them (process the head of the list, then pop the head, till the list becomes empty).
*/
@@ -360,32 +335,21 @@ xmlSecTransformRelationshipProcessNodeList(xmlSecTransformPtr transform, xmlOutp
list = xmlListCreate(NULL, (xmlListDataCompare)xmlSecTransformRelationshipCompare);
if(list == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlListCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlListCreate", xmlSecTransformGetName(transform));
return(-1);
}
for(; cur; cur = cur->next) {
if(xmlStrcmp(cur->name, xmlSecNodeRelationship) == 0) {
if(xmlListInsert(list, cur) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlListInsert",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlListInsert", xmlSecTransformGetName(transform));
return(-1);
}
} else {
ret = xmlSecTransformRelationshipProcessNode(transform, buf, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipProcessNode",
+ xmlSecTransformGetName(transform));
xmlListDelete(list);
return(-1);
}
@@ -400,11 +364,8 @@ xmlSecTransformRelationshipProcessNodeList(xmlSecTransformPtr transform, xmlOutp
ret = xmlSecTransformRelationshipProcessNode(transform, buf, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipProcessNode",
+ xmlSecTransformGetName(transform));
xmlListDelete(list);
return(-1);
}
@@ -426,50 +387,30 @@ xmlSecTransformRelationshipWriteProp(xmlOutputBufferPtr buf, const xmlChar * nam
ret = xmlOutputBufferWriteString(buf, " ");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
return(-1);
}
ret = xmlOutputBufferWriteString(buf, (const char*) name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
return(-1);
}
if(value != NULL) {
ret = xmlOutputBufferWriteString(buf, "=\"");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
return(-1);
}
ret = xmlOutputBufferWriteString(buf, (const char*) value);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
return(-1);
}
ret = xmlOutputBufferWriteString(buf, "\"");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString", NULL);
return(-1);
}
}
@@ -499,20 +440,14 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
/* write open node */
ret = xmlOutputBufferWriteString(buf, "<");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlOutputBufferWriteString(buf, (const char *)cur->name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -520,22 +455,19 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
if(cur->nsDef != NULL) {
ret = xmlSecTransformRelationshipWriteNs(buf, cur->nsDef->href);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipWriteNs",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipWriteNs",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
- /**
+ /*
* write attributes:
*
* This is step 3, point 6: add default value of TargetMode if there is no such attribute.
*/
for(attr = cur->properties; attr != NULL; attr = attr->next) {
- xmlChar* value = xmlGetProp(cur, attr->name);
+ xmlChar * value = xmlGetProp(cur, attr->name);
if(xmlStrcmp(attr->name, xmlSecRelationshipAttrTargetMode) == 0) {
foundTargetMode = 1;
@@ -543,14 +475,12 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
ret = xmlSecTransformRelationshipWriteProp(buf, attr->name, value);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipWriteProp",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipWriteProp",
+ xmlSecTransformGetName(transform));
xmlFree(value);
return(-1);
}
+
xmlFree(value);
}
@@ -558,11 +488,8 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
if(xmlStrcmp(cur->name, xmlSecNodeRelationship) == 0 && !foundTargetMode) {
ret = xmlSecTransformRelationshipWriteProp(buf, xmlSecRelationshipAttrTargetMode, BAD_CAST "Internal");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipWriteProp(TargetMode=Internal)",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipWriteProp(TargetMode=Internal)",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -570,11 +497,8 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
/* finish writing open node */
ret = xmlOutputBufferWriteString(buf, ">");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -582,11 +506,8 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
if(cur->children != NULL) {
ret = xmlSecTransformRelationshipProcessNodeList(transform, buf, cur->children);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipProcessNodeList",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipProcessNodeList",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -594,28 +515,19 @@ xmlSecTransformRelationshipProcessElementNode(xmlSecTransformPtr transform, xmlO
/* write closing node */
ret = xmlOutputBufferWriteString(buf, "</");
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlOutputBufferWriteString(buf, (const char *)cur->name);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
if(xmlOutputBufferWriteString(buf, ">") < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferWriteString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferWriteString",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -634,11 +546,8 @@ xmlSecTransformRelationshipExecute(xmlSecTransformPtr transform, xmlOutputBuffer
if(doc->children != NULL) {
ret = xmlSecTransformRelationshipProcessNodeList(transform, buf, doc->children);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformRelationshipProcessNodeList",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipProcessNodeList",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -669,11 +578,7 @@ xmlSecTransformRelationshipPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPt
case xmlSecTransformStatusFinished:
return(0);
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
xmlSecAssert2(transform->status == xmlSecTransformStatusWorking, -1);
@@ -682,43 +587,30 @@ xmlSecTransformRelationshipPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPt
if(transform->next != NULL) {
buf = xmlSecTransformCreateOutputBuffer(transform->next, transformCtx);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
buf = xmlSecBufferCreateOutputBuffer(&(transform->outBuf));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
ret = xmlSecTransformRelationshipExecute(transform, buf, nodes->doc);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlC14NExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformRelationshipExecute",
+ xmlSecTransformGetName(transform));
xmlOutputBufferClose(buf);
return(-1);
}
ret = xmlOutputBufferClose(buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusFinished;
@@ -749,43 +641,30 @@ xmlSecTransformRelationshipPopBin(xmlSecTransformPtr transform, xmlSecByte* data
/* get xml data from previous transform */
ret = xmlSecTransformPopXml(transform->prev, &(transform->inNodes), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformPopXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopXml",
+ xmlSecTransformGetName(transform));
return(-1);
}
/* dump everything to internal buffer */
buf = xmlSecBufferCreateOutputBuffer(out);
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlC14NExecute(transform->inNodes->doc, (xmlC14NIsVisibleCallback)xmlSecNodeSetContains, transform->inNodes, XML_C14N_1_0, NULL, 0, buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformC14NExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlC14NExecute",
+ xmlSecTransformGetName(transform));
xmlOutputBufferClose(buf);
return(-1);
}
ret = xmlOutputBufferClose(buf);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", xmlSecTransformGetName(transform));
return(-1);
}
transform->status = xmlSecTransformStatusWorking;
@@ -808,11 +687,9 @@ xmlSecTransformRelationshipPopBin(xmlSecTransformPtr transform, xmlSecByte* data
memcpy(data, xmlSecBufferGetData(out), outSize);
ret = xmlSecBufferRemoveHead(out, outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
} else if(xmlSecBufferGetSize(out) == 0) {
@@ -824,11 +701,7 @@ xmlSecTransformRelationshipPopBin(xmlSecTransformPtr transform, xmlSecByte* data
xmlSecAssert2(xmlSecBufferGetSize(out) == 0, -1);
(*dataSize) = 0;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
diff --git a/src/skeleton/Makefile.am b/src/skeleton/Makefile.am
index 2f54f9de..dd037e62 100644
--- a/src/skeleton/Makefile.am
+++ b/src/skeleton/Makefile.am
@@ -25,10 +25,6 @@ libxmlsec1_skeleton_la_SOURCES =\
globals.h \
$(NULL)
-if SHAREDLIB_HACK
-libxmlsec1_skeleton_la_SOURCES += ../strings.c
-endif
-
libxmlsec1_skeleton_la_LIBADD = \
$(SKELETON_LIBS) \
$(LIBXSLT_LIBS) \
diff --git a/src/skeleton/app.c b/src/skeleton/app.c
index 69c83308..a9386a9a 100644
--- a/src/skeleton/app.c
+++ b/src/skeleton/app.c
@@ -1,16 +1,24 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:app
+ * @Short_description: Application support functions for Skeleton.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
-/* TODO: aadd Skeleton include files */
+/* TODO: add Skeleton include files */
#include <xmlsec/xmlsec.h>
#include <xmlsec/keys.h>
@@ -73,11 +81,7 @@ xmlSecSkeletonAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, NULL);
/* TODO: load key */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeyLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -101,11 +105,7 @@ xmlSecSkeletonAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlS
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, NULL);
/* TODO: load key */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeyLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -130,11 +130,7 @@ xmlSecSkeletonAppKeyCertLoad(xmlSecKeyPtr key, const char* filename,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeyCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -157,11 +153,7 @@ xmlSecSkeletonAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xml
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeyCertLoadMemory",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -188,11 +180,7 @@ xmlSecSkeletonAppPkcs12Load(const char *filename,
xmlSecAssert2(filename != NULL, NULL);
/* TODO: load pkcs12 file */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppPkcs12Load",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -217,11 +205,7 @@ xmlSecSkeletonAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize, c
xmlSecAssert2(data != NULL, NULL);
/* TODO: load pkcs12 file */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppPkcs12Load",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(NULL);
}
@@ -249,11 +233,7 @@ xmlSecSkeletonAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO: load cert and add to keys manager */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeysMngrCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -279,11 +259,7 @@ xmlSecSkeletonAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte
xmlSecAssert2(format != xmlSecKeyDataFormatUnknown, -1);
/* TODO: load cert and add to keys manager */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonAppKeysMngrCertLoad",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError(NULL);
return(-1);
}
@@ -314,21 +290,13 @@ xmlSecSkeletonAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
keysStore = xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId);
if(keysStore == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyStoreCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecSimpleKeysStoreId");
+ xmlSecInternalError("xmlSecKeyStoreCreate(xmlSecSimpleKeysStoreId)", NULL);
return(-1);
}
ret = xmlSecKeysMngrAdoptKeysStore(mngr, keysStore);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrAdoptKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrAdoptKeysStore", NULL);
xmlSecKeyStoreDestroy(keysStore);
return(-1);
}
@@ -336,11 +304,7 @@ xmlSecSkeletonAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
ret = xmlSecSkeletonKeysMngrInit(mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSkeletonKeysMngrInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSkeletonKeysMngrInit", NULL);
return(-1);
}
@@ -372,21 +336,13 @@ xmlSecSkeletonAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr ke
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreAdoptKey(store, key);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreAdoptKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSimpleKeysStoreAdoptKey", NULL);
return(-1);
}
@@ -417,21 +373,14 @@ xmlSecSkeletonAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreLoad(store, uri, mngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreLoad",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s", xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreLoad", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -462,22 +411,15 @@ xmlSecSkeletonAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filenam
store = xmlSecKeysMngrGetKeysStore(mngr);
if(store == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeysMngrGetKeysStore",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeysMngrGetKeysStore", NULL);
return(-1);
}
ret = xmlSecSimpleKeysStoreSave(store, filename, type);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSimpleKeysStoreSave",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "filename=%s",
- xmlSecErrorsSafeString(filename));
+ xmlSecInternalError2("xmlSecSimpleKeysStoreSave", NULL,
+ "filename=%s",
+ xmlSecErrorsSafeString(filename));
return(-1);
}
diff --git a/src/skeleton/crypto.c b/src/skeleton/crypto.c
index 0e372f18..0da927eb 100644
--- a/src/skeleton/crypto.c
+++ b/src/skeleton/crypto.c
@@ -1,11 +1,19 @@
-/**
- * XMLSec library
+/*
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:crypto
+ * @Short_description: Crypto transforms implementation for Skeleton.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <string.h>
@@ -244,21 +252,13 @@ int
xmlSecSkeletonInit (void) {
/* Check loaded xmlsec library version */
if(xmlSecCheckVersionExact() != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCheckVersionExact",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCheckVersionExact", NULL);
return(-1);
}
/* register our klasses */
if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_skeleton()) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms", NULL);
return(-1);
}
return(0);
diff --git a/src/skeleton/globals.h b/src/skeleton/globals.h
index 065c3e8f..6e84c432 100644
--- a/src/skeleton/globals.h
+++ b/src/skeleton/globals.h
@@ -21,4 +21,7 @@
#define IN_XMLSEC_CRYPTO
#define XMLSEC_PRIVATE
+/* Include common error helper macros. */
+#include "../errors_helpers.h"
+
#endif /* ! __XMLSEC_GLOBALS_H__ */
diff --git a/src/soap.c b/src/soap.c
index 3757e1ad..1afe0b2e 100644
--- a/src/soap.c
+++ b/src/soap.c
@@ -1,12 +1,17 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Simple SOAP messages parsing/creation.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
- * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
+ * Copyright (C) 2002-2017 Aleksey Sanin <aleksey@aleksey.com>
+ */
+/**
+ * SECTION:soap
+ * @Short_description: Simple SOAP messages parsing/creation functions.
+ * @Stability: Private
+ *
*/
#include "globals.h"
@@ -59,23 +64,15 @@ xmlSecSoap11CreateEnvelope(xmlDocPtr doc) {
/* create Envelope node */
envNode = xmlNewDocNode(doc, NULL, xmlSecNodeEnvelope, NULL);
if(envNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDocNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEnvelope));
+ xmlSecXmlError2("xmlNewDocNode", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeEnvelope));
return(NULL);
}
ns = xmlNewNs(envNode, xmlSecSoap11Ns, NULL) ;
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "ns=%s",
- xmlSecErrorsSafeString(xmlSecSoap11Ns));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "ns=%s", xmlSecErrorsSafeString(xmlSecSoap11Ns));
xmlFreeNode(envNode);
return(NULL);
}
@@ -84,12 +81,7 @@ xmlSecSoap11CreateEnvelope(xmlDocPtr doc) {
/* add required Body node */
bodyNode = xmlSecAddChild(envNode, xmlSecNodeBody, xmlSecSoap11Ns);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeBody));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeBody)", NULL);
xmlFreeNode(envNode);
return(NULL);
}
@@ -132,22 +124,14 @@ xmlSecSoap11EnsureHeader(xmlNodePtr envNode) {
/* if the first element child is not Header then it is Body */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap11Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(NULL);
}
/* finally add Header node before body */
hdrNode = xmlSecAddPrevSibling(cur, xmlSecNodeHeader, xmlSecSoap11Ns);
if(hdrNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddPrevSibling",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecAddPrevSibling", NULL);
return(NULL);
}
@@ -172,11 +156,7 @@ xmlSecSoap11AddBodyEntry(xmlNodePtr envNode, xmlNodePtr entryNode) {
bodyNode = xmlSecSoap11GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap11GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap11GetBody", NULL);
return(NULL);
}
@@ -232,46 +212,28 @@ xmlSecSoap11AddFaultEntry(xmlNodePtr envNode, const xmlChar* faultCodeHref,
/* get Body node */
bodyNode = xmlSecSoap11GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap11GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap11GetBody", NULL);
return(NULL);
}
/* check that we don't have Fault node already */
faultNode = xmlSecFindChild(bodyNode, xmlSecNodeFault, xmlSecSoap11Ns);
if(faultNode != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(bodyNode, xmlSecNodeFault, NULL);
return(NULL);
}
/* add Fault node */
faultNode = xmlSecAddChild(bodyNode, xmlSecNodeFault, xmlSecSoap11Ns);
if(faultNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeFault));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeFault)", NULL);
return(NULL);
}
/* add faultcode node */
cur = xmlSecAddChild(faultNode, xmlSecNodeFaultCode, xmlSecSoap11Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeFaultCode));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeFaultCode)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -280,12 +242,8 @@ xmlSecSoap11AddFaultEntry(xmlNodePtr envNode, const xmlChar* faultCodeHref,
/* create qname for fault code */
qname = xmlSecGetQName(cur, faultCodeHref, faultCodeLocalPart);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGetQName",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(cur->name));
+ xmlSecXmlError2("xmlSecGetQName", NULL,
+ "node=%s", xmlSecErrorsSafeString(cur->name));
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -298,12 +256,7 @@ xmlSecSoap11AddFaultEntry(xmlNodePtr envNode, const xmlChar* faultCodeHref,
/* add faultstring node */
cur = xmlSecAddChild(faultNode, xmlSecNodeFaultString, xmlSecSoap11Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeFaultString));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeFaultString)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -316,12 +269,7 @@ xmlSecSoap11AddFaultEntry(xmlNodePtr envNode, const xmlChar* faultCodeHref,
/* add faultactor node */
cur = xmlSecAddChild(faultNode, xmlSecNodeFaultActor, xmlSecSoap11Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeFaultActor));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeFaultActor)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -351,11 +299,7 @@ xmlSecSoap11CheckEnvelope(xmlNodePtr envNode) {
/* verify envNode itself */
if(!xmlSecCheckNodeName(envNode, xmlSecNodeEnvelope, xmlSecSoap11Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeEnvelope),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(envNode, xmlSecNodeEnvelope, NULL);
return(0);
}
@@ -367,11 +311,7 @@ xmlSecSoap11CheckEnvelope(xmlNodePtr envNode) {
/* required Body node is next */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap11Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(0);
}
@@ -423,11 +363,7 @@ xmlSecSoap11GetBody(xmlNodePtr envNode) {
/* Body node is next */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap11Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(NULL);
}
@@ -453,11 +389,7 @@ xmlSecSoap11GetBodyEntriesNumber(xmlNodePtr envNode) {
/* get Body node */
bodyNode = xmlSecSoap11GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap11GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap11GetBody", NULL);
return(0);
}
@@ -489,11 +421,7 @@ xmlSecSoap11GetBodyEntry(xmlNodePtr envNode, xmlSecSize pos) {
/* get Body node */
bodyNode = xmlSecSoap11GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap11GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap11GetBody", NULL);
return(NULL);
}
@@ -523,11 +451,7 @@ xmlSecSoap11GetFaultEntry(xmlNodePtr envNode) {
/* get Body node */
bodyNode = xmlSecSoap11GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap11GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap11GetBody", NULL);
return(NULL);
}
@@ -585,23 +509,15 @@ xmlSecSoap12CreateEnvelope(xmlDocPtr doc) {
/* create Envelope node */
envNode = xmlNewDocNode(doc, NULL, xmlSecNodeEnvelope, NULL);
if(envNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDocNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEnvelope));
+ xmlSecXmlError2("xmlNewDocNode", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeEnvelope));
return(NULL);
}
ns = xmlNewNs(envNode, xmlSecSoap12Ns, NULL) ;
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "ns=%s",
- xmlSecErrorsSafeString(xmlSecSoap12Ns));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "ns=%s", xmlSecErrorsSafeString(xmlSecSoap12Ns));
xmlFreeNode(envNode);
return(NULL);
}
@@ -610,12 +526,7 @@ xmlSecSoap12CreateEnvelope(xmlDocPtr doc) {
/* add required Body node */
bodyNode = xmlSecAddChild(envNode, xmlSecNodeBody, xmlSecSoap12Ns);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeBody));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeBody)", NULL);
xmlFreeNode(envNode);
return(NULL);
}
@@ -658,22 +569,14 @@ xmlSecSoap12EnsureHeader(xmlNodePtr envNode) {
/* if the first element child is not Header then it is Body */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap12Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(NULL);
}
/* finally add Header node before body */
hdrNode = xmlSecAddPrevSibling(cur, xmlSecNodeHeader, xmlSecSoap12Ns);
if(hdrNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddPrevSibling",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecAddPrevSibling", NULL);
return(NULL);
}
@@ -709,11 +612,7 @@ xmlSecSoap12AddBodyEntry(xmlNodePtr envNode, xmlNodePtr entryNode) {
bodyNode = xmlSecSoap12GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap12GetBody", NULL);
return(NULL);
}
@@ -813,46 +712,28 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
/* get Body node */
bodyNode = xmlSecSoap12GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap12GetBody", NULL);
return(NULL);
}
/* check that we don't have Fault node already */
faultNode = xmlSecFindChild(bodyNode, xmlSecNodeFault, xmlSecSoap12Ns);
if(faultNode != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(bodyNode, xmlSecNodeFault, NULL);
return(NULL);
}
/* add Fault node */
faultNode = xmlSecAddChild(bodyNode, xmlSecNodeFault, xmlSecSoap12Ns);
if(faultNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeFault));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeFault)", NULL);
return(NULL);
}
/* add Code node */
cur = xmlSecAddChild(faultNode, xmlSecNodeCode, xmlSecSoap12Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCode));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeCode)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -863,12 +744,8 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
xmlSecNodeValue, xmlSecSoap12Ns,
faultCode);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "faultCode=%d",
- faultCode);
+ xmlSecInternalError2("xmlSecQName2IntegerNodeWrite", NULL,
+ "faultCode=%d", faultCode);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -877,12 +754,7 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
/* add Reason node */
cur = xmlSecAddChild(faultNode, xmlSecNodeReason, xmlSecSoap12Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeReason));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeReason)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -890,12 +762,8 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
/* Add Reason/Text node */
if(xmlSecSoap12AddFaultReasonText(faultNode, faultReasonText, faultReasonLang) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12AddFaultReasonText",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "text=%s",
- xmlSecErrorsSafeString(faultReasonText));
+ xmlSecInternalError2("xmlSecSoap12AddFaultReasonText", NULL,
+ "text=%s", xmlSecErrorsSafeString(faultReasonText));
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -905,12 +773,7 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
/* add Node node */
cur = xmlSecAddChild(faultNode, xmlSecNodeNode, xmlSecSoap12Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeNode));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeNode)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -922,12 +785,7 @@ xmlSecSoap12AddFaultEntry(xmlNodePtr envNode, xmlSecSoap12FaultCode faultCode,
/* add Role node */
cur = xmlSecAddChild(faultNode, xmlSecNodeRole, xmlSecSoap12Ns);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRole));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeRole)", NULL);
xmlUnlinkNode(faultNode);
xmlFreeNode(faultNode);
return(NULL);
@@ -958,15 +816,10 @@ xmlSecSoap12AddFaultSubcode(xmlNodePtr faultNode, const xmlChar* subCodeHref, co
xmlSecAssert2(subCodeHref != NULL, NULL);
xmlSecAssert2(subCodeName != NULL, NULL);
- /* Code node is the first childern in Fault node */
+ /* Code node is the first children in Fault node */
cur = xmlSecGetNextElementNode(faultNode->children);
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeCode, xmlSecSoap12Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCode));
+ xmlSecInvalidNodeError(cur, xmlSecNodeCode, NULL);
return(NULL);
}
@@ -986,24 +839,14 @@ xmlSecSoap12AddFaultSubcode(xmlNodePtr faultNode, const xmlChar* subCodeHref, co
/* add Subcode node */
subcodeNode = xmlSecAddChild(cur, xmlSecNodeSubcode, xmlSecSoap12Ns);
if(subcodeNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSubcode));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeSubcode)", NULL);
return(NULL);
}
/* add Value node */
valueNode = xmlSecAddChild(subcodeNode, xmlSecNodeValue, xmlSecSoap12Ns);
if(valueNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeValue));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeValue)", NULL);
xmlUnlinkNode(subcodeNode);
xmlFreeNode(subcodeNode);
return(NULL);
@@ -1012,12 +855,8 @@ xmlSecSoap12AddFaultSubcode(xmlNodePtr faultNode, const xmlChar* subCodeHref, co
/* create qname for fault code */
qname = xmlSecGetQName(cur, subCodeHref, subCodeName);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGetQName",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(cur->name));
+ xmlSecXmlError2("xmlSecGetQName", NULL,
+ "node=%s", xmlSecErrorsSafeString(cur->name));
xmlUnlinkNode(subcodeNode);
xmlFreeNode(subcodeNode);
return(NULL);
@@ -1056,24 +895,14 @@ xmlSecSoap12AddFaultReasonText(xmlNodePtr faultNode, const xmlChar* faultReasonT
/* find Reason node */
reasonNode = xmlSecFindChild(faultNode, xmlSecNodeReason, xmlSecSoap12Ns);
if(reasonNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecFindChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeReason));
+ xmlSecInternalError("xmlSecFindChild(xmlSecNodeReason)", NULL);
return(NULL);
}
/* add Text node */
textNode = xmlSecAddChild(reasonNode, xmlSecNodeText, xmlSecSoap12Ns);
if(textNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeText));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeText)", NULL);
return(NULL);
}
xmlNodeSetContent(textNode, faultReasonText);
@@ -1104,12 +933,7 @@ xmlSecSoap12AddFaultDetailEntry(xmlNodePtr faultNode, xmlNodePtr detailEntryNode
if(detailNode == NULL) {
detailNode = xmlSecAddChild(faultNode, xmlSecNodeDetail, xmlSecSoap12Ns);
if(detailNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDetail));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeDetail)", NULL);
return(NULL);
}
}
@@ -1134,11 +958,7 @@ xmlSecSoap12CheckEnvelope(xmlNodePtr envNode) {
/* verify envNode itself */
if(!xmlSecCheckNodeName(envNode, xmlSecNodeEnvelope, xmlSecSoap12Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeEnvelope),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(envNode, xmlSecNodeEnvelope, NULL);
return(0);
}
@@ -1150,11 +970,7 @@ xmlSecSoap12CheckEnvelope(xmlNodePtr envNode) {
/* required Body node is next */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap12Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(0);
}
@@ -1206,11 +1022,7 @@ xmlSecSoap12GetBody(xmlNodePtr envNode) {
/* Body node is next */
if((cur == NULL) || !xmlSecCheckNodeName(cur, xmlSecNodeBody, xmlSecSoap12Ns)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeBody),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeError(cur, xmlSecNodeBody, NULL);
return(NULL);
}
@@ -1236,11 +1048,7 @@ xmlSecSoap12GetBodyEntriesNumber(xmlNodePtr envNode) {
/* get Body node */
bodyNode = xmlSecSoap12GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap12GetBody", NULL);
return(0);
}
@@ -1272,11 +1080,7 @@ xmlSecSoap12GetBodyEntry(xmlNodePtr envNode, xmlSecSize pos) {
/* get Body node */
bodyNode = xmlSecSoap12GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap12GetBody", NULL);
return(NULL);
}
@@ -1306,11 +1110,7 @@ xmlSecSoap12GetFaultEntry(xmlNodePtr envNode) {
/* get Body node */
bodyNode = xmlSecSoap12GetBody(envNode);
if(bodyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecSoap12GetBody",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecSoap12GetBody", NULL);
return(NULL);
}
diff --git a/src/strings.c b/src/strings.c
index 8a621330..b4324c59 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * All the string constants.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:strings
+ * @Short_description: The strings constants.
+ * @Stability: Private
+ *
+ */
#include "globals.h"
#include <libxml/tree.h>
@@ -108,6 +113,15 @@ const xmlChar xmlSecHrefAes192Cbc[] = "http://www.w3.org/2001/04/xml
const xmlChar xmlSecNameAes256Cbc[] = "aes256-cbc";
const xmlChar xmlSecHrefAes256Cbc[] = "http://www.w3.org/2001/04/xmlenc#aes256-cbc";
+const xmlChar xmlSecNameAes128Gcm[] = "aes128-gcm";
+const xmlChar xmlSecHrefAes128Gcm[] = "http://www.w3.org/2009/xmlenc11#aes128-gcm";
+
+const xmlChar xmlSecNameAes192Gcm[] = "aes192-gcm";
+const xmlChar xmlSecHrefAes192Gcm[] = "http://www.w3.org/2009/xmlenc11#aes192-gcm";
+
+const xmlChar xmlSecNameAes256Gcm[] = "aes256-gcm";
+const xmlChar xmlSecHrefAes256Gcm[] = "http://www.w3.org/2009/xmlenc11#aes256-gcm";
+
const xmlChar xmlSecNameKWAes128[] = "kw-aes128";
const xmlChar xmlSecHrefKWAes128[] = "http://www.w3.org/2001/04/xmlenc#kw-aes128";
diff --git a/src/templates.c b/src/templates.c
index 88bed3dd..d0120161 100644
--- a/src/templates.c
+++ b/src/templates.c
@@ -1,13 +1,18 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Creating signature and encryption templates.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:templates
+ * @Short_description: XML signature and encryption template functions.
+ * @Stability: Stable
+ *
+ */
#include "globals.h"
#include <stdlib.h>
@@ -103,23 +108,15 @@ xmlSecTmplSignatureCreateNsPref(xmlDocPtr doc, xmlSecTransformId c14nMethodId,
/* create Signature node itself */
signNode = xmlNewDocNode(doc, NULL, xmlSecNodeSignature, NULL);
if(signNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDocNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignature));
+ xmlSecXmlError2("xmlNewDocNode", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeSignature));
return(NULL);
}
ns = xmlNewNs(signNode, xmlSecDSigNs, nsPrefix);
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "ns=%s",
- xmlSecErrorsSafeString(xmlSecDSigNs));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "ns=%s", xmlSecErrorsSafeString(xmlSecDSigNs));
xmlFreeNode(signNode);
return(NULL);
}
@@ -132,12 +129,7 @@ xmlSecTmplSignatureCreateNsPref(xmlDocPtr doc, xmlSecTransformId c14nMethodId,
/* add SignedInfo node */
signedInfoNode = xmlSecAddChild(signNode, xmlSecNodeSignedInfo, xmlSecDSigNs);
if(signedInfoNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignedInfo));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeSignedInfo)", NULL);
xmlFreeNode(signNode);
return(NULL);
}
@@ -145,36 +137,21 @@ xmlSecTmplSignatureCreateNsPref(xmlDocPtr doc, xmlSecTransformId c14nMethodId,
/* add SignatureValue node */
cur = xmlSecAddChild(signNode, xmlSecNodeSignatureValue, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignatureValue));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeSignatureValue)", NULL);
xmlFreeNode(signNode);
return(NULL);
}
- /* add CanonicaizationMethod node to SignedInfo */
+ /* add CanonicalizationMethod node to SignedInfo */
cur = xmlSecAddChild(signedInfoNode, xmlSecNodeCanonicalizationMethod, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCanonicalizationMethod));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeCanonicalizationMethod)", NULL);
xmlFreeNode(signNode);
return(NULL);
}
if(xmlSetProp(cur, xmlSecAttrAlgorithm, c14nMethodId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(c14nMethodId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlFreeNode(signNode);
return(NULL);
}
@@ -182,23 +159,13 @@ xmlSecTmplSignatureCreateNsPref(xmlDocPtr doc, xmlSecTransformId c14nMethodId,
/* add SignatureMethod node to SignedInfo */
cur = xmlSecAddChild(signedInfoNode, xmlSecNodeSignatureMethod, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignatureMethod));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeSignatureMethod)", NULL);
xmlFreeNode(signNode);
return(NULL);
}
if(xmlSetProp(cur, xmlSecAttrAlgorithm, signMethodId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(signMethodId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlFreeNode(signNode);
return(NULL);
}
@@ -229,22 +196,14 @@ xmlSecTmplSignatureEnsureKeyInfo(xmlNodePtr signNode, const xmlChar *id) {
signValueNode = xmlSecFindChild(signNode, xmlSecNodeSignatureValue, xmlSecDSigNs);
if(signValueNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeSignatureValue),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", signNode,
+ xmlSecNodeSignatureValue, NULL);
return(NULL);
}
res = xmlSecAddNextSibling(signValueNode, xmlSecNodeKeyInfo, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddNextSibling",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError("xmlSecAddNextSibling(xmlSecNodeKeyInfo)", NULL);
return(NULL);
}
}
@@ -280,11 +239,8 @@ xmlSecTmplSignatureAddReference(xmlNodePtr signNode, xmlSecTransformId digestMet
signedInfoNode = xmlSecFindChild(signNode, xmlSecNodeSignedInfo, xmlSecDSigNs);
if(signedInfoNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeSignedInfo),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", signNode,
+ xmlSecNodeSignedInfo, NULL);
return(NULL);
}
@@ -304,12 +260,7 @@ xmlSecTmplAddReference(xmlNodePtr parentNode, xmlSecTransformId digestMethodId,
/* add Reference node */
res = xmlSecAddChild(parentNode, xmlSecNodeReference, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeReference));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeReference)", NULL);
return(NULL);
}
@@ -327,24 +278,14 @@ xmlSecTmplAddReference(xmlNodePtr parentNode, xmlSecTransformId digestMethodId,
/* add DigestMethod node and set algorithm */
cur = xmlSecAddChild(res, xmlSecNodeDigestMethod, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDigestMethod));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeDigestMethod)", NULL);
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
}
if(xmlSetProp(cur, xmlSecAttrAlgorithm, digestMethodId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(digestMethodId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -353,12 +294,7 @@ xmlSecTmplAddReference(xmlNodePtr parentNode, xmlSecTransformId digestMethodId,
/* add DigestValue node */
cur = xmlSecAddChild(res, xmlSecNodeDigestValue, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDigestValue));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeDigestValue)", NULL);
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -388,12 +324,7 @@ xmlSecTmplSignatureAddObject(xmlNodePtr signNode, const xmlChar *id,
res = xmlSecAddChild(signNode, xmlSecNodeObject, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeObject));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeObject)", NULL);
return(NULL);
}
if(id != NULL) {
@@ -424,11 +355,8 @@ xmlSecTmplSignatureGetSignMethodNode(xmlNodePtr signNode) {
signedInfoNode = xmlSecFindChild(signNode, xmlSecNodeSignedInfo, xmlSecDSigNs);
if(signedInfoNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeSignedInfo),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", signNode,
+ xmlSecNodeSignedInfo, NULL);
return(NULL);
}
return(xmlSecFindChild(signedInfoNode, xmlSecNodeSignatureMethod, xmlSecDSigNs));
@@ -450,11 +378,8 @@ xmlSecTmplSignatureGetC14NMethodNode(xmlNodePtr signNode) {
signedInfoNode = xmlSecFindChild(signNode, xmlSecNodeSignedInfo, xmlSecDSigNs);
if(signedInfoNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeSignedInfo),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", signNode,
+ xmlSecNodeSignedInfo, NULL);
return(NULL);
}
return(xmlSecFindChild(signedInfoNode, xmlSecNodeCanonicalizationMethod, xmlSecDSigNs));
@@ -487,39 +412,28 @@ xmlSecTmplReferenceAddTransform(xmlNodePtr referenceNode, xmlSecTransformId tran
tmp = xmlSecGetNextElementNode(referenceNode->children);
if(tmp == NULL) {
transformsNode = xmlSecAddChild(referenceNode, xmlSecNodeTransforms, xmlSecDSigNs);
+ if(transformsNode == NULL) {
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransforms)", NULL);
+ return(NULL);
+ }
} else {
transformsNode = xmlSecAddPrevSibling(tmp, xmlSecNodeTransforms, xmlSecDSigNs);
- }
- if(transformsNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild or xmlSecAddPrevSibling",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransforms));
- return(NULL);
+ if(transformsNode == NULL) {
+ xmlSecInternalError("xmlSecAddPrevSibling(xmlSecNodeTransforms)", NULL);
+ return(NULL);
+ }
}
}
res = xmlSecAddChild(transformsNode, xmlSecNodeTransform, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransform));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransform)", NULL);
return(NULL);
}
if(xmlSetProp(res, xmlSecAttrAlgorithm, transformId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(transformId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -547,12 +461,7 @@ xmlSecTmplObjectAddSignProperties(xmlNodePtr objectNode, const xmlChar *id, cons
res = xmlSecAddChild(objectNode, xmlSecNodeSignatureProperties, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignatureProperties));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeSignatureProperties)", NULL);
return(NULL);
}
if(id != NULL) {
@@ -582,12 +491,7 @@ xmlSecTmplObjectAddManifest(xmlNodePtr objectNode, const xmlChar *id) {
res = xmlSecAddChild(objectNode, xmlSecNodeManifest, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeManifest));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeManifest)", NULL);
return(NULL);
}
if(id != NULL) {
@@ -647,23 +551,15 @@ xmlSecTmplEncDataCreate(xmlDocPtr doc, xmlSecTransformId encMethodId,
encNode = xmlNewDocNode(doc, NULL, xmlSecNodeEncryptedData, NULL);
if(encNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDocNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptedData));
+ xmlSecXmlError2("xmlNewDocNode", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeEncryptedData));
return(NULL);
}
ns = xmlNewNs(encNode, xmlSecEncNs, NULL);
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "ns=%s",
- xmlSecErrorsSafeString(xmlSecEncNs));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "ns=%s", xmlSecErrorsSafeString(xmlSecEncNs));
return(NULL);
}
xmlSetNs(encNode, ns);
@@ -699,22 +595,12 @@ xmlSecTmplPrepareEncData(xmlNodePtr parentNode, xmlSecTransformId encMethodId) {
if(encMethodId != NULL) {
cur = xmlSecAddChild(parentNode, xmlSecNodeEncryptionMethod, xmlSecEncNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptionMethod));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeEncryptionMethod)", NULL);
return(-1);
}
if(xmlSetProp(cur, xmlSecAttrAlgorithm, encMethodId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(encMethodId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
return(-1);
}
}
@@ -722,12 +608,7 @@ xmlSecTmplPrepareEncData(xmlNodePtr parentNode, xmlSecTransformId encMethodId) {
/* and CipherData node */
cur = xmlSecAddChild(parentNode, xmlSecNodeCipherData, xmlSecEncNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCipherData));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeCipherData)", NULL);
return(-1);
}
@@ -757,22 +638,14 @@ xmlSecTmplEncDataEnsureKeyInfo(xmlNodePtr encNode, const xmlChar* id) {
cipherDataNode = xmlSecFindChild(encNode, xmlSecNodeCipherData, xmlSecEncNs);
if(cipherDataNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeCipherData),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", encNode,
+ xmlSecNodeCipherData, NULL);
return(NULL);
}
res = xmlSecAddPrevSibling(cipherDataNode, xmlSecNodeKeyInfo, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddPrevSibling",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyInfo));
+ xmlSecInternalError("xmlSecAddPrevSibling(xmlSecNodeKeyInfo)", NULL);
return(NULL);
}
}
@@ -803,12 +676,7 @@ xmlSecTmplEncDataEnsureEncProperties(xmlNodePtr encNode, const xmlChar *id) {
if(res == NULL) {
res = xmlSecAddChild(encNode, xmlSecNodeEncryptionProperties, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptionProperties));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeEncryptionProperties)", NULL);
return(NULL);
}
}
@@ -842,22 +710,13 @@ xmlSecTmplEncDataAddEncProperty(xmlNodePtr encNode, const xmlChar *id, const xml
encProps = xmlSecTmplEncDataEnsureEncProperties(encNode, NULL);
if(encProps == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTmplEncDataEnsureEncProperties",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTmplEncDataEnsureEncProperties", NULL);
return(NULL);
}
res = xmlSecAddChild(encProps, xmlSecNodeEncryptionProperty, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptionProperty));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeEncryptionProperty)", NULL);
return(NULL);
}
if(id != NULL) {
@@ -888,22 +747,15 @@ xmlSecTmplEncDataEnsureCipherValue(xmlNodePtr encNode) {
cipherDataNode = xmlSecFindChild(encNode, xmlSecNodeCipherData, xmlSecEncNs);
if(cipherDataNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeCipherData),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", encNode,
+ xmlSecNodeCipherData, NULL);
return(NULL);
}
/* check that we don;t have CipherReference node */
tmp = xmlSecFindChild(cipherDataNode, xmlSecNodeCipherReference, xmlSecEncNs);
if(tmp != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeCipherReference),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(cipherDataNode, xmlSecNodeCipherReference, NULL);
return(NULL);
}
@@ -911,12 +763,7 @@ xmlSecTmplEncDataEnsureCipherValue(xmlNodePtr encNode) {
if(res == NULL) {
res = xmlSecAddChild(cipherDataNode, xmlSecNodeCipherValue, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCipherValue));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeCipherValue)", NULL);
return(NULL);
}
}
@@ -944,22 +791,15 @@ xmlSecTmplEncDataEnsureCipherReference(xmlNodePtr encNode, const xmlChar *uri) {
cipherDataNode = xmlSecFindChild(encNode, xmlSecNodeCipherData, xmlSecEncNs);
if(cipherDataNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeCipherData),
- XMLSEC_ERRORS_R_NODE_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeNotFoundError("xmlSecFindChild", encNode,
+ xmlSecNodeCipherData, NULL);
return(NULL);
}
/* check that we don;t have CipherValue node */
tmp = xmlSecFindChild(cipherDataNode, xmlSecNodeCipherValue, xmlSecEncNs);
if(tmp != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeCipherValue),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(cipherDataNode, xmlSecNodeCipherValue, NULL);
return(NULL);
}
@@ -967,12 +807,7 @@ xmlSecTmplEncDataEnsureCipherReference(xmlNodePtr encNode, const xmlChar *uri) {
if(res == NULL) {
res = xmlSecAddChild(cipherDataNode, xmlSecNodeCipherReference, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCipherReference));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeCipherReference)", NULL);
return(NULL);
}
}
@@ -988,7 +823,7 @@ xmlSecTmplEncDataEnsureCipherReference(xmlNodePtr encNode, const xmlChar *uri) {
* xmlSecTmplEncDataGetEncMethodNode:
* @encNode: the pointer to <enc:EcnryptedData /> node.
*
- * Gets pointer to <enc:EncrytpionMethod/> node.
+ * Gets pointer to <enc:EncryptionMethod/> node.
*
* Returns: pointer to <enc:EncryptionMethod /> node or NULL if an error occurs.
*/
@@ -1025,35 +860,20 @@ xmlSecTmplCipherReferenceAddTransform(xmlNodePtr cipherReferenceNode,
if(transformsNode == NULL) {
transformsNode = xmlSecAddChild(cipherReferenceNode, xmlSecNodeTransforms, xmlSecEncNs);
if(transformsNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransforms));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransforms)", NULL);
return(NULL);
}
}
res = xmlSecAddChild(transformsNode, xmlSecNodeTransform, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransform));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransform)", NULL);
return(NULL);
}
if(xmlSetProp(res, xmlSecAttrAlgorithm, transformId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(transformId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -1089,36 +909,21 @@ xmlSecTmplReferenceListAddDataReference(xmlNodePtr encNode, const xmlChar *uri)
if(refListNode == NULL) {
refListNode = xmlSecAddChild(encNode, xmlSecNodeReferenceList, xmlSecEncNs);
if(refListNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeReferenceList));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeReferenceList)", NULL);
return(NULL);
}
}
res = xmlSecAddChild(refListNode, xmlSecNodeDataReference, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDataReference));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeDataReference)", NULL);
return(NULL);
}
if(uri != NULL) {
if(xmlSetProp(res, xmlSecAttrURI, uri) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrURI),
- xmlSecErrorsSafeString(uri));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrURI));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -1148,36 +953,21 @@ xmlSecTmplReferenceListAddKeyReference(xmlNodePtr encNode, const xmlChar *uri) {
if(refListNode == NULL) {
refListNode = xmlSecAddChild(encNode, xmlSecNodeReferenceList, xmlSecEncNs);
if(refListNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeReferenceList));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeReferenceList)", NULL);
return(NULL);
}
}
res = xmlSecAddChild(refListNode, xmlSecNodeKeyReference, xmlSecEncNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyReference));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeKeyReference)", NULL);
return(NULL);
}
if(uri != NULL) {
if(xmlSetProp(res, xmlSecAttrURI, uri) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrURI),
- xmlSecErrorsSafeString(uri));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrURI));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -1207,21 +997,21 @@ xmlSecTmplReferenceListAddKeyReference(xmlNodePtr encNode, const xmlChar *uri) {
xmlNodePtr
xmlSecTmplKeyInfoAddKeyName(xmlNodePtr keyInfoNode, const xmlChar* name) {
xmlNodePtr res;
+ int ret;
xmlSecAssert2(keyInfoNode != NULL, NULL);
res = xmlSecAddChild(keyInfoNode, xmlSecNodeKeyName, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyName));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeKeyName)", NULL);
return(NULL);
}
if(name != NULL) {
- xmlSecNodeEncodeAndSetContent(res, name);
+ ret = xmlSecNodeEncodeAndSetContent(res, name);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(NULL);
+ }
}
return(res);
}
@@ -1243,12 +1033,7 @@ xmlSecTmplKeyInfoAddKeyValue(xmlNodePtr keyInfoNode) {
res = xmlSecAddChild(keyInfoNode, xmlSecNodeKeyValue, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeKeyValue));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeKeyValue)", NULL);
return(NULL);
}
@@ -1272,12 +1057,7 @@ xmlSecTmplKeyInfoAddX509Data(xmlNodePtr keyInfoNode) {
res = xmlSecAddChild(keyInfoNode, xmlSecNodeX509Data, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Data));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509Data)", NULL);
return(NULL);
}
@@ -1304,12 +1084,7 @@ xmlSecTmplKeyInfoAddRetrievalMethod(xmlNodePtr keyInfoNode, const xmlChar *uri,
res = xmlSecAddChild(keyInfoNode, xmlSecNodeRetrievalMethod, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRetrievalMethod));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeRetrievalMethod)", NULL);
return(NULL);
}
@@ -1346,35 +1121,20 @@ xmlSecTmplRetrievalMethodAddTransform(xmlNodePtr retrMethodNode, xmlSecTransform
if(transformsNode == NULL) {
transformsNode = xmlSecAddChild(retrMethodNode, xmlSecNodeTransforms, xmlSecDSigNs);
if(transformsNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransforms));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransforms)", NULL);
return(NULL);
}
}
res = xmlSecAddChild(transformsNode, xmlSecNodeTransform, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeTransform));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeTransform)", NULL);
return(NULL);
}
if(xmlSetProp(res, xmlSecAttrAlgorithm, transformId->href) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "name=%s,value=%s",
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- xmlSecErrorsSafeString(transformId->href));
+ xmlSecXmlError2("xmlSetProp", NULL,
+ "name=%s", xmlSecErrorsSafeString(xmlSecAttrAlgorithm));
xmlUnlinkNode(res);
xmlFreeNode(res);
return(NULL);
@@ -1408,12 +1168,7 @@ xmlSecTmplKeyInfoAddEncryptedKey(xmlNodePtr keyInfoNode, xmlSecTransformId encMe
/* we allow multiple encrypted key elements */
encKeyNode = xmlSecAddChild(keyInfoNode, xmlSecNodeEncryptedKey, xmlSecEncNs);
if(encKeyNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptedKey));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeEncryptedKey)", NULL);
return(NULL);
}
@@ -1458,22 +1213,13 @@ xmlSecTmplX509DataAddIssuerSerial(xmlNodePtr x509DataNode) {
cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(x509DataNode, xmlSecNodeX509IssuerSerial, NULL);
return(NULL);
}
cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509IssuerSerial)", NULL);
return(NULL);
}
@@ -1492,35 +1238,29 @@ xmlSecTmplX509DataAddIssuerSerial(xmlNodePtr x509DataNode) {
*/
xmlNodePtr
xmlSecTmplX509IssuerSerialAddIssuerName(xmlNodePtr x509IssuerSerialNode, const xmlChar* issuerName) {
- xmlNodePtr res;
-
- xmlSecAssert2(x509IssuerSerialNode != NULL, NULL);
+ xmlNodePtr res;
+ int ret;
- if(xmlSecFindChild(x509IssuerSerialNode, xmlSecNodeX509IssuerName,
- xmlSecDSigNs) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecAssert2(x509IssuerSerialNode != NULL, NULL);
+ if(xmlSecFindChild(x509IssuerSerialNode, xmlSecNodeX509IssuerName, xmlSecDSigNs) != NULL) {
+ xmlSecNodeAlreadyPresentError(x509IssuerSerialNode, xmlSecNodeX509IssuerName, NULL);
return(NULL);
- }
+ }
- res = xmlSecAddChild(x509IssuerSerialNode, xmlSecNodeX509IssuerName, xmlSecDSigNs);
+ res = xmlSecAddChild(x509IssuerSerialNode, xmlSecNodeX509IssuerName, xmlSecDSigNs);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509IssuerName));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509IssuerName)", NULL);
return(NULL);
}
- if (issuerName != NULL) {
- xmlSecNodeEncodeAndSetContent(res, issuerName);
- }
- return(res);
+ if (issuerName != NULL) {
+ ret = xmlSecNodeEncodeAndSetContent(res, issuerName);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(NULL);
+ }
+ }
+ return(res);
}
/**
@@ -1535,35 +1275,30 @@ xmlSecTmplX509IssuerSerialAddIssuerName(xmlNodePtr x509IssuerSerialNode, const x
*/
xmlNodePtr
xmlSecTmplX509IssuerSerialAddSerialNumber(xmlNodePtr x509IssuerSerialNode, const xmlChar* serial) {
- xmlNodePtr res;
+ xmlNodePtr res;
+ int ret;
- xmlSecAssert2(x509IssuerSerialNode != NULL, NULL);
+ xmlSecAssert2(x509IssuerSerialNode != NULL, NULL);
- if(xmlSecFindChild(x509IssuerSerialNode, xmlSecNodeX509SerialNumber,
- xmlSecDSigNs) != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(NULL);
- }
+ if(xmlSecFindChild(x509IssuerSerialNode, xmlSecNodeX509SerialNumber, xmlSecDSigNs) != NULL) {
+ xmlSecNodeAlreadyPresentError(x509IssuerSerialNode, xmlSecNodeX509SerialNumber, NULL);
+ return(NULL);
+ }
- res = xmlSecAddChild(x509IssuerSerialNode, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
- if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SerialNumber));
- return(NULL);
- }
+ res = xmlSecAddChild(x509IssuerSerialNode, xmlSecNodeX509SerialNumber, xmlSecDSigNs);
+ if(res == NULL) {
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509SerialNumber)", NULL);
+ return(NULL);
+ }
- if (serial != NULL) {
- xmlSecNodeEncodeAndSetContent(res, serial);
+ if (serial != NULL) {
+ ret = xmlSecNodeEncodeAndSetContent(res, serial);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(NULL);
}
- return(res);
+ }
+ return(res);
}
/**
@@ -1584,22 +1319,13 @@ xmlSecTmplX509DataAddSubjectName(xmlNodePtr x509DataNode) {
cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(x509DataNode, xmlSecNodeX509SubjectName, NULL);
return(NULL);
}
cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509SubjectName, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509SubjectName)", NULL);
return(NULL);
}
@@ -1624,22 +1350,13 @@ xmlSecTmplX509DataAddSKI(xmlNodePtr x509DataNode) {
cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509SKI),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(x509DataNode, xmlSecNodeX509SKI, NULL);
return(NULL);
}
cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509SKI, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509SKI)", NULL);
return(NULL);
}
@@ -1665,22 +1382,13 @@ xmlSecTmplX509DataAddCertificate(xmlNodePtr x509DataNode) {
cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(x509DataNode, xmlSecNodeX509Certificate, NULL);
return(NULL);
}
cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509Certificate, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509Certificate)", NULL);
return(NULL);
}
@@ -1705,22 +1413,13 @@ xmlSecTmplX509DataAddCRL(xmlNodePtr x509DataNode) {
cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeX509CRL),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(x509DataNode, xmlSecNodeX509CRL, NULL);
return(NULL);
}
cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509CRL, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeX509CRL)", NULL);
return(NULL);
}
@@ -1741,38 +1440,33 @@ xmlSecTmplX509DataAddCRL(xmlNodePtr x509DataNode) {
* Creates <dsig:HMACOutputLength/> child for the HMAC transform
* node @node.
*
- * Returns: 0 on success and a negatie value otherwise.
+ * Returns: 0 on success and a negative value otherwise.
*/
int
xmlSecTmplTransformAddHmacOutputLength(xmlNodePtr transformNode, xmlSecSize bitsLen) {
xmlNodePtr cur;
- char buf[32];
+ char buf[64];
xmlSecAssert2(transformNode != NULL, -1);
xmlSecAssert2(bitsLen > 0, -1);
cur = xmlSecFindChild(transformNode, xmlSecNodeHMACOutputLength, xmlSecDSigNs);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeHMACOutputLength),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(transformNode, xmlSecNodeHMACOutputLength, NULL);
return(-1);
}
cur = xmlSecAddChild(transformNode, xmlSecNodeHMACOutputLength, xmlSecDSigNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeHMACOutputLength));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeHMACOutputLength)", NULL);
return(-1);
}
- snprintf(buf, sizeof(buf), "%u", bitsLen);
+#ifdef WIN32
+ sprintf_s(buf, sizeof(buf), "%lu", (unsigned long)bitsLen);
+#else /* WIN32 */
+ sprintf(buf, "%lu", (unsigned long)bitsLen);
+#endif /* WIN32 */
xmlNodeSetContent(cur, BAD_CAST buf);
return(0);
}
@@ -1799,32 +1493,19 @@ xmlSecTmplTransformAddRsaOaepParam(xmlNodePtr transformNode,
oaepParamNode = xmlSecFindChild(transformNode, xmlSecNodeRsaOAEPparams, xmlSecEncNs);
if(oaepParamNode != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeRsaOAEPparams),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(transformNode, xmlSecNodeRsaOAEPparams, NULL);
return(-1);
}
oaepParamNode = xmlSecAddChild(transformNode, xmlSecNodeRsaOAEPparams, xmlSecEncNs);
if(oaepParamNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeRsaOAEPparams));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeRsaOAEPparams)", NULL);
return(-1);
}
base64 = xmlSecBase64Encode(buf, size, 0);
if(base64 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", size);
+ xmlSecInternalError2("xmlSecBase64Encode", NULL, "size=%d", size);
return(-1);
}
@@ -1836,7 +1517,7 @@ xmlSecTmplTransformAddRsaOaepParam(xmlNodePtr transformNode,
/**
* xmlSecTmplTransformAddXsltStylesheet:
* @transformNode: the pointer to <dsig:Transform/> node.
- * @xslt: the XSLT transform exspression.
+ * @xslt: the XSLT transform expression.
*
* Writes the XSLT transform expression to the @node.
*
@@ -1852,21 +1533,13 @@ xmlSecTmplTransformAddXsltStylesheet(xmlNodePtr transformNode, const xmlChar *xs
xsltDoc = xmlParseMemory((const char*)xslt, xmlStrlen(xslt));
if(xsltDoc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseMemory",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlParseMemory", NULL);
return(-1);
}
ret = xmlSecReplaceContent(transformNode, xmlDocGetRootElement(xsltDoc));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecReplaceContent", NULL);
xmlFreeDoc(xsltDoc);
return(-1);
}
@@ -1896,22 +1569,14 @@ xmlSecTmplTransformAddC14NInclNamespaces(xmlNodePtr transformNode,
cur = xmlSecFindChild(transformNode, xmlSecNodeInclusiveNamespaces, xmlSecNsExcC14N);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeInclusiveNamespaces),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(transformNode, xmlSecNodeInclusiveNamespaces, NULL);
return(-1);
}
cur = xmlSecAddChild(transformNode, xmlSecNodeInclusiveNamespaces, xmlSecNsExcC14N);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecNodeGetName(transformNode)),
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeInclusiveNamespaces));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeInclusiveNamespaces)",
+ xmlSecNodeGetName(transformNode));
return(-1);
}
@@ -1926,7 +1591,7 @@ xmlSecTmplTransformAddC14NInclNamespaces(xmlNodePtr transformNode,
* @nsList: the NULL terminated list of namespace prefix/href pairs
* (optional).
*
- * Writes XPath transform infromation to the <dsig:Transform/> node
+ * Writes XPath transform information to the <dsig:Transform/> node
* @node.
*
* Returns: 0 for success or a negative value otherwise.
@@ -1935,32 +1600,29 @@ int
xmlSecTmplTransformAddXPath(xmlNodePtr transformNode, const xmlChar *expression,
const xmlChar **nsList) {
xmlNodePtr xpathNode;
+ int ret;
xmlSecAssert2(transformNode != NULL, -1);
xmlSecAssert2(expression != NULL, -1);
xpathNode = xmlSecFindChild(transformNode, xmlSecNodeXPath, xmlSecDSigNs);
if(xpathNode != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeXPath),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(transformNode, xmlSecNodeXPath, NULL);
return(-1);
}
xpathNode = xmlSecAddChild(transformNode, xmlSecNodeXPath, xmlSecDSigNs);
if(xpathNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeXPath));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeXPath)", NULL);
+ return(-1);
+ }
+
+ ret = xmlSecNodeEncodeAndSetContent(xpathNode, expression);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
return(-1);
}
- xmlSecNodeEncodeAndSetContent(xpathNode, expression);
return((nsList != NULL) ? xmlSecTmplNodeWriteNsList(xpathNode, nsList) : 0);
}
@@ -1972,7 +1634,7 @@ xmlSecTmplTransformAddXPath(xmlNodePtr transformNode, const xmlChar *expression,
* @nsList: the NULL terminated list of namespace prefix/href pairs.
* (optional).
*
- * Writes XPath2 transform infromation to the <dsig:Transform/> node
+ * Writes XPath2 transform information to the <dsig:Transform/> node
* @node.
*
* Returns: 0 for success or a negative value otherwise.
@@ -1981,6 +1643,7 @@ int
xmlSecTmplTransformAddXPath2(xmlNodePtr transformNode, const xmlChar* type,
const xmlChar *expression, const xmlChar **nsList) {
xmlNodePtr xpathNode;
+ int ret;
xmlSecAssert2(transformNode != NULL, -1);
xmlSecAssert2(type != NULL, -1);
@@ -1988,17 +1651,17 @@ xmlSecTmplTransformAddXPath2(xmlNodePtr transformNode, const xmlChar* type,
xpathNode = xmlSecAddChild(transformNode, xmlSecNodeXPath, xmlSecXPath2Ns);
if(xpathNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeXPath));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeXPath)", NULL);
return(-1);
}
xmlSetProp(xpathNode, xmlSecAttrFilter, type);
- xmlSecNodeEncodeAndSetContent(xpathNode, expression);
+ ret = xmlSecNodeEncodeAndSetContent(xpathNode, expression);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(-1);
+ }
+
return((nsList != NULL) ? xmlSecTmplNodeWriteNsList(xpathNode, nsList) : 0);
}
@@ -2009,7 +1672,7 @@ xmlSecTmplTransformAddXPath2(xmlNodePtr transformNode, const xmlChar* type,
* @nsList: the NULL terminated list of namespace prefix/href pairs.
* (optional).
*
- * Writes XPoniter transform infromation to the <dsig:Transform/> node
+ * Writes XPointer transform information to the <dsig:Transform/> node
* @node.
*
* Returns: 0 for success or a negative value otherwise.
@@ -2018,33 +1681,29 @@ int
xmlSecTmplTransformAddXPointer(xmlNodePtr transformNode, const xmlChar *expression,
const xmlChar **nsList) {
xmlNodePtr xpointerNode;
+ int ret;
xmlSecAssert2(expression != NULL, -1);
xmlSecAssert2(transformNode != NULL, -1);
xpointerNode = xmlSecFindChild(transformNode, xmlSecNodeXPointer, xmlSecXPointerNs);
if(xpointerNode != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeXPointer),
- XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNodeAlreadyPresentError(transformNode, xmlSecNodeXPointer, NULL);
return(-1);
}
xpointerNode = xmlSecAddChild(transformNode, xmlSecNodeXPointer, xmlSecXPointerNs);
if(xpointerNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeXPointer));
+ xmlSecInternalError("xmlSecAddChild(xmlSecNodeXPointer)", NULL);
return(-1);
}
+ ret = xmlSecNodeEncodeAndSetContent(xpointerNode, expression);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecNodeEncodeAndSetContent", NULL);
+ return(-1);
+ }
- xmlSecNodeEncodeAndSetContent(xpointerNode, expression);
return((nsList != NULL) ? xmlSecTmplNodeWriteNsList(xpointerNode, nsList) : 0);
}
@@ -2058,34 +1717,32 @@ xmlSecTmplNodeWriteNsList(xmlNodePtr parentNode, const xmlChar** nsList) {
xmlSecAssert2(parentNode != NULL, -1);
xmlSecAssert2(nsList != NULL, -1);
+ /* nsList contains pairs of prefix/href with NULL at the end. We use special
+ "#default" prefix instead of NULL prefix */
ptr = nsList;
while((*ptr) != NULL) {
+ /* get next prefix/href pair */
if(xmlStrEqual(BAD_CAST "#default", (*ptr))) {
prefix = NULL;
} else {
prefix = (*ptr);
}
- if(*(++ptr) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "unexpected end of ns list");
+ href = *(++ptr);
+ if(href == NULL) {
+ xmlSecInvalidDataError("unexpected end of ns list", NULL);
return(-1);
}
- href = *(ptr++);
+ /* create namespace node */
ns = xmlNewNs(parentNode, href, prefix);
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "href=%s;prefix=%s",
- xmlSecErrorsSafeString(href),
- xmlSecErrorsSafeString(prefix));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "prefix=%s", xmlSecErrorsSafeString(prefix));
return(-1);
}
+
+ /* next pair */
+ ++ptr;
}
return(0);
}
diff --git a/src/transforms.c b/src/transforms.c
index 2761929f..4ce95238 100644
--- a/src/transforms.c
+++ b/src/transforms.c
@@ -1,14 +1,24 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * The Transforms Element (http://www.w3.org/TR/xmldsig-core/#sec-Transforms)
*
- * The optional Transforms element contains an ordered list of Transform
- * elements; these describe how the signer obtained the data object that
- * was digested.
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ */
+/**
+ * SECTION:transforms
+ * @Short_description: Transform object functions.
+ * @Stability: Stable
+ *
+ * The [Transforms Element](http://www.w3.org/TR/xmldsig-core/#sec-Transforms)
+ * contains an ordered list of Transform elements; these describe how the signer
+ * obtained the data object that was digested.
*
* Schema Definition:
*
+ * |[<!-- language="XML" -->
* <element name="Transforms" type="ds:TransformsType"/>
* <complexType name="TransformsType">
* <sequence>
@@ -25,18 +35,16 @@
* </choice>
* <attribute name="Algorithm" type="anyURI" use="required"/>
* </complexType>
+ * ]|
*
* DTD:
*
+ * |[<!-- language="XML" -->
* <!ELEMENT Transforms (Transform+)>
* <!ELEMENT Transform (#PCDATA|XPath %Transform.ANY;)* >
* <!ATTLIST Transform Algorithm CDATA #REQUIRED >
* <!ELEMENT XPath (#PCDATA) >
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
+ * ]|
*/
#include "globals.h"
@@ -97,21 +105,13 @@ xmlSecTransformIdsInit(void) {
ret = xmlSecPtrListInitialize(xmlSecTransformIdsGet(), xmlSecTransformIdListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListPtrInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecTransformIdListId");
+ xmlSecInternalError("xmlSecPtrListInitialize(xmlSecTransformIdListId)", NULL);
return(-1);
}
ret = xmlSecTransformIdsRegisterDefault();
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegisterDefault",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsRegisterDefault", NULL);
return(-1);
}
@@ -153,12 +153,8 @@ xmlSecTransformIdsRegister(xmlSecTransformId id) {
ret = xmlSecPtrListAdd(xmlSecTransformIdsGet(), (xmlSecPtr)id);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformKlassGetName(id));
return(-1);
}
@@ -176,129 +172,64 @@ xmlSecTransformIdsRegister(xmlSecTransformId id) {
int
xmlSecTransformIdsRegisterDefault(void) {
if(xmlSecTransformIdsRegister(xmlSecTransformBase64Id) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformBase64Id)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformBase64Id)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformEnvelopedId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformEnvelopedId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformEnvelopedId)", NULL);
return(-1);
}
/* c14n methods */
if(xmlSecTransformIdsRegister(xmlSecTransformInclC14NId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformInclC14NId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformInclC14NWithCommentsId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NWithCommentsId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformInclC14NWithCommentsId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformInclC14N11Id) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14N11Id)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformInclC14N11Id)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformInclC14N11WithCommentsId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14N11WithCommentsId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformInclC14N11WithCommentsId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformExclC14NId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformExclC14NId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformExclC14NId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformExclC14NWithCommentsId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformExclC14NWithCommentsId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformExclC14NWithCommentsId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformXPathId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPathId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformXPathId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformXPath2Id) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPath2Id)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformXPath2Id)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformXPointerId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPointerId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformXPointerId)", NULL);
return(-1);
}
if(xmlSecTransformIdsRegister(xmlSecTransformRelationshipId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformRelationshipId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformRelationshipId)", NULL);
return(-1);
}
#ifndef XMLSEC_NO_XSLT
if(xmlSecTransformIdsRegister(xmlSecTransformXsltId) < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsRegister",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXsltId)));
+ xmlSecInternalError("xmlSecTransformIdsRegister(xmlSecTransformXsltId)", NULL);
return(-1);
}
#endif /* XMLSEC_NO_XSLT */
@@ -361,21 +292,13 @@ xmlSecTransformCtxCreate(void) {
/* Allocate a new xmlSecTransform and fill the fields. */
ctx = (xmlSecTransformCtxPtr)xmlMalloc(sizeof(xmlSecTransformCtx));
if(ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)sizeof(xmlSecTransformCtx));
+ xmlSecMallocError(sizeof(xmlSecTransformCtx), NULL);
return(NULL);
}
ret = xmlSecTransformCtxInitialize(ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxInitialize", NULL);
xmlSecTransformCtxDestroy(ctx);
return(NULL);
}
@@ -417,11 +340,7 @@ xmlSecTransformCtxInitialize(xmlSecTransformCtxPtr ctx) {
ret = xmlSecPtrListInitialize(&(ctx->enabledTransforms), xmlSecTransformIdListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize(xmlSecTransformIdListId)", NULL);
return(-1);
}
@@ -448,7 +367,7 @@ xmlSecTransformCtxFinalize(xmlSecTransformCtxPtr ctx) {
* xmlSecTransformCtxReset:
* @ctx: the pointer to transforms chain processing context.
*
- * Resets transfroms context for new processing.
+ * Resets transforms context for new processing.
*/
void
xmlSecTransformCtxReset(xmlSecTransformCtxPtr ctx) {
@@ -501,11 +420,7 @@ xmlSecTransformCtxCopyUserPref(xmlSecTransformCtxPtr dst, xmlSecTransformCtxPtr
ret = xmlSecPtrListCopy(&(dst->enabledTransforms), &(src->enabledTransforms));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCopy(enabledTransforms)", NULL);
return(-1);
}
@@ -533,12 +448,8 @@ xmlSecTransformCtxAppend(xmlSecTransformCtxPtr ctx, xmlSecTransformPtr transform
if(ctx->last != NULL) {
ret = xmlSecTransformConnect(ctx->last, transform, ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformConnect",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformConnect",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
@@ -571,12 +482,8 @@ xmlSecTransformCtxPrepend(xmlSecTransformCtxPtr ctx, xmlSecTransformPtr transfor
if(ctx->first != NULL) {
ret = xmlSecTransformConnect(transform, ctx->first, ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformConnect",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformConnect",
+ xmlSecTransformGetName(transform));
return(-1);
}
} else {
@@ -593,7 +500,7 @@ xmlSecTransformCtxPrepend(xmlSecTransformCtxPtr ctx, xmlSecTransformPtr transfor
* @ctx: the pointer to transforms chain processing context.
* @id: the new transform klass.
*
- * Creaeates new transform and connects it to the end of the chain of
+ * Creates new transform and connects it to the end of the chain of
* transforms in the @ctx (see #xmlSecTransformConnect function for details).
*
* Returns: pointer to newly created transform or NULL if an error occurs.
@@ -609,23 +516,15 @@ xmlSecTransformCtxCreateAndAppend(xmlSecTransformCtxPtr ctx, xmlSecTransformId i
transform = xmlSecTransformCreate(id);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
+ xmlSecInternalError("xmlSecTransformCreate",
+ xmlSecTransformKlassGetName(id));
return(NULL);
}
ret = xmlSecTransformCtxAppend(ctx, transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformCtxAppend",
+ xmlSecTransformKlassGetName(id));
xmlSecTransformDestroy(transform);
return(NULL);
}
@@ -638,7 +537,7 @@ xmlSecTransformCtxCreateAndAppend(xmlSecTransformCtxPtr ctx, xmlSecTransformId i
* @ctx: the pointer to transforms chain processing context.
* @id: the new transform klass.
*
- * Creaeates new transform and connects it to the end of the chain of
+ * Creates new transform and connects it to the end of the chain of
* transforms in the @ctx (see #xmlSecTransformConnect function for details).
*
* Returns: pointer to newly created transform or NULL if an error occurs.
@@ -654,23 +553,15 @@ xmlSecTransformCtxCreateAndPrepend(xmlSecTransformCtxPtr ctx, xmlSecTransformId
transform = xmlSecTransformCreate(id);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
+ xmlSecInternalError("xmlSecTransformCreate",
+ xmlSecTransformKlassGetName(id));
return(NULL);
}
ret = xmlSecTransformCtxPrepend(ctx, transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformCtxPrepend",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(NULL);
}
@@ -701,23 +592,15 @@ xmlSecTransformCtxNodeRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node,
transform = xmlSecTransformNodeRead(node, usage, ctx);
if(transform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecTransformNodeRead",
+ xmlSecNodeGetName(node));
return(NULL);
}
ret = xmlSecTransformCtxAppend(ctx, transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformCtxAppend",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(NULL);
}
@@ -750,23 +633,15 @@ xmlSecTransformCtxNodesListRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node, xmlS
while((cur != NULL) && xmlSecCheckNodeName(cur, xmlSecNodeTransform, xmlSecDSigNs)) {
transform = xmlSecTransformNodeRead(cur, usage, ctx);
if(transform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecTransformNodeRead",
+ xmlSecNodeGetName(cur));
return(-1);
}
ret = xmlSecTransformCtxAppend(ctx, transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecTransformCtxAppend",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(-1);
}
@@ -774,11 +649,7 @@ xmlSecTransformCtxNodesListRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node, xmlS
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
return(0);
@@ -818,7 +689,7 @@ xmlSecTransformCtxNodesListRead(xmlSecTransformCtxPtr ctx, xmlNodePtr node, xmlS
* identifies a node-set containing the element with ID attribute value
* 'chapter1' of the XML resource containing the signature. XML Signature
* (and its applications) modify this node-set to include the element plus
- * all descendents including namespaces and attributes -- but not comments.
+ * all descendants including namespaces and attributes -- but not comments.
*
* Returns: 0 on success or a negative value otherwise.
*/
@@ -838,12 +709,8 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
/* check uri */
if(xmlSecTransformUriTypeCheck(ctx->enabledUris, uri) != 1) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_URI_TYPE,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_INVALID_URI_TYPE, NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
@@ -857,11 +724,7 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
if(xptr == NULL){
ctx->uri = xmlStrdup(uri);
if(ctx->uri == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "size=%d", xmlStrlen(uri));
+ xmlSecStrdupError(uri, NULL);
return(-1);
}
/* we are done */
@@ -869,34 +732,22 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
} else if(xmlStrcmp(uri, BAD_CAST "#xpointer(/)") == 0) {
ctx->xptrExpr = xmlStrdup(uri);
if(ctx->xptrExpr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "size=%d", xmlStrlen(uri));
+ xmlSecStrdupError(uri, NULL);
return(-1);
}
/* we are done */
return(0);
}
- ctx->uri = xmlStrndup(uri, xptr - uri);
+ ctx->uri = xmlStrndup(uri, (int)(xptr - uri));
if(ctx->uri == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "size=%d", (int)(xptr - uri));
+ xmlSecStrdupError(uri, NULL);
return(-1);
}
ctx->xptrExpr = xmlStrdup(xptr);
if(ctx->xptrExpr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- "size=%d", xmlStrlen(xptr));
+ xmlSecStrdupError(xptr, NULL);
return(-1);
}
@@ -918,14 +769,15 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
size = xmlStrlen(BAD_CAST tmpl) + xmlStrlen(xptr) + 2;
buf = (xmlChar*)xmlMalloc(size * sizeof(xmlChar));
if(buf == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", size);
+ xmlSecMallocError(size * sizeof(xmlChar), NULL);
return(-1);
}
- snprintf((char*)buf, size * sizeof(xmlChar), tmpl, xptr + 1);
+ ret = xmlStrPrintf(buf, size, tmpl, xptr + 1);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ xmlFree(buf);
+ return(-1);
+ }
xptr = buf;
nodeSetType = xmlSecNodeSetTreeWithoutComments;
}
@@ -936,12 +788,7 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
/* we need to create XPonter transform to execute expr */
transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformXPointerId);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXPointerId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend(xmlSecTransformXPointerId)", NULL);
if(buf != NULL) {
xmlFree(buf);
}
@@ -950,12 +797,8 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
ret = xmlSecTransformXPointerSetExpr(transform, xptr, nodeSetType, hereNode);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformXPointerSetExpr",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformXPointerSetExpr",
+ xmlSecTransformGetName(transform));
if(buf != NULL) {
xmlFree(buf);
}
@@ -972,12 +815,7 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformVisa3DHackId);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformVisa3DHackId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend(xmlSecTransformVisa3DHackId)", NULL);
if(buf != NULL) {
xmlFree(buf);
}
@@ -986,12 +824,8 @@ xmlSecTransformCtxSetUri(xmlSecTransformCtxPtr ctx, const xmlChar* uri, xmlNodeP
ret = xmlSecTransformVisa3DHackSetID(transform, xptr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformVisa3DHackSetID",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "name=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("xmlSecTransformVisa3DHackSetID",
+ xmlSecTransformGetName(transform));
if(buf != NULL) {
xmlFree(buf);
}
@@ -1027,22 +861,13 @@ xmlSecTransformCtxPrepare(xmlSecTransformCtxPtr ctx, xmlSecTransformDataType inp
/* add binary buffer to store result */
transform = xmlSecTransformCtxCreateAndAppend(ctx, xmlSecTransformMemBufId);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend(xmlSecTransformMemBufId)", NULL);
return(-1);
}
ctx->result = xmlSecTransformMemBufGetBuffer(transform);
if(ctx->result == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformMemBufGetBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
+ xmlSecInternalError("xmlSecTransformMemBufGetBuffer(xmlSecTransformMemBufId)",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -1053,12 +878,7 @@ xmlSecTransformCtxPrepare(xmlSecTransformCtxPtr ctx, xmlSecTransformDataType inp
/* need to add parser transform */
transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformXmlParserId);
if(transform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformXmlParserId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend(xmlSecTransformXmlParserId)", NULL);
return(-1);
}
} else if(((firstType & xmlSecTransformDataTypeXml) == 0) &&
@@ -1067,12 +887,7 @@ xmlSecTransformCtxPrepare(xmlSecTransformCtxPtr ctx, xmlSecTransformDataType inp
/* need to add c14n transform */
transform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformInclC14NId);
if(transform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInclC14NId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend(xmlSecTransformInclC14NId)", NULL);
return(-1);
}
}
@@ -1082,11 +897,7 @@ xmlSecTransformCtxPrepare(xmlSecTransformCtxPtr ctx, xmlSecTransformDataType inp
if(ctx->preExecCallback != NULL) {
ret = (ctx->preExecCallback)(ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "ctx->preExecCallback",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("ctx->preExecCallback", NULL);
return(-1);
}
}
@@ -1121,21 +932,14 @@ xmlSecTransformCtxBinaryExecute(xmlSecTransformCtxPtr ctx,
ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeBin);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPrepare",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=bin");
+ xmlSecInternalError("xmlSecTransformCtxPrepare(TypeBin)", NULL);
return(-1);
}
ret = xmlSecTransformPushBin(ctx->first, data, dataSize, 1, ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPushBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataSize=%d", dataSize);
+ xmlSecInternalError2("xmlSecTransformPushBin", NULL,
+ "dataSize=%d", dataSize);
return(-1);
}
@@ -1166,34 +970,21 @@ xmlSecTransformCtxUriExecute(xmlSecTransformCtxPtr ctx, const xmlChar* uri) {
uriTransform = xmlSecTransformCtxCreateAndPrepend(ctx, xmlSecTransformInputURIId);
if(uriTransform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformInputURIId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend(xmlSecTransformInputURIId)", NULL);
return(-1);
}
ret = xmlSecTransformInputURIOpen(uriTransform, uri);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformInputURIOpen",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecTransformInputURIOpen", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
/* we do not need to do something special for this transform */
ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeUnknown);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPrepare",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=bin");
+ xmlSecInternalError("xmlSecTransformCtxPrepare(TypeUnknown)", NULL);
return(-1);
}
@@ -1202,25 +993,18 @@ xmlSecTransformCtxUriExecute(xmlSecTransformCtxPtr ctx, const xmlChar* uri) {
*/
ret = xmlSecTransformPump(uriTransform, uriTransform->next, ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformPump",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecInternalError("xmlSecTransformPump",
+ xmlSecTransformGetName(uriTransform));
return(-1);
}
/* Close to free up file handle */
ret = xmlSecTransformInputURIClose(uriTransform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformInputURIClose",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "ret=%d", ret);
- return(-1);
- }
+ xmlSecInternalError("xmlSecTransformInputURIClose",
+ xmlSecTransformGetName(uriTransform));
+ return(-1);
+ }
/* Done */
ctx->status = xmlSecTransformStatusFinished;
@@ -1249,11 +1033,7 @@ xmlSecTransformCtxXmlExecute(xmlSecTransformCtxPtr ctx, xmlSecNodeSetPtr nodes)
ret = xmlSecTransformCtxPrepare(ctx, xmlSecTransformDataTypeXml);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPrepare",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=xml");
+ xmlSecInternalError("xmlSecTransformCtxPrepare(TypeXml)", NULL);
return(-1);
}
@@ -1261,12 +1041,8 @@ xmlSecTransformCtxXmlExecute(xmlSecTransformCtxPtr ctx, xmlSecNodeSetPtr nodes)
* just don't care and c14n likes push more than pop */
ret = xmlSecTransformPushXml(ctx->first, nodes, ctx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformPushXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(ctx->first)));
+ xmlSecInternalError("xmlSecTransformPushXml",
+ xmlSecTransformGetName(ctx->first));
return(-1);
}
@@ -1299,11 +1075,7 @@ xmlSecTransformCtxExecute(xmlSecTransformCtxPtr ctx, xmlDocPtr doc) {
/* our xpointer transform takes care of providing correct nodes set */
nodes = xmlSecNodeSetCreate(doc, NULL, xmlSecNodeSetNormal);
if(nodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetCreate", NULL);
return(-1);
}
@@ -1311,21 +1083,13 @@ xmlSecTransformCtxExecute(xmlSecTransformCtxPtr ctx, xmlDocPtr doc) {
/* we do not want to have comments for empty URI */
nodes = xmlSecNodeSetGetChildren(doc, NULL, 0, 0);
if(nodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetGetChildren",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetGetChildren", NULL);
return(-1);
}
}
ret = xmlSecTransformCtxXmlExecute(ctx, nodes);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxXmlExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxXmlExecute", NULL);
xmlSecNodeSetDestroy(nodes);
return(-1);
}
@@ -1334,11 +1098,7 @@ xmlSecTransformCtxExecute(xmlSecTransformCtxPtr ctx, xmlDocPtr doc) {
} else {
ret = xmlSecTransformCtxUriExecute(ctx, ctx->uri);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxUriExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxUriExecute", NULL);
return(-1);
}
}
@@ -1431,7 +1191,7 @@ xmlSecTransformCtxDebugXmlDump(xmlSecTransformCtxPtr ctx, FILE* output) {
* @id: the transform id to create.
*
* Creates new transform of the @id klass. The caller is responsible for
- * destroying returned tansform using #xmlSecTransformDestroy function.
+ * destroying returned transform using #xmlSecTransformDestroy function.
*
* Returns: pointer to newly created transform or NULL if an error occurs.
*/
@@ -1448,11 +1208,7 @@ xmlSecTransformCreate(xmlSecTransformId id) {
/* Allocate a new xmlSecTransform and fill the fields. */
transform = (xmlSecTransformPtr)xmlMalloc(id->objSize);
if(transform == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", id->objSize);
+ xmlSecMallocError(id->objSize, NULL);
return(NULL);
}
memset(transform, 0, id->objSize);
@@ -1461,11 +1217,8 @@ xmlSecTransformCreate(xmlSecTransformId id) {
if(id->initialize != NULL) {
ret = (id->initialize)(transform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "id->initialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("id->initialize",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(NULL);
}
@@ -1473,22 +1226,16 @@ xmlSecTransformCreate(xmlSecTransformId id) {
ret = xmlSecBufferInitialize(&(transform->inBuf), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", 0);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(NULL);
}
ret = xmlSecBufferInitialize(&(transform->outBuf), 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", 0);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
return(NULL);
}
@@ -1531,7 +1278,7 @@ xmlSecTransformDestroy(xmlSecTransformPtr transform) {
* xmlSecTransformNodeRead:
* @node: the pointer to the transform's node.
* @usage: the transform usage (signature, encryption, ...).
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Reads transform from the @node as follows:
*
@@ -1557,23 +1304,15 @@ xmlSecTransformNodeRead(xmlNodePtr node, xmlSecTransformUsage usage, xmlSecTrans
href = xmlGetProp(node, xmlSecAttrAlgorithm);
if(href == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecAttrAlgorithm),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInvalidNodeAttributeError(node, xmlSecAttrAlgorithm,
+ NULL, "empty");
return(NULL);
}
id = xmlSecTransformIdListFindByHref(xmlSecTransformIdsGet(), href, usage);
if(id == xmlSecTransformIdUnknown) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdListFindByHref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "href=%s",
- xmlSecErrorsSafeString(href));
+ xmlSecInternalError2("xmlSecTransformIdListFindByHref", NULL,
+ "href=%s", xmlSecErrorsSafeString(href));
xmlFree(href);
return(NULL);
}
@@ -1581,24 +1320,17 @@ xmlSecTransformNodeRead(xmlNodePtr node, xmlSecTransformUsage usage, xmlSecTrans
/* check with enabled transforms list */
if((xmlSecPtrListGetSize(&(transformCtx->enabledTransforms)) > 0) &&
(xmlSecTransformIdListFind(&(transformCtx->enabledTransforms), id) != 1)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)),
- XMLSEC_ERRORS_R_TRANSFORM_DISABLED,
- "href=%s",
- xmlSecErrorsSafeString(href));
+ xmlSecOtherError2(XMLSEC_ERRORS_R_TRANSFORM_DISABLED,
+ xmlSecTransformKlassGetName(id),
+ "href=%s", xmlSecErrorsSafeString(href));
xmlFree(href);
return(NULL);
}
transform = xmlSecTransformCreate(id);
if(!xmlSecTransformIsValid(transform)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(id)));
+ xmlSecInternalError("xmlSecTransformCreate(id)",
+ xmlSecTransformKlassGetName(id));
xmlFree(href);
return(NULL);
}
@@ -1606,12 +1338,8 @@ xmlSecTransformNodeRead(xmlNodePtr node, xmlSecTransformUsage usage, xmlSecTrans
if(transform->id->readNode != NULL) {
ret = transform->id->readNode(transform, node, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "id->readNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)));
+ xmlSecInternalError("readNode",
+ xmlSecTransformGetName(transform));
xmlSecTransformDestroy(transform);
xmlFree(href);
return(NULL);
@@ -1628,7 +1356,7 @@ xmlSecTransformNodeRead(xmlNodePtr node, xmlSecTransformUsage usage, xmlSecTrans
* xmlSecTransformPump:
* @left: the source pumping transform.
* @right: the destination pumping transform.
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Pops data from @left transform and pushes to @right transform until
* no more data is available.
@@ -1655,21 +1383,15 @@ xmlSecTransformPump(xmlSecTransformPtr left, xmlSecTransformPtr right, xmlSecTra
ret = xmlSecTransformPopXml(left, &nodes, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
- "xmlSecTransformPopXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopXml",
+ xmlSecTransformGetName(left));
return(-1);
}
ret = xmlSecTransformPushXml(right, nodes, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
- "xmlSecTransformPushXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushXml",
+ xmlSecTransformGetName(right));
return(-1);
}
} else if(((leftType & xmlSecTransformDataTypeBin) != 0) &&
@@ -1681,30 +1403,22 @@ xmlSecTransformPump(xmlSecTransformPtr left, xmlSecTransformPtr right, xmlSecTra
do {
ret = xmlSecTransformPopBin(left, buf, sizeof(buf), &bufSize, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
- "xmlSecTransformPopBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopBin",
+ xmlSecTransformGetName(left));
return(-1);
}
final = (bufSize == 0) ? 1 : 0;
ret = xmlSecTransformPushBin(right, buf, bufSize, final, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
- "xmlSecTransformPushBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushBin",
+ xmlSecTransformGetName(right));
return(-1);
}
} while(final == 0);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
- xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "transforms input/output data formats do not match");
+ xmlSecInvalidTransfromError2(left,
+ "transforms input/output data formats do not match, right transform=\"%s\"",
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)));
}
return(0);
}
@@ -1760,7 +1474,7 @@ xmlSecTransformSetKeyReq(xmlSecTransformPtr transform, xmlSecKeyReqPtr keyReq) {
* @transform: the pointer to transform.
* @data: the binary data for verification.
* @dataSize: the data size.
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Verifies the data with transform's processing results
* (for digest, HMAC and signature transforms). The verification
@@ -1782,7 +1496,7 @@ xmlSecTransformVerify(xmlSecTransformPtr transform, const xmlSecByte* data,
* xmlSecTransformVerifyNodeContent:
* @transform: the pointer to transform.
* @node: the pointer to node.
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Gets the @node content, base64 decodes it and calls #xmlSecTransformVerify
* function to verify binary results.
@@ -1801,21 +1515,15 @@ xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, xmlNodePtr node,
ret = xmlSecBufferInitialize(&buffer, 0);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferBase64NodeContentRead(&buffer, node);
if((ret < 0) || (xmlSecBufferGetData(&buffer) == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferBase64NodeContentRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferBase64NodeContentRead",
+ xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -1823,11 +1531,8 @@ xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, xmlNodePtr node,
ret = xmlSecTransformVerify(transform, xmlSecBufferGetData(&buffer),
xmlSecBufferGetSize(&buffer), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformVerify",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformVerify",
+ xmlSecTransformGetName(transform));
xmlSecBufferFinalize(&buffer);
return(-1);
}
@@ -1840,7 +1545,7 @@ xmlSecTransformVerifyNodeContent(xmlSecTransformPtr transform, xmlNodePtr node,
* xmlSecTransformGetDataType:
* @transform: the pointer to transform.
* @mode: the data mode (push or pop).
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Gets transform input (@mode is "push") or output (@mode is "pop") data
* type (binary or XML).
@@ -1950,7 +1655,7 @@ xmlSecTransformPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nodes,
* xmlSecTransformExecute:
* @transform: the pointer to transform.
* @last: the flag: if set to 1 then it's the last data chunk.
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Executes transform (used by default popBin/pushBin/popXml/pushXml methods).
*
@@ -2010,7 +1715,7 @@ xmlSecTransformDebugXmlDump(xmlSecTransformPtr transform, FILE* output) {
* xmlSecTransformConnect:
* @left: the pointer to left (prev) transform.
* @right: the pointer to right (next) transform.
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* If the data object is a node-set and the next transform requires octets,
* the signature application MUST attempt to convert the node-set to an octet
@@ -2073,24 +1778,17 @@ xmlSecTransformConnect(xmlSecTransformPtr left, xmlSecTransformPtr right,
middleId = xmlSecTransformInclC14NId;
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
- xmlSecErrorsSafeString(xmlSecTransformGetName(right)),
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "leftType=%d;rightType=%d",
- leftType, rightType);
+ xmlSecInvalidTransfromError2(left,
+ "transforms types do not match, right transform=\"%s\"",
+ xmlSecErrorsSafeString(xmlSecTransformGetName(right)));
return(-1);
}
/* insert transform */
middle = xmlSecTransformCreate(middleId);
if(middle == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(left)),
- "xmlSecTransformCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(middleId)));
+ xmlSecInternalError("xmlSecTransformCreate",
+ xmlSecTransformKlassGetName(middleId));
return(-1);
}
left->next = middle;
@@ -2129,7 +1827,7 @@ xmlSecTransformRemove(xmlSecTransformPtr transform) {
* xmlSecTransformDefaultGetDataType:
* @transform: the pointer to transform.
* @mode: the data mode (push or pop).
- * @transformCtx: the transform's chaing processing context.
+ * @transformCtx: the transform's chain processing context.
*
* Gets transform input (@mode is "push") or output (@mode is "pop") data
* type (binary or XML) by analyzing available pushBin/popBin/pushXml/popXml
@@ -2164,11 +1862,9 @@ xmlSecTransformDefaultGetDataType(xmlSecTransformPtr transform, xmlSecTransformM
}
break;
default:
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "mode=%d", mode);
+ xmlSecInvalidIntegerDataError("mode", mode,
+ "xmlSecTransformModePush,xmlSecTransformModePop",
+ xmlSecTransformGetName(transform));
return(xmlSecTransformDataTypeUnknown);
}
@@ -2214,11 +1910,9 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
ret = xmlSecBufferAppend(&(transform->inBuf), data, chunkSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", chunkSize);
+ xmlSecInternalError2("xmlSecBufferAppend",
+ xmlSecTransformGetName(transform),
+ "size=%d", chunkSize);
return(-1);
}
@@ -2227,16 +1921,12 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
}
/* process data */
- inSize = xmlSecBufferGetSize(&(transform->inBuf));
- outSize = xmlSecBufferGetSize(&(transform->outBuf));
finalData = (((dataSize == 0) && (final != 0)) ? 1 : 0);
ret = xmlSecTransformExecute(transform, finalData, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "final=%d", final);
+ xmlSecInternalError2("xmlSecTransformExecute",
+ xmlSecTransformGetName(transform),
+ "final=%d", final);
return(-1);
}
@@ -2247,7 +1937,7 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
finalData = 0;
}
- /* we don't want to puch too much */
+ /* we don't want to push too much */
if(outSize > XMLSEC_TRANSFORM_BINARY_CHUNK) {
outSize = XMLSEC_TRANSFORM_BINARY_CHUNK;
finalData = 0;
@@ -2259,11 +1949,9 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
finalData,
transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform->next)),
- "xmlSecTransformPushBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "final=%d;outSize=%d", final, outSize);
+ xmlSecInternalError3("xmlSecTransformPushBin",
+ xmlSecTransformGetName(transform->next),
+ "final=%d;outSize=%d", final, outSize);
return(-1);
}
}
@@ -2272,11 +1960,9 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
if(outSize > 0) {
ret = xmlSecBufferRemoveHead(&(transform->outBuf), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
}
@@ -2301,7 +1987,8 @@ xmlSecTransformDefaultPushBin(xmlSecTransformPtr transform, const xmlSecByte* da
*/
int
xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
- xmlSecSize maxDataSize, xmlSecSize* dataSize, xmlSecTransformCtxPtr transformCtx) {
+ xmlSecSize maxDataSize, xmlSecSize* dataSize,
+ xmlSecTransformCtxPtr transformCtx) {
xmlSecSize outSize;
int final = 0;
int ret;
@@ -2322,11 +2009,9 @@ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
/* ensure that we have space for at least one data chunk */
ret = xmlSecBufferSetMaxSize(&(transform->inBuf), inSize + chunkSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetMaxSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize + chunkSize);
+ xmlSecInternalError2("xmlSecBufferSetMaxSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize + chunkSize);
return(-1);
}
@@ -2335,11 +2020,8 @@ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
xmlSecBufferGetData(&(transform->inBuf)) + inSize,
chunkSize, &chunkSize, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform->prev)),
- "xmlSecTransformPopBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopBin",
+ xmlSecTransformGetName(transform->prev));
return(-1);
}
@@ -2347,11 +2029,9 @@ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
if(chunkSize > 0) {
ret = xmlSecBufferSetSize(&(transform->inBuf), inSize + chunkSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize + chunkSize);
+ xmlSecInternalError2("xmlSecBufferSetSize",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize + chunkSize);
return(-1);
}
final = 0; /* the previous transform returned some data..*/
@@ -2365,11 +2045,8 @@ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
/* execute our transform */
ret = xmlSecTransformExecute(transform, final, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformExecute",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -2391,11 +2068,9 @@ xmlSecTransformDefaultPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
ret = xmlSecBufferRemoveHead(&(transform->outBuf), outSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", outSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", outSize);
return(-1);
}
}
@@ -2430,11 +2105,8 @@ xmlSecTransformDefaultPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nod
transform->inNodes = nodes;
ret = xmlSecTransformExecute(transform, 1, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformExecute",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -2442,11 +2114,8 @@ xmlSecTransformDefaultPushXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr nod
if(transform->next != NULL) {
ret = xmlSecTransformPushXml(transform->next, transform->outNodes, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformPushXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushXml",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -2478,11 +2147,8 @@ xmlSecTransformDefaultPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nod
if(transform->prev != NULL) {
ret = xmlSecTransformPopXml(transform->prev, &(transform->inNodes), transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformPopXml",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopXml",
+ xmlSecTransformGetName(transform));
return(-1);
}
}
@@ -2490,11 +2156,8 @@ xmlSecTransformDefaultPopXml(xmlSecTransformPtr transform, xmlSecNodeSetPtr* nod
/* execute our transform */
ret = xmlSecTransformExecute(transform, 1, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformExecute",
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -2733,21 +2396,16 @@ xmlSecTransformCreateOutputBuffer(xmlSecTransformPtr transform, xmlSecTransformC
/* check that we have binary push method for this transform */
type = xmlSecTransformDefaultGetDataType(transform, xmlSecTransformModePush, transformCtx);
if((type & xmlSecTransformDataTypeBin) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "push binary data not supported");
+ xmlSecInvalidTransfromError2(transform,
+ "push binary data not supported, type=\"%d\"",
+ (int)type);
return(NULL);
}
buffer = xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferModeWrite, transform, transformCtx);
if(buffer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformIOBufferCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIOBufferCreate",
+ xmlSecTransformGetName(transform));
return(NULL);
}
@@ -2756,11 +2414,7 @@ xmlSecTransformCreateOutputBuffer(xmlSecTransformPtr transform, xmlSecTransformC
buffer,
NULL);
if(output == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferCreateIO",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferCreateIO", xmlSecTransformGetName(transform));
xmlSecTransformIOBufferDestroy(buffer);
return(NULL);
}
@@ -2789,21 +2443,16 @@ xmlSecTransformCreateInputBuffer(xmlSecTransformPtr transform, xmlSecTransformCt
/* check that we have binary pop method for this transform */
type = xmlSecTransformDefaultGetDataType(transform, xmlSecTransformModePop, transformCtx);
if((type & xmlSecTransformDataTypeBin) == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_TRANSFORM,
- "pop binary data not supported");
+ xmlSecInvalidTransfromError2(transform,
+ "pop binary data not supported, type=\"%d\"",
+ (int)type);
return(NULL);
}
buffer = xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferModeRead, transform, transformCtx);
if(buffer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformIOBufferCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIOBufferCreate",
+ xmlSecTransformGetName(transform));
return(NULL);
}
@@ -2812,11 +2461,7 @@ xmlSecTransformCreateInputBuffer(xmlSecTransformPtr transform, xmlSecTransformCt
buffer,
XML_CHAR_ENCODING_NONE);
if(input == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParserInputBufferCreateIO",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlParserInputBufferCreateIO", xmlSecTransformGetName(transform));
xmlSecTransformIOBufferDestroy(buffer);
return(NULL);
}
@@ -2834,11 +2479,7 @@ xmlSecTransformIOBufferCreate(xmlSecTransformIOBufferMode mode, xmlSecTransformP
buffer = (xmlSecTransformIOBufferPtr)xmlMalloc(sizeof(xmlSecTransformIOBuffer));
if(buffer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", (int)sizeof(xmlSecTransformIOBuffer));
+ xmlSecMallocError(sizeof(xmlSecTransformIOBuffer), NULL);
return(NULL);
}
memset(buffer, 0, sizeof(xmlSecTransformIOBuffer));
@@ -2871,11 +2512,8 @@ xmlSecTransformIOBufferRead(xmlSecTransformIOBufferPtr buffer,
ret = xmlSecTransformPopBin(buffer->transform, buf, size, &size, buffer->transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
- "xmlSecTransformPopBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPopBin",
+ xmlSecTransformGetName(buffer->transform));
return(-1);
}
return(size);
@@ -2894,11 +2532,8 @@ xmlSecTransformIOBufferWrite(xmlSecTransformIOBufferPtr buffer,
ret = xmlSecTransformPushBin(buffer->transform, buf, size, 0, buffer->transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
- "xmlSecTransformPushBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushBin",
+ xmlSecTransformGetName(buffer->transform));
return(-1);
}
return(size);
@@ -2916,11 +2551,8 @@ xmlSecTransformIOBufferClose(xmlSecTransformIOBufferPtr buffer) {
if(buffer->mode == xmlSecTransformIOBufferModeWrite) {
ret = xmlSecTransformPushBin(buffer->transform, NULL, 0, 1, buffer->transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(buffer->transform)),
- "xmlSecTransformPushBin",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformPushBin",
+ xmlSecTransformGetName(buffer->transform));
return(-1);
}
}
diff --git a/src/x509.c b/src/x509.c
index 2bdcb3fa..ed8788ae 100644
--- a/src/x509.c
+++ b/src/x509.c
@@ -1,11 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
+ *
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:x509
+ * @Short_description: &lt;dsig:X509Certificate/&gt; node parser functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_X509
@@ -30,7 +38,6 @@
/**
* xmlSecX509DataGetNodeContent:
* @node: the pointer to <dsig:X509Data/> node.
- * @deleteChildren: the flag that indicates whether to remove node children after reading.
* @keyInfoCtx: the pointer to <dsig:KeyInfo/> node processing context.
*
* Reads the contents of <dsig:X509Data/> node and returns it as
@@ -40,10 +47,8 @@
* or a negative value if an error occurs.
*/
int
-xmlSecX509DataGetNodeContent (xmlNodePtr node, int deleteChildren,
- xmlSecKeyInfoCtxPtr keyInfoCtx) {
- xmlNodePtr cur, next;
- int deleteCurNode;
+xmlSecX509DataGetNodeContent (xmlNodePtr node, xmlSecKeyInfoCtxPtr keyInfoCtx) {
+ xmlNodePtr cur;
int content = 0;
xmlSecAssert2(node != NULL, 0);
@@ -52,42 +57,30 @@ xmlSecX509DataGetNodeContent (xmlNodePtr node, int deleteChildren,
/* determine the current node content */
cur = xmlSecGetNextElementNode(node->children);
while(cur != NULL) {
- deleteCurNode = 0;
if(xmlSecCheckNodeName(cur, xmlSecNodeX509Certificate, xmlSecDSigNs)) {
if(xmlSecIsEmptyNode(cur) == 1) {
content |= XMLSEC_X509DATA_CERTIFICATE_NODE;
- deleteCurNode = 1;
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SubjectName, xmlSecDSigNs)) {
if(xmlSecIsEmptyNode(cur) == 1) {
content |= XMLSEC_X509DATA_SUBJECTNAME_NODE;
- deleteCurNode = 1;
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509IssuerSerial, xmlSecDSigNs)) {
if(xmlSecIsEmptyNode(cur) == 1) {
content |= XMLSEC_X509DATA_ISSUERSERIAL_NODE;
- deleteCurNode = 1;
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509SKI, xmlSecDSigNs)) {
if(xmlSecIsEmptyNode(cur) == 1) {
content |= XMLSEC_X509DATA_SKI_NODE;
- deleteCurNode = 1;
}
} else if(xmlSecCheckNodeName(cur, xmlSecNodeX509CRL, xmlSecDSigNs)) {
if(xmlSecIsEmptyNode(cur) == 1) {
content |= XMLSEC_X509DATA_CRL_NODE;
- deleteCurNode = 1;
}
} else {
/* todo: fail on unknown child node? */
}
- next = xmlSecGetNextElementNode(cur->next);
- if((deleteCurNode != 0) && (deleteChildren != 0)) {
- /* remove "template" nodes */
- xmlUnlinkNode(cur);
- xmlFreeNode(cur);
- }
- cur = next;
+ cur = xmlSecGetNextElementNode(cur->next);
}
return (content);
diff --git a/src/xmldsig.c b/src/xmldsig.c
index 304a869b..619e725a 100644
--- a/src/xmldsig.c
+++ b/src/xmldsig.c
@@ -1,15 +1,20 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * "XML Digital Signature" implementation
- * http://www.w3.org/TR/xmldsig-core/
- * http://www.w3.org/Signature/Overview.html
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xmldsig
+ * @Short_description: XML Digital Signature functions.
+ * @Stability: Stable
+ *
+ * [XML Digital Signature](http://www.w3.org/TR/xmldsig-core/) implementation.
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_XMLDSIG
@@ -47,16 +52,12 @@ static int xmlSecDSigCtxProcessObjectNode (xmlSecDSigCtxPtr dsigCt
xmlNodePtr node);
static int xmlSecDSigCtxProcessManifestNode (xmlSecDSigCtxPtr dsigCtx,
xmlNodePtr node);
+
static int xmlSecDSigCtxProcessReferences (xmlSecDSigCtxPtr dsigCtx,
xmlNodePtr firstReferenceNode);
-/* TIZEN CUSTUMIZED */
-static int xmlSecHexToInt (char a);
-static int xmlSecDecodeCmp (const xmlChar* encoded,
- const xmlChar* plain);
-
/* The ID attribute in XMLDSig is 'Id' */
-static const xmlChar* xmlSecDSigIds[] = { xmlSecAttrId, NULL };
+static const xmlChar* xmlSecDSigIds[] = { xmlSecAttrId, NULL };
/**
* xmlSecDSigCtxCreate:
@@ -76,22 +77,13 @@ xmlSecDSigCtxCreate(xmlSecKeysMngrPtr keysMngr) {
dsigCtx = (xmlSecDSigCtxPtr) xmlMalloc(sizeof(xmlSecDSigCtx));
if(dsigCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecDSigCtx)=%d",
- (int)sizeof(xmlSecDSigCtx));
+ xmlSecMallocError(sizeof(xmlSecDSigCtx), NULL);
return(NULL);
}
ret = xmlSecDSigCtxInitialize(dsigCtx, keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxInitialize", NULL);
xmlSecDSigCtxDestroy(dsigCtx);
return(NULL);
}
@@ -134,22 +126,14 @@ xmlSecDSigCtxInitialize(xmlSecDSigCtxPtr dsigCtx, xmlSecKeysMngrPtr keysMngr) {
/* initialize key info */
ret = xmlSecKeyInfoCtxInitialize(&(dsigCtx->keyInfoReadCtx), keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize", NULL);
return(-1);
}
dsigCtx->keyInfoReadCtx.mode = xmlSecKeyInfoModeRead;
ret = xmlSecKeyInfoCtxInitialize(&(dsigCtx->keyInfoWriteCtx), keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize", NULL);
return(-1);
}
dsigCtx->keyInfoWriteCtx.mode = xmlSecKeyInfoModeWrite;
@@ -159,11 +143,7 @@ xmlSecDSigCtxInitialize(xmlSecDSigCtxPtr dsigCtx, xmlSecKeysMngrPtr keysMngr) {
/* initializes transforms dsigCtx */
ret = xmlSecTransformCtxInitialize(&(dsigCtx->transformCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxInitialize", NULL);
return(-1);
}
@@ -171,21 +151,13 @@ xmlSecDSigCtxInitialize(xmlSecDSigCtxPtr dsigCtx, xmlSecKeysMngrPtr keysMngr) {
ret = xmlSecPtrListInitialize(&(dsigCtx->signedInfoReferences),
xmlSecDSigReferenceCtxListId);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize", NULL);
return(ret);
}
ret = xmlSecPtrListInitialize(&(dsigCtx->manifestReferences),
xmlSecDSigReferenceCtxListId);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize", NULL);
return(ret);
}
@@ -221,50 +193,6 @@ xmlSecDSigCtxFinalize(xmlSecDSigCtxPtr dsigCtx) {
memset(dsigCtx, 0, sizeof(xmlSecDSigCtx));
}
-/* TIZEN CUSTUMIZED */
-int
-xmlSecProxyCtxAdd(xmlSecProxyCtxPtr* proxyCtxPtrPtr, const xmlChar* uri) {
- xmlSecProxyCtxPtr pc = (xmlSecProxyCtxPtr)xmlMalloc(sizeof(xmlSecProxyCtx));
- if(pc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d", sizeof(xmlSecProxyCtx));
- return(-1);
- }
-
- pc->cache = xmlStrdup(uri);
- if(pc->cache == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(uri));
- xmlFree(pc);
- return(-1);
- }
- pc->next = NULL;
-
- while(*proxyCtxPtrPtr != NULL)
- proxyCtxPtrPtr = &((*proxyCtxPtrPtr)->next);
-
- *proxyCtxPtrPtr = pc;
- return(0);
-}
-
-void xmlSecProxyCtxDestroy(xmlSecProxyCtxPtr proxyCtxPtr) {
- while(proxyCtxPtr != NULL) {
- if(proxyCtxPtr->cache != NULL)
- xmlFree(proxyCtxPtr->cache);
-
- xmlSecProxyCtxPtr next = proxyCtxPtr->next;
- xmlFree(proxyCtxPtr);
- proxyCtxPtr = next;
- }
-}
-
/**
* xmlSecDSigCtxEnableReferenceTransform:
* @dsigCtx: the pointer to <dsig:Signature/> processing context.
@@ -285,22 +213,14 @@ xmlSecDSigCtxEnableReferenceTransform(xmlSecDSigCtxPtr dsigCtx, xmlSecTransformI
if(dsigCtx->enabledReferenceTransforms == NULL) {
dsigCtx->enabledReferenceTransforms = xmlSecPtrListCreate(xmlSecTransformIdListId);
if(dsigCtx->enabledReferenceTransforms == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCreate", NULL);
return(-1);
}
}
ret = xmlSecPtrListAdd(dsigCtx->enabledReferenceTransforms, (void*)transformId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd", NULL);
return(-1);
}
return(0);
@@ -368,11 +288,7 @@ xmlSecDSigCtxSign(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr tmpl) {
/* read signature template */
ret = xmlSecDSigCtxProcessSignatureNode(dsigCtx, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxSignatureProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessSignatureNode", NULL);
return(-1);
}
xmlSecAssert2(dsigCtx->signMethod != NULL, -1);
@@ -386,11 +302,7 @@ xmlSecDSigCtxSign(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr tmpl) {
/* check what we've got */
dsigCtx->result = dsigCtx->transformCtx.result;
if((dsigCtx->result == NULL) || (xmlSecBufferGetData(dsigCtx->result) == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_RESULT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_INVALID_RESULT, NULL, NULL);
return(-1);
}
@@ -409,7 +321,7 @@ xmlSecDSigCtxSign(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr tmpl) {
* @dsigCtx: the pointer to <dsig:Signature/> processing context.
* @node: the pointer with <dsig:Signature/> node.
*
- * Vaidates signature in the @node. The verification result is returned
+ * Validates signature in the @node. The verification result is returned
* in #status member of the @dsigCtx object.
*
* Returns: 0 on success (check #status member of @dsigCtx to get
@@ -431,11 +343,7 @@ xmlSecDSigCtxVerify(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* read signature info */
ret = xmlSecDSigCtxProcessSignatureNode(dsigCtx, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxSignatureProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessSignatureNode", NULL);
return(-1);
}
xmlSecAssert2(dsigCtx->signMethod != NULL, -1);
@@ -450,11 +358,7 @@ xmlSecDSigCtxVerify(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
ret = xmlSecTransformVerifyNodeContent(dsigCtx->signMethod, dsigCtx->signValueNode,
&(dsigCtx->transformCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformVerifyNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformVerifyNodeContent", NULL);
return(-1);
}
@@ -535,12 +439,7 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
xmlSecAssert2(node != NULL, -1);
if(!xmlSecCheckNodeName(node, xmlSecNodeSignature, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignature));
+ xmlSecInvalidNodeError(node, xmlSecNodeSignature, NULL);
return(-1);
}
@@ -551,12 +450,7 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* first node is required SignedInfo */
cur = xmlSecGetNextElementNode(node->children);
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeSignedInfo, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignedInfo));
+ xmlSecInvalidNodeError(cur, xmlSecNodeSignedInfo, NULL);
return(-1);
}
signedInfoNode = cur;
@@ -564,12 +458,7 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* next node is required SignatureValue */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeSignatureValue, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignatureValue));
+ xmlSecInvalidNodeError(cur, xmlSecNodeSignatureValue, NULL);
return(-1);
}
dsigCtx->signValueNode = cur;
@@ -589,11 +478,7 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
if((dsigCtx->flags & XMLSEC_DSIG_FLAGS_IGNORE_MANIFESTS) == 0) {
ret = xmlSecDSigCtxProcessObjectNode(dsigCtx, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxProcessObjectNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessObjectNode", NULL);
return(-1);
}
}
@@ -602,22 +487,14 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* if there is something left than it's an error */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
/* now validated all the references and prepare transform */
ret = xmlSecDSigCtxProcessSignedInfoNode(dsigCtx, signedInfoNode, &firstReferenceNode);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxProcessSignedInfoNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessSignedInfoNode", NULL);
return(-1);
}
@@ -628,39 +505,21 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* now read key info node */
ret = xmlSecDSigCtxProcessKeyInfoNode(dsigCtx, keyInfoNode);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxProcessKeyInfoNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessKeyInfoNode", NULL);
return(-1);
}
/* as the result, we should have a key */
xmlSecAssert2(dsigCtx->signKey != NULL, -1);
- /* TIZEN CUSTUMIZED : if no-hash mode, skip processing references */
- if((dsigCtx->flags & XMLSEC_DSIG_FLAGS_IGNORE_REFERENCES) != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_MAX_NUMBER,
- "Skip processing references. no-hash mode.");
- dsigCtx->status = xmlSecDSigStatusSucceeded;
- } else {
- /* now actually process references and calculate digests */
- ret = xmlSecDSigCtxProcessReferences(dsigCtx, firstReferenceNode);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxProcessReferences",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
- /* references processing might change the status */
- if(dsigCtx->status != xmlSecDSigStatusUnknown) {
- return(0);
- }
+ /* now actually process references and calculate digests */
+ ret = xmlSecDSigCtxProcessReferences(dsigCtx, firstReferenceNode);
+ if(ret < 0) {
+ xmlSecInternalError("xmlSecDSigCtxProcessReferences", NULL);
+ return(-1);
+ }
+ /* references processing might change the status */
+ if(dsigCtx->status != xmlSecDSigStatusUnknown) {
+ return(0);
}
/* if we need to write result to xml node then we need base64 encode result */
@@ -671,11 +530,7 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
base64Encode = xmlSecTransformCtxCreateAndAppend(&(dsigCtx->transformCtx),
xmlSecTransformBase64Id);
if(base64Encode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
base64Encode->operation = xmlSecTransformOperationEncode;
@@ -690,34 +545,21 @@ xmlSecDSigCtxProcessSignatureNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
xmlSecAssert2(signedInfoNode != NULL, -1);
nodeset = xmlSecNodeSetGetChildren(signedInfoNode->doc, signedInfoNode, 1, 0);
if(nodeset == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetGetChildren",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(signedInfoNode)));
+ xmlSecInternalError("xmlSecNodeSetGetChildren(signedInfoNode)", NULL);
return(-1);
}
/* calculate the signature */
ret = xmlSecTransformCtxXmlExecute(&(dsigCtx->transformCtx), nodeset);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxXmlExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxXmlExecute", NULL);
xmlSecNodeSetDestroy(nodeset);
return(-1);
}
xmlSecNodeSetDestroy(nodeset);
} else {
/* TODO */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "the binary c14n transforms are not supported yet",
- XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecNotImplementedError("binary c14n transforms");
return(-1);
}
return(0);
@@ -777,12 +619,8 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
dsigCtx->c14nMethod = xmlSecTransformCtxNodeRead(&(dsigCtx->transformCtx),
cur, xmlSecTransformUsageC14NMethod);
if(dsigCtx->c14nMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecTransformCtxNodeRead", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
} else if(dsigCtx->defC14NMethodId != xmlSecTransformIdUnknown) {
@@ -792,20 +630,14 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
dsigCtx->c14nMethod = xmlSecTransformCtxCreateAndAppend(&(dsigCtx->transformCtx),
dsigCtx->defC14NMethodId);
if(dsigCtx->c14nMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "CanonicalizationMethod",
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeCanonicalizationMethod));
+ /* if c14n method is not specified in the template and not specified in
+ * the dsig context then it's an error.
+ */
+ xmlSecInvalidNodeError(cur, xmlSecNodeCanonicalizationMethod, NULL);
return(-1);
}
@@ -815,12 +647,8 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
dsigCtx->preSignMemBufMethod = xmlSecTransformCtxCreateAndAppend(&(dsigCtx->transformCtx),
xmlSecTransformMemBufId);
if(dsigCtx->preSignMemBufMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend",
+ xmlSecTransformKlassGetName(xmlSecTransformMemBufId));
}
}
@@ -830,14 +658,11 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
dsigCtx->signMethod = xmlSecTransformCtxNodeRead(&(dsigCtx->transformCtx),
cur, xmlSecTransformUsageSignatureMethod);
if(dsigCtx->signMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecTransformCtxNodeRead",
+ xmlSecNodeGetName(cur));
return(-1);
}
+ cur = xmlSecGetNextElementNode(cur->next);
} else if(dsigCtx->defSignMethodId != xmlSecTransformIdUnknown) {
/* the dsig spec does require SignatureMethod node
* to be present but in some case it application might decide to
@@ -845,28 +670,19 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
dsigCtx->signMethod = xmlSecTransformCtxCreateAndAppend(&(dsigCtx->transformCtx),
dsigCtx->defSignMethodId);
if(dsigCtx->signMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeSignatureMethod));
+ /* if sign method is not specified in the template and not specified in
+ * the dsig context then it's an error.
+ */
+ xmlSecInvalidNodeError(cur, xmlSecNodeSignatureMethod, NULL);
return(-1);
}
dsigCtx->signMethod->operation = dsigCtx->operation;
/* read references */
- if(cur != NULL) {
- cur = xmlSecGetNextElementNode(cur->next);
- }
while((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeReference, xmlSecDSigNs))) {
/* record first reference node */
if((*firstReferenceNode) == NULL) {
@@ -880,21 +696,13 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
/* check that we have at least one Reference */
if(refNodesCount == 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_DSIG_NO_REFERENCES,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_DSIG_NO_REFERENCES, NULL, NULL);
return(-1);
}
/* if there is something left than it's an error */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
@@ -902,44 +710,6 @@ xmlSecDSigCtxProcessSignedInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node, xm
return(0);
}
-static int
-xmlSecHexToInt(char a)
-{
- if (a >= '0' && a <= '9') return(a - '0');
- if (a >= 'A' && a <= 'F') return(a - 'A' + 10);
- if (a >= 'a' && a <= 'f') return(a - 'a' + 10);
-
- return(-1);
-}
-
-static int
-xmlSecDecodeCmp(const xmlChar* encoded, const xmlChar* plain) {
-
- xmlSecAssert2(encoded != NULL, -1);
- xmlSecAssert2(plain != NULL, -1);
-
- while(*plain != '\0') {
- if(*encoded == '\0')
- return(-1);
-
- /* check encoded char is same with plain char */
- if(*encoded == '%') {
- if(*(encoded + 1) == '\0' &&*(encoded + 2) == '\0')
- return(-1);
-
- if((int)*plain !=
- xmlSecHexToInt(*(encoded + 1)) * 16 + xmlSecHexToInt(*(encoded + 2)))
- return(-1);
-
- encoded += 3;
- plain++;
- } else {
- if(*(encoded++) != *(plain++))
- return(-1);
- }
- }
- return(0);
-}
static int
xmlSecDSigCtxProcessReferences(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr firstReferenceNode) {
@@ -957,123 +727,21 @@ xmlSecDSigCtxProcessReferences(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr firstReferen
for(cur = firstReferenceNode; (cur != NULL); cur = xmlSecGetNextElementNode(cur->next)) {
/* already checked but we trust none */
if(!xmlSecCheckNodeName(cur, xmlSecNodeReference, xmlSecDSigNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeReference));
+ xmlSecInvalidNodeError(cur, xmlSecNodeReference, NULL);
return(-1);
}
- /* TIZEN CUTUMIZED : skip uri in proxy caches for proxy mode */
- if((dsigCtx->flags & XMLSEC_DSIG_FLAGS_SKIP_PROXY) != 0) {
-
- int isInProxy = 0;
- if(dsigCtx->skipReferences != NULL) {
- xmlChar* refUri = xmlGetProp(cur, xmlSecAttrURI);
- if(refUri == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
- return(-1);
- }
-
- xmlSecProxyCtxPtr pc = dsigCtx->skipReferences;
- while(pc != NULL) {
- if(strncmp((char*)refUri, (char*)pc->cache, xmlStrlen(refUri)) == 0) {
- isInProxy = 1;
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_MAX_NUMBER,
- "[%s] is already checked by singature-validator.",
- refUri);
- break;
- }
- pc = pc->next;
- }
- xmlFree(refUri);
- } else {
- /* if proxy is not exist, process references */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_MAX_NUMBER,
- "Proxy doesn't exist.");
- }
-
- if(isInProxy)
- continue;
- }
-
- /* TIZEN CUTUMIZED : check uri only in proxy caches for partial mode */
- if((dsigCtx->flags & XMLSEC_DSIG_FLAGS_CHECK_PROXY) != 0) {
-
- int isInProxy = 0;
- if(dsigCtx->checkReferences != NULL) {
- xmlChar* refUri = xmlGetProp(cur, xmlSecAttrURI);
- if(refUri == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
- return(-1);
- }
-
- xmlSecProxyCtxPtr pc = dsigCtx->checkReferences;
- while(pc != NULL) {
- if(xmlSecDecodeCmp(refUri, pc->cache) == 0) {
- isInProxy = 1;
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_MAX_NUMBER,
- "Check [%s] on processing references.",
- refUri);
- break;
- }
- pc = pc->next;
- }
- xmlFree(refUri);
- } else {
- /* if proxy is not exist, process references */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_MAX_NUMBER,
- "Proxy doesn't exist.");
- }
-
- /* if not exist on proxy, skip on processing references */
- if(isInProxy == 0)
- continue;
- }
-
/* create reference */
dsigRefCtx = xmlSecDSigReferenceCtxCreate(dsigCtx, xmlSecDSigReferenceOriginSignedInfo);
if(dsigRefCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigReferenceCtxCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigReferenceCtxCreate", NULL);
return(-1);
}
/* add to the list */
ret = xmlSecPtrListAdd(&(dsigCtx->signedInfoReferences), dsigRefCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd", NULL);
xmlSecDSigReferenceCtxDestroy(dsigRefCtx);
return(-1);
}
@@ -1081,12 +749,8 @@ xmlSecDSigCtxProcessReferences(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr firstReferen
/* process */
ret = xmlSecDSigReferenceCtxProcessNode(dsigRefCtx, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigReferenceCtxProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecDSigReferenceCtxProcessNode",
+ xmlSecNodeGetName(cur));
return(-1);
}
@@ -1101,6 +765,7 @@ xmlSecDSigCtxProcessReferences(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr firstReferen
return(0);
}
+
static int
xmlSecDSigCtxProcessKeyInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
int ret;
@@ -1111,12 +776,8 @@ xmlSecDSigCtxProcessKeyInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* set key requirements */
ret = xmlSecTransformSetKeyReq(dsigCtx->signMethod, &(dsigCtx->keyInfoReadCtx.keyReq));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformSetKeyReq",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(dsigCtx->signMethod)));
+ xmlSecInternalError("xmlSecTransformSetKeyReq",
+ xmlSecTransformGetName(dsigCtx->signMethod));
return(-1);
}
@@ -1129,23 +790,15 @@ xmlSecDSigCtxProcessKeyInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* check that we have exactly what we want */
if((dsigCtx->signKey == NULL) || (!xmlSecKeyMatch(dsigCtx->signKey, NULL, &(dsigCtx->keyInfoReadCtx.keyReq)))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_KEY_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL, NULL);
return(-1);
}
/* set the key to the transform */
ret = xmlSecTransformSetKey(dsigCtx->signMethod, dsigCtx->signKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformSetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(dsigCtx->signMethod)));
+ xmlSecInternalError("xmlSecTransformSetKey",
+ xmlSecTransformGetName(dsigCtx->signMethod));
return(-1);
}
@@ -1153,11 +806,7 @@ xmlSecDSigCtxProcessKeyInfoNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
if((node != NULL) && (dsigCtx->operation == xmlSecTransformOperationSign)) {
ret = xmlSecKeyInfoNodeWrite(node, dsigCtx->signKey, &(dsigCtx->keyInfoWriteCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeWrite", NULL);
return(-1);
}
}
@@ -1208,11 +857,7 @@ xmlSecDSigCtxProcessObjectNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
if(xmlSecCheckNodeName(cur, xmlSecNodeManifest, xmlSecDSigNs)) {
ret = xmlSecDSigCtxProcessManifestNode(dsigCtx, cur);
if(ret < 0){
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigCtxProcessManifestNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigCtxProcessManifestNode", NULL);
return(-1);
}
}
@@ -1267,22 +912,14 @@ xmlSecDSigCtxProcessManifestNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* create reference */
dsigRefCtx = xmlSecDSigReferenceCtxCreate(dsigCtx, xmlSecDSigReferenceOriginManifest);
if(dsigRefCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigReferenceCtxCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigReferenceCtxCreate", NULL);
return(-1);
}
/* add to the list */
ret = xmlSecPtrListAdd(&(dsigCtx->manifestReferences), dsigRefCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd", NULL);
xmlSecDSigReferenceCtxDestroy(dsigRefCtx);
return(-1);
}
@@ -1290,12 +927,8 @@ xmlSecDSigCtxProcessManifestNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* process */
ret = xmlSecDSigReferenceCtxProcessNode(dsigRefCtx, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigReferenceCtxProcessNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecDSigReferenceCtxProcessNode",
+ xmlSecNodeGetName(cur));
return(-1);
}
@@ -1306,11 +939,7 @@ xmlSecDSigCtxProcessManifestNode(xmlSecDSigCtxPtr dsigCtx, xmlNodePtr node) {
/* we should have nothing else here */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
return(0);
@@ -1516,22 +1145,13 @@ xmlSecDSigReferenceCtxCreate(xmlSecDSigCtxPtr dsigCtx, xmlSecDSigReferenceOrigin
dsigRefCtx = (xmlSecDSigReferenceCtxPtr) xmlMalloc(sizeof(xmlSecDSigReferenceCtx));
if(dsigRefCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecDSigReferenceCtx)=%d",
- (int)sizeof(xmlSecDSigReferenceCtx));
+ xmlSecMallocError(sizeof(xmlSecDSigReferenceCtx), NULL);
return(NULL);
}
ret = xmlSecDSigReferenceCtxInitialize(dsigRefCtx, dsigCtx, origin);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecDSigReferenceCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecDSigReferenceCtxInitialize", NULL);
xmlSecDSigReferenceCtxDestroy(dsigRefCtx);
return(NULL);
}
@@ -1580,11 +1200,7 @@ xmlSecDSigReferenceCtxInitialize(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlSecDSi
/* initializes transforms dsigRefCtx */
ret = xmlSecTransformCtxInitialize(&(dsigRefCtx->transformCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxInitialize", NULL);
return(-1);
}
@@ -1593,11 +1209,7 @@ xmlSecDSigReferenceCtxInitialize(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlSecDSi
ret = xmlSecPtrListCopy(&(dsigRefCtx->transformCtx.enabledTransforms),
dsigCtx->enabledReferenceTransforms);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListCopy",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListCopy", NULL);
return(-1);
}
}
@@ -1697,12 +1309,8 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
/* set start URI (and check that it is enabled!) */
ret = xmlSecTransformCtxSetUri(transformCtx, dsigRefCtx->uri, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxSetUri",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(dsigRefCtx->uri));
+ xmlSecInternalError2("xmlSecTransformCtxSetUri", NULL,
+ "uri=%s", xmlSecErrorsSafeString(dsigRefCtx->uri));
return(-1);
}
@@ -1712,12 +1320,8 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
ret = xmlSecTransformCtxNodesListRead(transformCtx,
cur, xmlSecTransformUsageDSigTransform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodesListRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError2("xmlSecTransformCtxNodesListRead", NULL,
+ "node=%s", xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
return(-1);
}
@@ -1735,12 +1339,7 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
transformCtx,
xmlSecTransformMemBufId);
if(dsigRefCtx->preDigestMemBufMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformKlassGetName(xmlSecTransformMemBufId)));
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend(xmlSecTransformMemBufId)", NULL);
return(-1);
}
}
@@ -1750,12 +1349,8 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
dsigRefCtx->digestMethod = xmlSecTransformCtxNodeRead(&(dsigRefCtx->transformCtx),
cur, xmlSecTransformUsageDigestMethod);
if(dsigRefCtx->digestMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecTransformCtxNodeRead",
+ xmlSecNodeGetName(cur));
return(-1);
}
@@ -1767,20 +1362,14 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
dsigRefCtx->digestMethod = xmlSecTransformCtxCreateAndAppend(&(dsigRefCtx->transformCtx),
dsigRefCtx->dsigCtx->defSignMethodId);
if(dsigRefCtx->digestMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeDigestMethod));
+ /* if digest method is not specified in the template and not specified in
+ * the dsig context then it's an error.
+ */
+ xmlSecInvalidNodeError(cur, xmlSecNodeDigestMethod, NULL);
return(-1);
}
dsigRefCtx->digestMethod->operation = dsigRefCtx->dsigCtx->operation;
@@ -1790,22 +1379,13 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
digestValueNode = cur;
cur = xmlSecGetNextElementNode(cur->next);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeDigestValue));
+ xmlSecInvalidNodeError(cur, xmlSecNodeDigestValue, NULL);
return(-1);
}
/* if we have something else then it's an error */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
@@ -1816,11 +1396,7 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
/* we need to add base64 encode transform */
base64Encode = xmlSecTransformCtxCreateAndAppend(transformCtx, xmlSecTransformBase64Id);
if(base64Encode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
base64Encode->operation = xmlSecTransformOperationEncode;
@@ -1829,23 +1405,14 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
/* finally get transforms results */
ret = xmlSecTransformCtxExecute(transformCtx, node->doc);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri:%s",
- xmlSecErrorsSafeString(dsigRefCtx->uri));
+ xmlSecInternalError("xmlSecTransformCtxExecute", NULL);
return(-1);
}
dsigRefCtx->result = transformCtx->result;
if(dsigRefCtx->dsigCtx->operation == xmlSecTransformOperationSign) {
if((dsigRefCtx->result == NULL) || (xmlSecBufferGetData(dsigRefCtx->result) == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxExecute", NULL);
return(-1);
}
@@ -1861,12 +1428,7 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
ret = xmlSecTransformVerifyNodeContent(dsigRefCtx->digestMethod,
digestValueNode, transformCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformVerifyNodeContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri:%s",
- xmlSecErrorsSafeString(dsigRefCtx->uri));
+ xmlSecInternalError("xmlSecTransformVerifyNodeContent", NULL);
return(-1);
}
@@ -2027,6 +1589,7 @@ xmlSecDSigReferenceCtxDebugXmlDump(xmlSecDSigReferenceCtxPtr dsigRefCtx, FILE* o
}
}
+
/**************************************************************************
*
* xmlSecDSigReferenceCtxListKlass
@@ -2053,3 +1616,5 @@ xmlSecDSigReferenceCtxListGetKlass(void) {
}
#endif /* XMLSEC_NO_XMLDSIG */
+
+
diff --git a/src/xmlenc.c b/src/xmlenc.c
index 36c7bcad..825ed4c4 100644
--- a/src/xmlenc.c
+++ b/src/xmlenc.c
@@ -1,14 +1,20 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * "XML Encryption" implementation
- * http://www.w3.org/TR/xmlenc-core
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xmlenc
+ * @Short_description: XML Encryption support.
+ * @Stability: Stable
+ *
+ * [XML Encryption](http://www.w3.org/TR/xmlenc-core) implementation.
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_XMLENC
@@ -60,22 +66,13 @@ xmlSecEncCtxCreate(xmlSecKeysMngrPtr keysMngr) {
encCtx = (xmlSecEncCtxPtr) xmlMalloc(sizeof(xmlSecEncCtx));
if(encCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecEncCtx)=%d",
- (int)sizeof(xmlSecEncCtx));
+ xmlSecMallocError(sizeof(xmlSecEncCtx), NULL);
return(NULL);
}
ret = xmlSecEncCtxInitialize(encCtx, keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxInitialize", NULL);
xmlSecEncCtxDestroy(encCtx);
return(NULL);
}
@@ -118,22 +115,14 @@ xmlSecEncCtxInitialize(xmlSecEncCtxPtr encCtx, xmlSecKeysMngrPtr keysMngr) {
/* initialize key info */
ret = xmlSecKeyInfoCtxInitialize(&(encCtx->keyInfoReadCtx), keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize", NULL);
return(-1);
}
encCtx->keyInfoReadCtx.mode = xmlSecKeyInfoModeRead;
ret = xmlSecKeyInfoCtxInitialize(&(encCtx->keyInfoWriteCtx), keysMngr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxInitialize", NULL);
return(-1);
}
encCtx->keyInfoWriteCtx.mode = xmlSecKeyInfoModeWrite;
@@ -143,11 +132,7 @@ xmlSecEncCtxInitialize(xmlSecEncCtxPtr encCtx, xmlSecKeysMngrPtr keysMngr) {
/* initializes transforms encCtx */
ret = xmlSecTransformCtxInitialize(&(encCtx->transformCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxInitialize", NULL);
return(-1);
}
@@ -261,31 +246,19 @@ xmlSecEncCtxCopyUserPref(xmlSecEncCtxPtr dst, xmlSecEncCtxPtr src) {
ret = xmlSecTransformCtxCopyUserPref(&(dst->transformCtx), &(src->transformCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCopyUserPref", NULL);
return(-1);
}
ret = xmlSecKeyInfoCtxCopyUserPref(&(dst->keyInfoReadCtx), &(src->keyInfoReadCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCopyUserPref", NULL);
return(-1);
}
ret = xmlSecKeyInfoCtxCopyUserPref(&(dst->keyInfoWriteCtx), &(src->keyInfoWriteCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoCtxCopyUserPref",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoCtxCopyUserPref", NULL);
return(-1);
}
@@ -320,22 +293,14 @@ xmlSecEncCtxBinaryEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl,
/* read the template and set encryption method, key, etc. */
ret = xmlSecEncCtxEncDataNodeRead(encCtx, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeRead", NULL);
return(-1);
}
ret = xmlSecTransformCtxBinaryExecute(&(encCtx->transformCtx), data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxBinaryExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "dataSize=%d",
- dataSize);
+ xmlSecInternalError2("xmlSecTransformCtxBinaryExecute", NULL,
+ "dataSize=%d", dataSize);
return(-1);
}
@@ -344,11 +309,7 @@ xmlSecEncCtxBinaryEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl,
ret = xmlSecEncCtxEncDataNodeWrite(encCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeWrite", NULL);
return(-1);
}
return(0);
@@ -383,21 +344,13 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
/* read the template and set encryption method, key, etc. */
ret = xmlSecEncCtxEncDataNodeRead(encCtx, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeRead", NULL);
return(-1);
}
ret = xmlSecTransformCtxPrepare(&(encCtx->transformCtx), xmlSecTransformDataTypeBin);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxPrepare",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=bin");
+ xmlSecInternalError("xmlSecTransformCtxPrepare(TypeBin)", NULL);
return(-1);
}
@@ -405,11 +358,8 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
output = xmlSecTransformCreateOutputBuffer(encCtx->transformCtx.first,
&(encCtx->transformCtx));
if(output == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(encCtx->transformCtx.first)),
- "xmlSecTransformCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCreateOutputBuffer",
+ xmlSecTransformGetName(encCtx->transformCtx.first));
return(-1);
}
@@ -425,12 +375,8 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
xmlNodeDumpOutput(output, node->doc, cur, 0, 0, NULL);
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "type=%s",
- xmlSecErrorsSafeString(encCtx->type));
+ xmlSecInvalidStringTypeError("encryption type", encCtx->type,
+ "supported encryption type", NULL);
xmlOutputBufferClose(output);
return(-1);
}
@@ -438,11 +384,7 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
/* close the buffer and flush everything */
ret = xmlOutputBufferClose(output);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", NULL);
return(-1);
}
@@ -451,11 +393,7 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
ret = xmlSecEncCtxEncDataNodeWrite(encCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeWrite", NULL);
return(-1);
}
@@ -465,23 +403,15 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
if((encCtx->flags & XMLSEC_ENC_RETURN_REPLACED_NODE) != 0) {
ret = xmlSecReplaceNodeAndReturn(node, tmpl, &(encCtx->replacedNodeList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNodeAndReturn",
+ xmlSecNodeGetName(node));
return(-1);
}
} else {
ret = xmlSecReplaceNode(node, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNode",
+ xmlSecNodeGetName(node));
return(-1);
}
}
@@ -492,38 +422,27 @@ xmlSecEncCtxXmlEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, xmlNodePtr node)
if((encCtx->flags & XMLSEC_ENC_RETURN_REPLACED_NODE) != 0) {
ret = xmlSecReplaceContentAndReturn(node, tmpl, &(encCtx->replacedNodeList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceContentAndReturn",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceContentAndReturn",
+ xmlSecNodeGetName(node));
return(-1);
}
} else {
ret = xmlSecReplaceContent(node, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceContent",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceContent",
+ xmlSecNodeGetName(node));
return(-1);
}
}
encCtx->resultReplaced = 1;
} else {
- /* we should've catached this error before */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_TYPE,
- "type=%s",
- xmlSecErrorsSafeString(encCtx->type));
- return(-1);
+ /* we should've caught this error before */
+ xmlSecInvalidStringTypeError("encryption type", encCtx->type,
+ "supported encryption type", NULL);
+ return(-1);
}
+ /* done */
return(0);
}
@@ -553,34 +472,22 @@ xmlSecEncCtxUriEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, const xmlChar *u
/* we need to add input uri transform first */
ret = xmlSecTransformCtxSetUri(&(encCtx->transformCtx), uri, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxSetUri",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecTransformCtxSetUri", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
return(-1);
}
/* read the template and set encryption method, key, etc. */
ret = xmlSecEncCtxEncDataNodeRead(encCtx, tmpl);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeRead", NULL);
return(-1);
}
/* encrypt the data */
ret = xmlSecTransformCtxExecute(&(encCtx->transformCtx), tmpl->doc);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxExecute", NULL);
return(-1);
}
@@ -589,11 +496,7 @@ xmlSecEncCtxUriEncrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr tmpl, const xmlChar *u
ret = xmlSecEncCtxEncDataNodeWrite(encCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeWrite", NULL);
return(-1);
}
@@ -620,11 +523,7 @@ xmlSecEncCtxDecrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* decrypt */
buffer = xmlSecEncCtxDecryptToBuffer(encCtx, node);
if(buffer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxDecryptToBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxDecryptToBuffer", NULL);
return(-1);
}
@@ -634,23 +533,15 @@ xmlSecEncCtxDecrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
if((encCtx->flags & XMLSEC_ENC_RETURN_REPLACED_NODE) != 0) {
ret = xmlSecReplaceNodeBufferAndReturn(node, xmlSecBufferGetData(buffer), xmlSecBufferGetSize(buffer), &(encCtx->replacedNodeList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNodeBufferAndReturn",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNodeBufferAndReturn",
+ xmlSecNodeGetName(node));
return(-1);
}
} else {
ret = xmlSecReplaceNodeBuffer(node, xmlSecBufferGetData(buffer), xmlSecBufferGetSize(buffer));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNodeBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNodeBuffer",
+ xmlSecNodeGetName(node));
return(-1);
}
}
@@ -663,23 +554,15 @@ xmlSecEncCtxDecrypt(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
if((encCtx->flags & XMLSEC_ENC_RETURN_REPLACED_NODE) != 0) {
ret = xmlSecReplaceNodeBufferAndReturn(node, xmlSecBufferGetData(buffer), xmlSecBufferGetSize(buffer), &(encCtx->replacedNodeList));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNodeBufferAndReturn",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNodeBufferAndReturn",
+ xmlSecNodeGetName(node));
return(-1);
}
} else {
ret = xmlSecReplaceNodeBuffer(node, xmlSecBufferGetData(buffer), xmlSecBufferGetSize(buffer));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecReplaceNodeBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)));
+ xmlSecInternalError("xmlSecReplaceNodeBuffer",
+ xmlSecNodeGetName(node));
return(-1);
}
}
@@ -712,11 +595,7 @@ xmlSecEncCtxDecryptToBuffer(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
ret = xmlSecEncCtxEncDataNodeRead(encCtx, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxEncDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxEncDataNodeRead", NULL);
return(NULL);
}
@@ -727,22 +606,14 @@ xmlSecEncCtxDecryptToBuffer(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
data = xmlNodeGetContent(encCtx->cipherValueNode);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(encCtx->cipherValueNode)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(encCtx->cipherValueNode, NULL, "empty");
return(NULL);
}
dataSize = xmlStrlen(data);
ret = xmlSecTransformCtxBinaryExecute(&(encCtx->transformCtx), data, dataSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxBinaryExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxBinaryExecute", NULL);
if(data != NULL) {
xmlFree(data);
}
@@ -754,11 +625,7 @@ xmlSecEncCtxDecryptToBuffer(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
} else {
ret = xmlSecTransformCtxExecute(&(encCtx->transformCtx), node->doc);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxBinaryExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxExecute", NULL);
return(NULL);
}
}
@@ -781,23 +648,13 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
switch(encCtx->mode) {
case xmlEncCtxModeEncryptedData:
if(!xmlSecCheckNodeName(node, xmlSecNodeEncryptedData, xmlSecEncNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptedData));
+ xmlSecInvalidNodeError(node, xmlSecNodeEncryptedData, NULL);
return(-1);
}
break;
case xmlEncCtxModeEncryptedKey:
if(!xmlSecCheckNodeName(node, xmlSecNodeEncryptedKey, xmlSecEncNs)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeEncryptedKey));
+ xmlSecInvalidNodeError(node, xmlSecNodeEncryptedKey, NULL);
return(-1);
}
break;
@@ -837,22 +694,13 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* next is required CipherData node */
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeCipherData, xmlSecEncNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCipherData));
+ xmlSecInvalidNodeError(cur, xmlSecNodeCipherData, NULL);
return(-1);
}
ret = xmlSecEncCtxCipherDataNodeRead(encCtx, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxCipherDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecEncCtxCipherDataNodeRead", NULL);
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -873,12 +721,7 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
if((cur != NULL) && (xmlSecCheckNodeName(cur, xmlSecNodeCarriedKeyName, xmlSecEncNs))) {
encCtx->carriedKeyName = xmlNodeGetContent(cur);
if(encCtx->carriedKeyName == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeCipherData));
+ xmlSecInvalidNodeContentError(cur, NULL, "empty");
return(-1);
}
/* TODO: decode the name? */
@@ -888,11 +731,7 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* if there is something left than it's an error */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
@@ -902,31 +741,20 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
encCtx->encMethod = xmlSecTransformCtxNodeRead(&(encCtx->transformCtx), encCtx->encMethodNode,
xmlSecTransformUsageEncryptionMethod);
if(encCtx->encMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(encCtx->encMethodNode)));
+ xmlSecInternalError("xmlSecTransformCtxNodeRead",
+ xmlSecNodeGetName(encCtx->encMethodNode));
return(-1);
}
} else if(encCtx->defEncMethodId != xmlSecTransformIdUnknown) {
encCtx->encMethod = xmlSecTransformCtxCreateAndAppend(&(encCtx->transformCtx),
encCtx->defEncMethodId);
if(encCtx->encMethod == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend",
+ xmlSecTransformKlassGetName(encCtx->defEncMethodId));
return(-1);
}
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "encryption method not specified");
+ xmlSecInvalidDataError("encryption method not specified", NULL);
return(-1);
}
encCtx->encMethod->operation = encCtx->operation;
@@ -934,12 +762,8 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* we have encryption method, find key */
ret = xmlSecTransformSetKeyReq(encCtx->encMethod, &(encCtx->keyInfoReadCtx.keyReq));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformSetKeyReq",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(encCtx->encMethod)));
+ xmlSecInternalError("xmlSecTransformSetKeyReq",
+ xmlSecTransformGetName(encCtx->encMethod));
return(-1);
}
@@ -954,23 +778,17 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
if((encCtx->encKey == NULL) ||
(!xmlSecKeyMatch(encCtx->encKey, NULL, &(encCtx->keyInfoReadCtx.keyReq)))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_KEY_NOT_FOUND,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecOtherError2(XMLSEC_ERRORS_R_KEY_NOT_FOUND, NULL,
+ "encMethod=%s",
+ xmlSecErrorsSafeString(xmlSecTransformGetName(encCtx->encMethod)));
return(-1);
}
/* set the key to the transform */
ret = xmlSecTransformSetKey(encCtx->encMethod, encCtx->encKey);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformSetKey",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "transform=%s",
- xmlSecErrorsSafeString(xmlSecTransformGetName(encCtx->encMethod)));
+ xmlSecInternalError("xmlSecTransformSetKey",
+ xmlSecTransformGetName(encCtx->encMethod));
return(-1);
}
@@ -981,11 +799,7 @@ xmlSecEncCtxEncDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* we need to add base64 encode transform */
base64Encode = xmlSecTransformCtxCreateAndAppend(&(encCtx->transformCtx), xmlSecTransformBase64Id);
if(base64Encode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndAppend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndAppend", NULL);
return(-1);
}
base64Encode->operation = xmlSecTransformOperationEncode;
@@ -1017,11 +831,7 @@ xmlSecEncCtxEncDataNodeWrite(xmlSecEncCtxPtr encCtx) {
if(encCtx->keyInfoNode != NULL) {
ret = xmlSecKeyInfoNodeWrite(encCtx->keyInfoNode, encCtx->encKey, &(encCtx->keyInfoWriteCtx));
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyInfoNodeWrite",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyInfoNodeWrite", NULL);
return(-1);
}
}
@@ -1049,11 +859,7 @@ xmlSecEncCtxCipherDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* we need to add base64 decode transform */
base64Decode = xmlSecTransformCtxCreateAndPrepend(&(encCtx->transformCtx), xmlSecTransformBase64Id);
if(base64Decode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxCreateAndPrepend",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCtxCreateAndPrepend", NULL);
return(-1);
}
}
@@ -1064,12 +870,8 @@ xmlSecEncCtxCipherDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
if(encCtx->operation == xmlSecTransformOperationDecrypt) {
ret = xmlSecEncCtxCipherReferenceNodeRead(encCtx, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecEncCtxCipherReferenceNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInternalError("xmlSecEncCtxCipherReferenceNodeRead",
+ xmlSecNodeGetName(cur));
return(-1);
}
}
@@ -1077,11 +879,7 @@ xmlSecEncCtxCipherDataNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
}
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
return(0);
@@ -1100,12 +898,8 @@ xmlSecEncCtxCipherReferenceNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
uri = xmlGetProp(node, xmlSecAttrURI);
ret = xmlSecTransformCtxSetUri(&(encCtx->transformCtx), uri, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxSetUri",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "uri=%s",
- xmlSecErrorsSafeString(uri));
+ xmlSecInternalError2("xmlSecTransformCtxSetUri", NULL,
+ "uri=%s", xmlSecErrorsSafeString(uri));
xmlFree(uri);
return(-1);
}
@@ -1118,12 +912,8 @@ xmlSecEncCtxCipherReferenceNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
ret = xmlSecTransformCtxNodesListRead(&(encCtx->transformCtx), cur,
xmlSecTransformUsageDSigTransform);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformCtxNodesListRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(encCtx->encMethodNode)));
+ xmlSecInternalError("xmlSecTransformCtxNodesListRead",
+ xmlSecNodeGetName(encCtx->encMethodNode));
return(-1);
}
cur = xmlSecGetNextElementNode(cur->next);
@@ -1131,11 +921,7 @@ xmlSecEncCtxCipherReferenceNodeRead(xmlSecEncCtxPtr encCtx, xmlNodePtr node) {
/* if there is something left than it's an error */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, NULL);
return(-1);
}
return(0);
diff --git a/src/xmlsec.c b/src/xmlsec.c
index 6098d3c5..4225d842 100644
--- a/src/xmlsec.c
+++ b/src/xmlsec.c
@@ -1,13 +1,19 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * General functions.
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xmlsec
+ * @Short_description: Utility functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -23,6 +29,53 @@
#include <xmlsec/io.h>
#include <xmlsec/errors.h>
+/*
+ * Custom external entity handler, denies all files except the initial
+ * document we're parsing (input_id == 1)
+ */
+/* default external entity loader, pointer saved during xmlInit */
+static xmlExternalEntityLoader
+xmlSecDefaultExternalEntityLoader = NULL;
+
+/*
+ * xmlSecNoXxeExternalEntityLoader:
+ * @URL: the URL for the entity to load
+ * @ID: public ID for the entity to load
+ * @ctxt: XML parser context, or NULL
+ *
+ * See libxml2's xmlLoadExternalEntity and xmlNoNetExternalEntityLoader.
+ * This function prevents any external (file or network) entities from being loaded.
+ */
+static xmlParserInputPtr
+xmlSecNoXxeExternalEntityLoader(const char *URL, const char *ID,
+ xmlParserCtxtPtr ctxt) {
+ if (ctxt == NULL) {
+ return(NULL);
+ }
+ if (ctxt->input_id == 1) {
+ return xmlSecDefaultExternalEntityLoader((const char *) URL, ID, ctxt);
+ }
+ xmlSecXmlError2("xmlSecNoXxeExternalEntityLoader", NULL,
+ "illegal external entity='%s'", xmlSecErrorsSafeString(URL));
+ return(NULL);
+}
+
+/*
+ * xmlSecSetExternalEntityLoader:
+ * @entityLoader: the new entity resolver function, or NULL to restore
+ * libxml2's default handler
+ *
+ * Wrapper for xmlSetExternalEntityLoader.
+ */
+void
+xmlSecSetExternalEntityLoader(xmlExternalEntityLoader entityLoader) {
+ if (entityLoader == NULL) {
+ entityLoader = xmlSecDefaultExternalEntityLoader;
+ }
+ xmlSetExternalEntityLoader(entityLoader);
+}
+
+
/**
* xmlSecInit:
*
@@ -38,37 +91,30 @@ xmlSecInit(void) {
#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
if(xmlSecCryptoDLInit() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLInit", NULL);
return(-1);
}
#endif /* XMLSEC_NO_CRYPTO_DYNAMIC_LOADING */
if(xmlSecKeyDataIdsInit() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecKeyDataIdsInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecKeyDataIdsInit", NULL);
return(-1);
}
if(xmlSecTransformIdsInit() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecTransformIdsInit",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformIdsInit", NULL);
return(-1);
}
+ /* initialise safe external entity loader */
+ if (!xmlSecDefaultExternalEntityLoader) {
+ xmlSecDefaultExternalEntityLoader = xmlGetExternalEntityLoader();
+ }
+ xmlSetExternalEntityLoader(xmlSecNoXxeExternalEntityLoader);
/* we use rand() function to generate id attributes */
- srand(time(NULL));
+ srand((unsigned int)time(NULL));
return(0);
}
@@ -88,11 +134,7 @@ xmlSecShutdown(void) {
#ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
if(xmlSecCryptoDLShutdown() < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecCryptoDLShutdown",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecCryptoDLShutdown", NULL);
res = -1;
}
#endif /* XMLSEC_NO_CRYPTO_DYNAMIC_LOADING */
@@ -129,39 +171,27 @@ int
xmlSecCheckVersionExt(int major, int minor, int subminor, xmlSecCheckVersionMode mode) {
/* we always want to have a match for major version number */
if(major != XMLSEC_VERSION_MAJOR) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "expected major version=%d;real major version=%d",
- XMLSEC_VERSION_MAJOR, major);
+ xmlSecOtherError3(XMLSEC_ERRORS_R_INVALID_VERSION, NULL,
+ "expected major version=%d;real major version=%d",
+ XMLSEC_VERSION_MAJOR, major);
return(0);
}
switch(mode) {
case xmlSecCheckVersionExactMatch:
if((minor != XMLSEC_VERSION_MINOR) || (subminor != XMLSEC_VERSION_SUBMINOR)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "mode=exact;expected minor version=%d;real minor version=%d;expected subminor version=%d;real subminor version=%d",
- XMLSEC_VERSION_MINOR, minor,
- XMLSEC_VERSION_SUBMINOR, subminor);
+ xmlSecOtherError5(XMLSEC_ERRORS_R_INVALID_VERSION, NULL,
+ "mode=exact;expected minor version=%d;real minor version=%d;expected subminor version=%d;real subminor version=%d",
+ XMLSEC_VERSION_MINOR, minor, XMLSEC_VERSION_SUBMINOR, subminor);
return(0);
}
break;
case xmlSecCheckVersionABICompatible:
- if((minor > XMLSEC_VERSION_MINOR) ||
- ((minor == XMLSEC_VERSION_MINOR) &&
- (subminor > XMLSEC_VERSION_SUBMINOR))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "mode=abi compatible;expected minor version=%d;real minor version=%d;expected subminor version=%d;real subminor version=%d",
- XMLSEC_VERSION_MINOR, minor,
- XMLSEC_VERSION_SUBMINOR, subminor);
+ if((minor > XMLSEC_VERSION_MINOR) || ((minor == XMLSEC_VERSION_MINOR) &&
+ (subminor > XMLSEC_VERSION_SUBMINOR))) {
+ xmlSecOtherError5(XMLSEC_ERRORS_R_INVALID_VERSION, NULL,
+ "mode=abi compatible;expected minor version=%d;real minor version=%d;expected subminor version=%d;real subminor version=%d",
+ XMLSEC_VERSION_MINOR, minor, XMLSEC_VERSION_SUBMINOR, subminor);
return(0);
}
break;
diff --git a/src/xmltree.c b/src/xmltree.c
index 3ef7f977..df99931d 100644
--- a/src/xmltree.c
+++ b/src/xmltree.c
@@ -1,20 +1,24 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * Common XML Doc utility functions
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xmltree
+ * @Short_description: XML tree functions.
+ * @Stability: Stable
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#include <time.h>
-#include <errno.h>
#include <libxml/tree.h>
#include <libxml/valid.h>
@@ -28,6 +32,61 @@
#include <xmlsec/base64.h>
#include <xmlsec/errors.h>
+static const xmlChar* g_xmlsec_xmltree_default_linefeed = xmlSecStringCR;
+
+/**
+ * xmlSecGetDefaultLineFeed:
+ *
+ * Gets the current default linefeed.
+ *
+ * Returns: the current default linefeed.
+ */
+const xmlChar*
+xmlSecGetDefaultLineFeed(void)
+{
+ return g_xmlsec_xmltree_default_linefeed;
+}
+
+/**
+ * xmlSecSetDefaultLineFeed:
+ * @linefeed: default linefeed.
+ *
+ * Sets the current default linefeed. The caller must ensure that the linefeed
+ * string exists for the lifetime of the program or until the new linefeed is set.
+ */
+void
+xmlSecSetDefaultLineFeed(const xmlChar *linefeed)
+{
+ g_xmlsec_xmltree_default_linefeed = linefeed;
+}
+
+/**
+ * xmlSecFindSibling:
+ * @cur: the pointer to XML node.
+ * @name: the name.
+ * @ns: the namespace href (may be NULL).
+ *
+ * Searches @cur and the next siblings of the @cur node having given name and
+ * namespace href.
+ *
+ * Returns: the pointer to the found node or NULL if an error occurs or
+ * node is not found.
+ */
+xmlNodePtr
+xmlSecFindSibling(const xmlNodePtr cur, const xmlChar *name, const xmlChar *ns) {
+ xmlNodePtr tmp;
+ xmlSecAssert2(name != NULL, NULL);
+
+ for(tmp = cur; tmp != NULL; tmp = tmp->next) {
+ if(tmp->type == XML_ELEMENT_NODE) {
+ if(xmlSecCheckNodeName(tmp, name, ns)) {
+ return(tmp);
+ }
+ }
+ }
+ return(NULL);
+}
+
/**
* xmlSecFindChild:
* @parent: the pointer to XML node.
@@ -42,21 +101,10 @@
*/
xmlNodePtr
xmlSecFindChild(const xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
- xmlNodePtr cur;
-
xmlSecAssert2(parent != NULL, NULL);
xmlSecAssert2(name != NULL, NULL);
- cur = parent->children;
- while(cur != NULL) {
- if(cur->type == XML_ELEMENT_NODE) {
- if(xmlSecCheckNodeName(cur, name, ns)) {
- return(cur);
- }
- }
- cur = cur->next;
- }
- return(NULL);
+ return(xmlSecFindSibling(parent->children, name, ns));
}
/**
@@ -185,13 +233,9 @@ xmlSecAddChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
if(parent->children == NULL) {
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddChild(parent, text);
@@ -199,11 +243,7 @@ xmlSecAddChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
cur = xmlNewChild(parent, NULL, name, NULL);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewChild",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewChild", NULL);
return(NULL);
}
@@ -215,18 +255,18 @@ xmlSecAddChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
nsPtr = xmlSearchNsByHref(cur->doc, cur, ns);
if((nsPtr == NULL) || (xmlSearchNs(cur->doc, cur, nsPtr->prefix) != nsPtr)) {
nsPtr = xmlNewNs(cur, ns, NULL);
+ if(nsPtr == NULL) {
+ xmlSecXmlError("xmlNewNs", NULL);
+ return(NULL);
+ }
}
xmlSetNs(cur, nsPtr);
}
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddChild(parent, text);
@@ -252,13 +292,9 @@ xmlSecAddChildNode(xmlNodePtr parent, xmlNodePtr child) {
if(parent->children == NULL) {
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddChild(parent, text);
@@ -267,13 +303,9 @@ xmlSecAddChildNode(xmlNodePtr parent, xmlNodePtr child) {
xmlAddChild(parent, child);
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddChild(parent, text);
@@ -282,6 +314,52 @@ xmlSecAddChildNode(xmlNodePtr parent, xmlNodePtr child) {
}
/**
+ * xmlSecEnsureEmptyChild:
+ * @parent: the pointer to XML node.
+ * @name: the name.
+ * @ns: the namespace href (may be NULL).
+ *
+ * Searches a direct child of the @parent node having given name and
+ * namespace href. If not found then element node with given name / namespace
+ * is added.
+ *
+ * Returns: the pointer to the found or created node; or NULL if an error occurs.
+ */
+xmlNodePtr
+xmlSecEnsureEmptyChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
+ xmlNodePtr cur = NULL;
+ xmlNodePtr tmp;
+
+ xmlSecAssert2(parent != NULL, NULL);
+ xmlSecAssert2(name != NULL, NULL);
+
+ /* try to find an empty node first */
+ tmp = xmlSecFindNode(parent, name, ns);
+ while(tmp != NULL) {
+ cur = tmp;
+ if(xmlSecIsEmptyNode(cur) == 1) {
+ return(cur);
+ }
+ tmp = xmlSecFindSibling(cur->next, name, ns);
+ }
+
+ /* if not found then either add next or add at the end */
+ if(cur == NULL) {
+ cur = xmlSecAddChild(parent, name, ns);
+ } else if((cur->next != NULL) && (cur->next->type == XML_TEXT_NODE)) {
+ cur = xmlSecAddNextSibling(cur->next, name, ns);
+ } else {
+ cur = xmlSecAddNextSibling(cur, name, ns);
+ }
+ if(cur == NULL) {
+ xmlSecInternalError2("xmlSecAddChild or xmlSecAddNextSibling", NULL,
+ "node=%s", xmlSecErrorsSafeString(name));
+ return(NULL);
+ }
+ return(cur);
+}
+
+/**
* xmlSecAddNextSibling
* @node: the pointer to an XML node.
* @name: the new node name.
@@ -301,11 +379,7 @@ xmlSecAddNextSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
cur = xmlNewNode(NULL, name);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewNode", NULL);
return(NULL);
}
xmlAddNextSibling(node, cur);
@@ -323,13 +397,9 @@ xmlSecAddNextSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
}
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddNextSibling(node, text);
@@ -357,11 +427,7 @@ xmlSecAddPrevSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
cur = xmlNewNode(NULL, name);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewNode", NULL);
return(NULL);
}
xmlAddPrevSibling(node, cur);
@@ -379,13 +445,9 @@ xmlSecAddPrevSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
}
/* TODO: add indents */
- text = xmlNewText(xmlSecStringCR);
+ text = xmlNewText(xmlSecGetDefaultLineFeed());
if(text == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewText",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewText", NULL);
return(NULL);
}
xmlAddPrevSibling(node, text);
@@ -453,11 +515,7 @@ xmlSecReplaceNodeAndReturn(xmlNodePtr node, xmlNodePtr newNode, xmlNodePtr* repl
oldNode = xmlReplaceNode(node, newNode);
if(oldNode == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlReplaceNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlReplaceNode", NULL);
return(-1);
}
@@ -565,17 +623,15 @@ int
xmlSecReplaceNodeBufferAndReturn(xmlNodePtr node, const xmlSecByte *buffer, xmlSecSize size, xmlNodePtr *replaced) {
xmlNodePtr results = NULL;
xmlNodePtr next = NULL;
+ int ret;
xmlSecAssert2(node != NULL, -1);
xmlSecAssert2(node->parent != NULL, -1);
/* parse buffer in the context of node's parent */
- if(xmlParseInNodeContext(node->parent, (const char*)buffer, size, XML_PARSE_NODICT, &results) != XML_ERR_OK) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlParseInNodeContext",
- XMLSEC_ERRORS_R_XML_FAILED,
- "Failed to parse content");
+ ret = xmlParseInNodeContext(node->parent, (const char*)buffer, size, XML_PARSE_NODICT, &results);
+ if(ret != XML_ERR_OK) {
+ xmlSecXmlError("xmlParseInNodeContext", NULL);
return(-1);
}
@@ -615,24 +671,17 @@ xmlSecNodeEncodeAndSetContent(xmlNodePtr node, const xmlChar * buffer) {
xmlSecAssert2(node->doc != NULL, -1);
if(buffer != NULL) {
- xmlChar * tmp;
-
+ xmlChar * tmp;
tmp = xmlEncodeSpecialChars(node->doc, buffer);
if (tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlEncodeSpecialChars",
- XMLSEC_ERRORS_R_XML_FAILED,
- "Failed to encode special characters");
+ xmlSecXmlError("xmlEncodeSpecialChars", NULL);
return(-1);
}
-
xmlNodeSetContent(node, tmp);
xmlFree(tmp);
} else {
xmlNodeSetContent(node, NULL);
}
-
return(0);
}
@@ -667,12 +716,7 @@ xmlSecAddIDs(xmlDocPtr doc, xmlNodePtr cur, const xmlChar** ids) {
if(tmp == NULL) {
xmlAddID(NULL, doc, name, attr);
} else if(tmp != attr) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_INVALID_DATA,
- "id=%s already defined",
- xmlSecErrorsSafeString(name));
+ xmlSecInvalidStringDataError("id", name, "unique id (id already defined)", NULL);
}
xmlFree(name);
}
@@ -694,172 +738,9 @@ xmlSecAddIDs(xmlDocPtr doc, xmlNodePtr cur, const xmlChar** ids) {
}
/**
- * xmlSecGenerateAndAddID:
- * @node: the node to ID attr to.
- * @attrName: the ID attr name.
- * @prefix: the prefix to add to the generated ID (can be NULL).
- * @len: the length of ID.
- *
- * Generates a unique ID in the format <@prefix>base64-encoded(@len random bytes)
- * and puts it in the attribute @attrName.
- *
- * Returns: 0 on success or a negative value if an error occurs.
- */
-int
-xmlSecGenerateAndAddID(xmlNodePtr node, const xmlChar* attrName, const xmlChar* prefix, xmlSecSize len) {
- xmlChar* id;
- int count;
-
- xmlSecAssert2(node != NULL, -1);
- xmlSecAssert2(attrName != NULL, -1);
-
- /* we will try 5 times before giving up */
- for(count = 0; count < 5; count++) {
- id = xmlSecGenerateID(prefix, len);
- if(id == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGenerateID",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(-1);
- }
-
- if((node->doc == NULL) || (xmlGetID(node->doc, id) == NULL)) {
- /* this is a unique ID in the document and we can use it */
- if(xmlSetProp(node, attrName, id) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlFree(id);
- return(-1);
- }
-
- xmlFree(id);
- return(0);
- }
- xmlFree(id);
- }
-
- return(-1);
-}
-
-/**
- * xmlSecGenerateID:
- * @prefix: the prefix to add to the generated ID (can be NULL).
- * @len: the length of ID.
- *
- * Generates a unique ID in the format <@prefix>base64-encoded(@len random bytes).
- * The caller is responsible for freeing returned string using @xmlFree function.
- *
- * Returns: pointer to generated ID string or NULL if an error occurs.
- */
-xmlChar*
-xmlSecGenerateID(const xmlChar* prefix, xmlSecSize len) {
- xmlSecBuffer buffer;
- xmlSecSize i, binLen;
- xmlChar* res;
- xmlChar* p;
- int ret;
-
- xmlSecAssert2(len > 0, NULL);
-
- /* we will do base64 decoding later */
- binLen = (3 * len + 1) / 4;
-
- ret = xmlSecBufferInitialize(&buffer, binLen + 1);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- return(NULL);
- }
- xmlSecAssert2(xmlSecBufferGetData(&buffer) != NULL, NULL);
- xmlSecAssert2(xmlSecBufferGetMaxSize(&buffer) >= binLen, NULL);
-
- ret = xmlSecBufferSetSize(&buffer, binLen);
- if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferSetSize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecBufferFinalize(&buffer);
- return(NULL);
- }
- xmlSecAssert2(xmlSecBufferGetSize(&buffer) == binLen, NULL);
-
- /* create random bytes */
- unsigned int seed = time(NULL);
- for(i = 0; i < binLen; i++) {
- (xmlSecBufferGetData(&buffer)) [i] = (xmlSecByte) (256.0 * rand_r(&seed) / (RAND_MAX + 1.0));
- }
-
- /* base64 encode random bytes */
- res = xmlSecBase64Encode(xmlSecBufferGetData(&buffer), xmlSecBufferGetSize(&buffer), 0);
- if((res == NULL) || (xmlStrlen(res) == 0)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBase64Encode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlSecBufferFinalize(&buffer);
- return(NULL);
- }
- xmlSecBufferFinalize(&buffer);
-
- /* truncate the generated id attribute if needed */
- if(xmlStrlen(res) > (int)len) {
- res[len] = '\0';
- }
-
- /* we need to cleanup base64 encoded id because ID attr can't have '+' or '/' characters */
- for(p = res; (*p) != '\0'; p++) {
- if(((*p) == '+') || ((*p) == '/')) {
- (*p) = '_';
- }
- }
-
- /* add prefix if exist */
- if(prefix) {
- xmlChar* tmp;
- xmlSecSize tmpLen;
-
- tmpLen = xmlStrlen(prefix) + xmlStrlen(res) + 1;
- tmp = xmlMalloc(tmpLen + 1);
- if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
- xmlFree(res);
- return(NULL);
- }
-
- xmlSecStrPrintf(tmp, tmpLen, "%s%s", prefix, res);
- xmlFree(res);
- res = tmp;
- } else {
- /* no prefix: check that ID attribute starts from a letter */
- if(!(((res[0] >= 'A') && (res[0] <= 'Z')) ||
- ((res[0] >= 'a') && (res[0] <= 'z')))) {
- res[0] = 'A';
- }
- }
-
- return(res);
-}
-
-
-/**
* xmlSecCreateTree:
* @rootNodeName: the root node name.
- * @rootNodeNs: the root node namespace (otpional).
+ * @rootNodeNs: the root node namespace (optional).
*
* Creates a new XML tree with one root node @rootNodeName.
*
@@ -876,22 +757,15 @@ xmlSecCreateTree(const xmlChar* rootNodeName, const xmlChar* rootNodeNs) {
/* create doc */
doc = xmlNewDoc(BAD_CAST "1.0");
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDoc",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlNewDoc", NULL);
return(NULL);
}
/* create root node */
root = xmlNewDocNode(doc, NULL, rootNodeName, NULL);
if(root == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewDocNode",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=Keys");
+ xmlSecXmlError2("xmlNewDocNode", NULL,
+ "node=%s", rootNodeName);
xmlFreeDoc(doc);
return(NULL);
}
@@ -900,12 +774,8 @@ xmlSecCreateTree(const xmlChar* rootNodeName, const xmlChar* rootNodeNs) {
/* and set root node namespace */
ns = xmlNewNs(root, rootNodeNs, NULL);
if(ns == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNewNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "ns=%s",
- xmlSecErrorsSafeString(rootNodeNs));
+ xmlSecXmlError2("xmlNewNs", NULL,
+ "ns=%s", xmlSecErrorsSafeString(rootNodeNs));
xmlFreeDoc(doc);
return(NULL);
}
@@ -918,7 +788,7 @@ xmlSecCreateTree(const xmlChar* rootNodeName, const xmlChar* rootNodeNs) {
* xmlSecIsEmptyNode:
* @node: the node to check
*
- * Checks whethere the @node is empty (i.e. has only whitespaces children).
+ * Checks whether the @node is empty (i.e. has only whitespaces children).
*
* Returns: 1 if @node is empty, 0 otherwise or a negative value if an error occurs.
*/
@@ -947,7 +817,7 @@ xmlSecIsEmptyNode(xmlNodePtr node) {
* xmlSecIsEmptyString:
* @str: the string to check
*
- * Checks whethere the @str is empty (i.e. has only whitespaces children).
+ * Checks whether the @str is empty (i.e. has only whitespaces children).
*
* Returns: 1 if @str is empty, 0 otherwise or a negative value if an error occurs.
*/
@@ -980,12 +850,8 @@ xmlSecPrintXmlString(FILE * fd, const xmlChar * str) {
xmlChar * encoded_str = NULL;
encoded_str = xmlEncodeSpecialChars(NULL, str);
if(encoded_str == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlEncodeSpecialChars",
- XMLSEC_ERRORS_R_XML_FAILED,
- "string=%s",
- xmlSecErrorsSafeString(str));
+ xmlSecXmlError2("xmlEncodeSpecialChars", NULL,
+ "string=%s", xmlSecErrorsSafeString(str));
return(-1);
}
@@ -996,12 +862,7 @@ xmlSecPrintXmlString(FILE * fd, const xmlChar * str) {
}
if(res < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "fprintf",
- XMLSEC_ERRORS_R_IO_FAILED,
- "res=%d,errno=%d",
- res, errno);
+ xmlSecIOError("fprintf", NULL, NULL);
return(-1);
}
return(res);
@@ -1023,6 +884,7 @@ xmlChar*
xmlSecGetQName(xmlNodePtr node, const xmlChar* href, const xmlChar* local) {
xmlChar* qname;
xmlNsPtr ns;
+ int ret;
xmlSecAssert2(node != NULL, NULL);
xmlSecAssert2(local != NULL, NULL);
@@ -1031,13 +893,8 @@ xmlSecGetQName(xmlNodePtr node, const xmlChar* href, const xmlChar* local) {
* it might cause collisions */
ns = xmlSearchNsByHref(node->doc, node, href);
if((ns == NULL) && (href != NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSearchNsByHref",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s,href=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(href));
+ xmlSecXmlError2("xmlSearchNsByHref", NULL,
+ "node=%s", xmlSecErrorsSafeString(node->name));
return(NULL);
}
@@ -1045,26 +902,22 @@ xmlSecGetQName(xmlNodePtr node, const xmlChar* href, const xmlChar* local) {
xmlSecSize len;
len = xmlStrlen(local) + xmlStrlen(ns->prefix) + 4;
- qname = xmlMalloc(len);
+ qname = (xmlChar *)xmlMalloc(len);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlMalloc",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(node->name));
+ xmlSecMallocError(len, NULL);
+ return(NULL);
+ }
+
+ ret = xmlStrPrintf(qname, len, "%s:%s", ns->prefix, local);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", NULL);
+ xmlFree(qname);
return(NULL);
}
- xmlSecStrPrintf(qname, len, "%s:%s", ns->prefix, local);
} else {
qname = xmlStrdup(local);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(node->name));
+ xmlSecStrdupError(local, NULL);
return(NULL);
}
}
@@ -1164,15 +1017,9 @@ xmlSecQName2IntegerGetIntegerFromString(xmlSecQName2IntegerInfoConstPtr info,
qnameLocalPart = xmlStrchr(qname, ':');
if(qnameLocalPart != NULL) {
- qnamePrefix = xmlStrndup(qname, qnameLocalPart - qname);
+ qnamePrefix = xmlStrndup(qname, (int)(qnameLocalPart - qname));
if(qnamePrefix == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrndup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "node=%s,value=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qname));
+ xmlSecStrdupError(qname, NULL);
return(-1);
}
qnameLocalPart++;
@@ -1184,13 +1031,8 @@ xmlSecQName2IntegerGetIntegerFromString(xmlSecQName2IntegerInfoConstPtr info,
/* search namespace href */
ns = xmlSearchNs(node->doc, node, qnamePrefix);
if((ns == NULL) && (qnamePrefix != NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSearchNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s,qnamePrefix=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qnamePrefix));
+ xmlSecXmlError2("xmlSearchNs", NULL,
+ "node=%s", xmlSecErrorsSafeString(node->name));
if(qnamePrefix != NULL) {
xmlFree(qnamePrefix);
}
@@ -1201,14 +1043,11 @@ xmlSecQName2IntegerGetIntegerFromString(xmlSecQName2IntegerInfoConstPtr info,
/* and finally search for integer */
ret = xmlSecQName2IntegerGetInteger(info, qnameHref, qnameLocalPart, intValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetInteger",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,qnameLocalPart=%s,qnameHref=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qnameLocalPart),
- xmlSecErrorsSafeString(qnameHref));
+ xmlSecInternalError4("xmlSecQName2IntegerGetInteger", NULL,
+ "node=%s,qnameLocalPart=%s,qnameHref=%s",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(qnameLocalPart),
+ xmlSecErrorsSafeString(qnameHref));
if(qnamePrefix != NULL) {
xmlFree(qnamePrefix);
}
@@ -1243,13 +1082,10 @@ xmlSecQName2IntegerGetStringFromInteger(xmlSecQName2IntegerInfoConstPtr info,
qnameInfo = xmlSecQName2IntegerGetInfo(info, intValue);
if(qnameInfo == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetInfo",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,intValue=%d",
- xmlSecErrorsSafeString(node->name),
- intValue);
+ xmlSecInternalError3("xmlSecQName2IntegerGetInfo", NULL,
+ "node=%s,intValue=%d",
+ xmlSecErrorsSafeString(node->name),
+ intValue);
return(NULL);
}
@@ -1278,25 +1114,18 @@ xmlSecQName2IntegerNodeRead(xmlSecQName2IntegerInfoConstPtr info, xmlNodePtr nod
content = xmlNodeGetContent(node);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNodeGetContent",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(node->name));
+ xmlSecXmlError2("xmlNodeGetContent", NULL,
+ "node=%s", xmlSecErrorsSafeString(node->name));
return(-1);
}
/* todo: trim content? */
ret = xmlSecQName2IntegerGetIntegerFromString(info, node, content, intValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetIntegerFromString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,value=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(content));
+ xmlSecInternalError3("xmlSecQName2IntegerGetIntegerFromString", NULL,
+ "node=%s,value=%s",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(content));
xmlFree(content);
return(-1);
}
@@ -1330,25 +1159,19 @@ xmlSecQName2IntegerNodeWrite(xmlSecQName2IntegerInfoConstPtr info, xmlNodePtr no
/* find and build qname */
qname = xmlSecQName2IntegerGetStringFromInteger(info, node, intValue);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetStringFromInteger",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,intValue=%d",
- xmlSecErrorsSafeString(node->name),
- intValue);
+ xmlSecInternalError3("xmlSecQName2IntegerGetStringFromInteger", NULL,
+ "node=%s,intValue=%d",
+ xmlSecErrorsSafeString(node->name),
+ intValue);
return(-1);
}
cur = xmlSecAddChild(node, nodeName, nodeNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,intValue=%d",
- xmlSecErrorsSafeString(nodeName),
- intValue);
+ xmlSecInternalError3("xmlSecAddChild", NULL,
+ "node=%s,intValue=%d",
+ xmlSecErrorsSafeString(nodeName),
+ intValue);
xmlFree(qname);
return(-1);
}
@@ -1383,27 +1206,19 @@ xmlSecQName2IntegerAttributeRead(xmlSecQName2IntegerInfoConstPtr info, xmlNodePt
attrValue = xmlGetProp(node, attrName);
if(attrValue == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlGetProp",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s,attrValue=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(attrName));
+ xmlSecXmlError2("xmlGetProp", NULL,
+ "node=%s", xmlSecErrorsSafeString(node->name));
return(-1);
}
/* todo: trim value? */
ret = xmlSecQName2IntegerGetIntegerFromString(info, node, attrValue, intValue);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetIntegerFromString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,attrName=%s,attrValue=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(attrName),
- xmlSecErrorsSafeString(attrValue));
+ xmlSecInternalError4("xmlSecQName2IntegerGetIntegerFromString", NULL,
+ "node=%s,attrName=%s,attrValue=%s",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(attrName),
+ xmlSecErrorsSafeString(attrValue));
xmlFree(attrValue);
return(-1);
}
@@ -1437,27 +1252,21 @@ xmlSecQName2IntegerAttributeWrite(xmlSecQName2IntegerInfoConstPtr info, xmlNodeP
/* find and build qname */
qname = xmlSecQName2IntegerGetStringFromInteger(info, node, intValue);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2IntegerGetStringFromInteger",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,attrName=%s,intValue=%d",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(attrName),
- intValue);
+ xmlSecInternalError4("xmlSecQName2IntegerGetStringFromInteger", NULL,
+ "node=%s,attrName=%s,intValue=%d",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(attrName),
+ intValue);
return(-1);
}
attr = xmlSetProp(node, attrName, qname);
if(attr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChildNode",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,attrName=%s,intValue=%d",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(attrName),
- intValue);
+ xmlSecInternalError4("xmlSetProp", NULL,
+ "node=%s,attrName=%s,intValue=%d",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(attrName),
+ intValue);
xmlFree(qname);
return(-1);
}
@@ -1612,15 +1421,9 @@ xmlSecQName2BitMaskGetBitMaskFromString(xmlSecQName2BitMaskInfoConstPtr info,
qnameLocalPart = xmlStrchr(qname, ':');
if(qnameLocalPart != NULL) {
- qnamePrefix = xmlStrndup(qname, qnameLocalPart - qname);
+ qnamePrefix = xmlStrndup(qname, (int)(qnameLocalPart - qname));
if(qnamePrefix == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlStrndup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "node=%s,value=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qname));
+ xmlSecStrdupError(qname, NULL);
return(-1);
}
qnameLocalPart++;
@@ -1632,13 +1435,8 @@ xmlSecQName2BitMaskGetBitMaskFromString(xmlSecQName2BitMaskInfoConstPtr info,
/* search namespace href */
ns = xmlSearchNs(node->doc, node, qnamePrefix);
if((ns == NULL) && (qnamePrefix != NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSearchNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s,qnamePrefix=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qnamePrefix));
+ xmlSecXmlError2("xmlSearchNs", NULL,
+ "node=%s", xmlSecErrorsSafeString(node->name));
if(qnamePrefix != NULL) {
xmlFree(qnamePrefix);
}
@@ -1649,14 +1447,11 @@ xmlSecQName2BitMaskGetBitMaskFromString(xmlSecQName2BitMaskInfoConstPtr info,
/* and finally search for integer */
ret = xmlSecQName2BitMaskGetBitMask(info, qnameHref, qnameLocalPart, mask);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2BitMaskGetBitMask",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,qnameLocalPart=%s,qnameHref=%s",
- xmlSecErrorsSafeString(node->name),
- xmlSecErrorsSafeString(qnameLocalPart),
- xmlSecErrorsSafeString(qnameHref));
+ xmlSecInternalError4("xmlSecQName2BitMaskGetBitMask", NULL,
+ "node=%s,qnameLocalPart=%s,qnameHref=%s",
+ xmlSecErrorsSafeString(node->name),
+ xmlSecErrorsSafeString(qnameLocalPart),
+ xmlSecErrorsSafeString(qnameHref));
if(qnamePrefix != NULL) {
xmlFree(qnamePrefix);
}
@@ -1691,13 +1486,10 @@ xmlSecQName2BitMaskGetStringFromBitMask(xmlSecQName2BitMaskInfoConstPtr info,
qnameInfo = xmlSecQName2BitMaskGetInfo(info, mask);
if(qnameInfo == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2BitMaskGetInfo",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "node=%s,mask=%d",
- xmlSecErrorsSafeString(node->name),
- mask);
+ xmlSecInternalError3("xmlSecQName2BitMaskGetInfo", NULL,
+ "node=%s,mask=%d",
+ xmlSecErrorsSafeString(node->name),
+ mask);
return(NULL);
}
@@ -1738,23 +1530,15 @@ xmlSecQName2BitMaskNodesRead(xmlSecQName2BitMaskInfoConstPtr info, xmlNodePtr* n
while((cur != NULL) && (xmlSecCheckNodeName(cur, nodeName, nodeNs))) {
content = xmlNodeGetContent(cur);
if(content == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlNodeGetContent",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(cur->name));
+ xmlSecXmlError2("xmlNodeGetContent", NULL,
+ "node=%s", xmlSecErrorsSafeString(cur->name));
return(-1);
}
ret = xmlSecQName2BitMaskGetBitMaskFromString(info, cur, content, &tmp);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2BitMaskGetBitMaskFromString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "value=%s",
- xmlSecErrorsSafeString(content));
+ xmlSecInternalError2("xmlSecQName2BitMaskGetBitMaskFromString", NULL,
+ "value=%s", xmlSecErrorsSafeString(content));
xmlFree(content);
return(-1);
}
@@ -1762,12 +1546,8 @@ xmlSecQName2BitMaskNodesRead(xmlSecQName2BitMaskInfoConstPtr info, xmlNodePtr* n
if((stopOnUnknown != 0) && (tmp == 0)) {
/* todo: better error */
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecQName2BitMaskGetBitMaskFromString",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "value=%s",
- xmlSecErrorsSafeString(content));
+ xmlSecInternalError2("xmlSecQName2BitMaskGetBitMaskFromString", NULL,
+ "value=%s", xmlSecErrorsSafeString(content));
return(-1);
}
@@ -1810,23 +1590,15 @@ xmlSecQName2BitMaskNodesWrite(xmlSecQName2BitMaskInfoConstPtr info, xmlNodePtr n
qname = xmlSecGetQName(node, info[ii].qnameHref, info[ii].qnameLocalPart);
if(qname == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecGetQName",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(nodeName));
+ xmlSecXmlError2("xmlSecGetQName", NULL,
+ "node=%s", xmlSecErrorsSafeString(nodeName));
return(-1);
}
cur = xmlSecAddChild(node, nodeName, nodeNs);
if(cur == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecAddChild",
- XMLSEC_ERRORS_R_XML_FAILED,
- "node=%s",
- xmlSecErrorsSafeString(nodeName));
+ xmlSecXmlError2("xmlSecAddChild", NULL,
+ "node=%s", xmlSecErrorsSafeString(nodeName));
xmlFree(qname);
return(-1);
}
@@ -1905,6 +1677,273 @@ xmlSecQName2BitMaskDebugXmlDump(xmlSecQName2BitMaskInfoConstPtr info, xmlSecBitM
fprintf(output, "</%sList>\n", name);
}
+/*************************************************************************
+ *
+ * Windows string conversions
+ *
+ ************************************************************************/
+#ifdef WIN32
+
+/**
+ * xmlSecWin32ConvertUtf8ToUnicode:
+ * @str: the string to convert.
+ *
+ * Converts input string from UTF8 to Unicode.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+LPWSTR
+xmlSecWin32ConvertUtf8ToUnicode(const xmlChar* str) {
+ LPWSTR res = NULL;
+ int len;
+ int ret;
+
+ xmlSecAssert2(str != NULL, NULL);
+
+ /* call MultiByteToWideChar first to get the buffer size */
+ ret = MultiByteToWideChar(CP_UTF8, 0, (LPCCH)str, -1, NULL, 0);
+ if(ret <= 0) {
+ return(NULL);
+ }
+ len = ret + 1;
+
+ /* allocate buffer */
+ res = (LPWSTR)xmlMalloc(sizeof(WCHAR) * len);
+ if(res == NULL) {
+ xmlSecMallocError(sizeof(WCHAR) * len, NULL);
+ return(NULL);
+ }
+
+ /* convert */
+ ret = MultiByteToWideChar(CP_UTF8, 0, (LPCCH)str, -1, res, len);
+ if(ret <= 0) {
+ xmlFree(res);
+ return(NULL);
+ }
+
+ /* done */
+ return(res);
+}
+
+/**
+ * xmlSecWin32ConvertUnicodeToUtf8:
+ * @str: the string to convert.
+ *
+ * Converts input string from Unicode to UTF8.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+xmlChar*
+xmlSecWin32ConvertUnicodeToUtf8(LPCWSTR str) {
+ xmlChar * res = NULL;
+ int len;
+ int ret;
+
+ xmlSecAssert2(str != NULL, NULL);
+
+ /* call WideCharToMultiByte first to get the buffer size */
+ ret = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL);
+ if(ret <= 0) {
+ return(NULL);
+ }
+ len = ret + 1;
+
+ /* allocate buffer */
+ res = (xmlChar*)xmlMalloc(sizeof(xmlChar) * len);
+ if(res == NULL) {
+ xmlSecMallocError(sizeof(xmlChar) * len, NULL);
+ return(NULL);
+ }
+
+ /* convert */
+ ret = WideCharToMultiByte(CP_UTF8, 0, str, -1, (LPSTR)res, len, NULL, NULL);
+ if(ret <= 0) {
+ xmlFree(res);
+ return(NULL);
+ }
+
+ /* done */
+ return(res);
+}
+
+/**
+ * xmlSecWin32ConvertLocaleToUnicode:
+ * @str: the string to convert.
+ *
+ * Converts input string from current system locale to Unicode.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+LPWSTR
+xmlSecWin32ConvertLocaleToUnicode(const char* str) {
+ LPWSTR res = NULL;
+ int len;
+ int ret;
+
+ xmlSecAssert2(str != NULL, NULL);
+
+ /* call MultiByteToWideChar first to get the buffer size */
+ ret = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
+ if(ret <= 0) {
+ return(NULL);
+ }
+ len = ret;
+
+ /* allocate buffer */
+ res = (LPWSTR)xmlMalloc(sizeof(WCHAR) * len);
+ if(res == NULL) {
+ xmlSecMallocError(sizeof(WCHAR) * len, NULL);
+ return(NULL);
+ }
+
+ /* convert */
+ ret = MultiByteToWideChar(CP_ACP, 0, str, -1, res, len);
+ if(ret <= 0) {
+ xmlFree(res);
+ return(NULL);
+ }
+
+ /* done */
+ return(res);
+}
+
+/**
+ * xmlSecWin32ConvertLocaleToUtf8:
+ * @str: the string to convert.
+ *
+ * Converts input string from locale to UTF8.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+xmlChar*
+xmlSecWin32ConvertLocaleToUtf8(const char * str) {
+ LPWSTR strW = NULL;
+ xmlChar * res = NULL;
+ int len;
+ int ret;
+
+ xmlSecAssert2(str != NULL, NULL);
+
+ strW = xmlSecWin32ConvertLocaleToUnicode(str);
+ if(strW == NULL) {
+ return(NULL);
+ }
+
+ /* call WideCharToMultiByte first to get the buffer size */
+ ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, NULL, 0, NULL, NULL);
+ if(ret <= 0) {
+ xmlFree(strW);
+ return(NULL);
+ }
+ len = ret + 1;
+
+ /* allocate buffer */
+ res = (xmlChar*)xmlMalloc(sizeof(xmlChar) * len);
+ if(res == NULL) {
+ xmlSecMallocError(sizeof(xmlChar) * len, NULL);
+ xmlFree(strW);
+ return(NULL);
+ }
+
+ /* convert */
+ ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, (LPSTR)res, len, NULL, NULL);
+ if(ret <= 0) {
+ xmlFree(strW);
+ xmlFree(res);
+ return(NULL);
+ }
+
+ /* done */
+ xmlFree(strW);
+ return(res);
+}
+
+/**
+ * xmlSecWin32ConvertUtf8ToLocale:
+ * @str: the string to convert.
+ *
+ * Converts input string from UTF8 to locale.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+char *
+xmlSecWin32ConvertUtf8ToLocale(const xmlChar* str) {
+ LPWSTR strW = NULL;
+ char * res = NULL;
+ int len;
+ int ret;
+
+ xmlSecAssert2(str != NULL, NULL);
+
+ strW = xmlSecWin32ConvertUtf8ToUnicode(str);
+ if(strW == NULL) {
+ return(NULL);
+ }
+
+ /* call WideCharToMultiByte first to get the buffer size */
+ ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, NULL, 0, NULL, NULL);
+ if(ret <= 0) {
+ xmlFree(strW);
+ return(NULL);
+ }
+ len = ret + 1;
+
+ /* allocate buffer */
+ res = (char*)xmlMalloc(sizeof(char) * len);
+ if(res == NULL) {
+ xmlSecMallocError(sizeof(char) * len, NULL);
+ xmlFree(strW);
+ return(NULL);
+ }
+
+ /* convert */
+ ret = WideCharToMultiByte(CP_ACP, 0, strW, -1, res, len, NULL, NULL);
+ if(ret <= 0) {
+ xmlFree(strW);
+ xmlFree(res);
+ return(NULL);
+ }
+
+ /* done */
+ xmlFree(strW);
+ return(res);
+}
+
+/**
+ * xmlSecWin32ConvertTstrToUtf8:
+ * @str: the string to convert.
+ *
+ * Converts input string from TSTR (locale or Unicode) to UTF8.
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+xmlChar*
+xmlSecWin32ConvertTstrToUtf8(LPCTSTR str) {
+#ifdef UNICODE
+ return xmlSecWin32ConvertUnicodeToUtf8(str);
+#else /* UNICODE */
+ return xmlSecWin32ConvertLocaleToUtf8(str);
+#endif /* UNICODE */
+}
+
+/**
+ * xmlSecWin32ConvertUtf8ToTstr:
+ * @str: the string to convert.
+ *
+ * Converts input string from UTF8 to TSTR (locale or Unicode).
+ *
+ * Returns: a pointer to newly allocated string (must be freed with xmlFree) or NULL if an error occurs.
+ */
+LPTSTR
+xmlSecWin32ConvertUtf8ToTstr(const xmlChar* str) {
+#ifdef UNICODE
+ return xmlSecWin32ConvertUtf8ToUnicode(str);
+#else /* UNICODE */
+ return xmlSecWin32ConvertUtf8ToLocale(str);
+#endif /* UNICODE */
+}
+
+#endif /* WIN32 */
diff --git a/src/xpath.c b/src/xpath.c
index 43cdf33a..8c74d6af 100644
--- a/src/xpath.c
+++ b/src/xpath.c
@@ -1,13 +1,20 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * XPath transform
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xpath
+ * @Short_description: XPath transform implementation.
+ * @Stability: Private
+ *
+ *
+ */
+
#include "globals.h"
#include <stdlib.h>
@@ -30,7 +37,7 @@
*
* xmlSecXPathHereFunction:
* @ctxt: the ponter to XPath context.
- * @nargs: the arguments nubmer.
+ * @nargs: the arguments number.
*
* The implementation of XPath "here()" function.
* See xmlXPtrHereFunction() in xpointer.c. the only change is that
@@ -86,12 +93,7 @@ xmlSecXPathDataCreate(xmlSecXPathDataType type) {
data = (xmlSecXPathDataPtr) xmlMalloc(sizeof(xmlSecXPathData));
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "sizeof(xmlSecXPathData)=%d",
- (int)sizeof(xmlSecXPathData));
+ xmlSecMallocError(sizeof(xmlSecXPathData), NULL);
return(NULL);
}
memset(data, 0, sizeof(xmlSecXPathData));
@@ -105,11 +107,7 @@ xmlSecXPathDataCreate(xmlSecXPathDataType type) {
case xmlSecXPathDataTypeXPath2:
data->ctx = xmlXPathNewContext(NULL); /* we'll set doc in the context later */
if(data->ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPathNewContext",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlXPathNewContext", NULL);
xmlSecXPathDataDestroy(data);
return(NULL);
}
@@ -117,11 +115,7 @@ xmlSecXPathDataCreate(xmlSecXPathDataType type) {
case xmlSecXPathDataTypeXPointer:
data->ctx = xmlXPtrNewContext(NULL, NULL, NULL); /* we'll set doc in the context later */
if(data->ctx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPtrNewContext",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlXPtrNewContext", NULL);
xmlSecXPathDataDestroy(data);
return(NULL);
}
@@ -154,11 +148,7 @@ xmlSecXPathDataSetExpr(xmlSecXPathDataPtr data, const xmlChar* expr) {
data->expr = xmlStrdup(expr);
if(data->expr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- NULL,
- XMLSEC_ERRORS_R_STRDUP_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(expr, NULL);
return(-1);
}
return(0);
@@ -182,13 +172,8 @@ xmlSecXPathDataRegisterNamespaces(xmlSecXPathDataPtr data, xmlNodePtr node) {
if((ns->prefix != NULL) && (xmlXPathNsLookup(data->ctx, ns->prefix) == NULL)){
ret = xmlXPathRegisterNs(data->ctx, ns->prefix, ns->href);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPathRegisterNs",
- XMLSEC_ERRORS_R_XML_FAILED,
- "href=%s;prefix=%s",
- xmlSecErrorsSafeString(ns->href),
- xmlSecErrorsSafeString(ns->prefix));
+ xmlSecXmlError2("xmlXPathRegisterNs", NULL,
+ "prefix=%s", xmlSecErrorsSafeString(ns->prefix));
return(-1);
}
}
@@ -209,22 +194,14 @@ xmlSecXPathDataNodeRead(xmlSecXPathDataPtr data, xmlNodePtr node) {
ret = xmlSecXPathDataRegisterNamespaces (data, node);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecXPathDataRegisterNamespaces",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataRegisterNamespaces", NULL);
return(-1);
}
/* read node content and set expr */
data->expr = xmlNodeGetContent(node);
if(data->expr == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- xmlSecErrorsSafeString(xmlSecNodeGetName(node)),
- XMLSEC_ERRORS_R_INVALID_NODE_CONTENT,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInvalidNodeContentError(node, NULL, "empty");
return(-1);
}
@@ -258,29 +235,19 @@ xmlSecXPathDataExecute(xmlSecXPathDataPtr data, xmlDocPtr doc, xmlNodePtr hereNo
case xmlSecXPathDataTypeXPath2:
xpathObj = xmlXPathEvalExpression(data->expr, data->ctx);
if(xpathObj == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPathEvalExpression",
- XMLSEC_ERRORS_R_XML_FAILED,
- "expr=%s",
- xmlSecErrorsSafeString(data->expr));
+ xmlSecXmlError2("xmlXPathEvalExpression", NULL,
+ "expr=%s", xmlSecErrorsSafeString(data->expr));
return(NULL);
}
break;
case xmlSecXPathDataTypeXPointer:
xpathObj = xmlXPtrEval(data->expr, data->ctx);
if(xpathObj == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPtrEval",
- XMLSEC_ERRORS_R_XML_FAILED,
- "expr=%s",
- xmlSecErrorsSafeString(data->expr));
+ xmlSecXmlError2("xmlXPtrEval", NULL,
+ "expr=%s", xmlSecErrorsSafeString(data->expr));
return(NULL);
}
break;
- default:
- return(NULL);
}
/* sometime LibXML2 returns an empty nodeset or just NULL, we want
@@ -290,23 +257,15 @@ xmlSecXPathDataExecute(xmlSecXPathDataPtr data, xmlDocPtr doc, xmlNodePtr hereNo
xpathObj->nodesetval = xmlXPathNodeSetCreate(NULL);
if(xpathObj->nodesetval == NULL) {
xmlXPathFreeObject(xpathObj);
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlXPathNodeSetCreate",
- XMLSEC_ERRORS_R_XML_FAILED,
- "expr=%s",
- xmlSecErrorsSafeString(data->expr));
+ xmlSecXmlError2("xmlXPathNodeSetCreate", NULL,
+ "expr=%s", xmlSecErrorsSafeString(data->expr));
return(NULL);
}
}
nodes = xmlSecNodeSetCreate(doc, xpathObj->nodesetval, data->nodeSetType);
if(nodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "type=%d", data->nodeSetType);
+ xmlSecInternalError2("xmlSecNodeSetCreate", NULL, "type=%d", data->nodeSetType);
xmlXPathFreeObject(xpathObj);
return(NULL);
}
@@ -359,11 +318,7 @@ xmlSecXPathDataListExecute(xmlSecPtrListPtr dataList, xmlDocPtr doc,
for(pos = 0; pos < xmlSecPtrListGetSize(dataList); ++pos) {
data = (xmlSecXPathDataPtr)xmlSecPtrListGetItem(dataList, pos);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecPtrListGetItem",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "pos=%d", pos);
+ xmlSecInternalError2("xmlSecPtrListGetItem", NULL, "pos=%d", pos);
if((res != NULL) && (res != nodes)) {
xmlSecNodeSetDestroy(res);
}
@@ -372,11 +327,7 @@ xmlSecXPathDataListExecute(xmlSecPtrListPtr dataList, xmlDocPtr doc,
tmp = xmlSecXPathDataExecute(data, doc, hereNode);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecXPathDataExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataExecute", NULL);
if((res != NULL) && (res != nodes)) {
xmlSecNodeSetDestroy(res);
}
@@ -385,11 +336,8 @@ xmlSecXPathDataListExecute(xmlSecPtrListPtr dataList, xmlDocPtr doc,
tmp2 = xmlSecNodeSetAdd(res, tmp, data->nodeSetOp);
if(tmp2 == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecNodeSetAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "xmlSecNodeSetIntersection");
+ xmlSecInternalError2("xmlSecNodeSetAdd", NULL,
+ "nodeSetOp=%d", (int)data->nodeSetOp);
if((res != NULL) && (res != nodes)) {
xmlSecNodeSetDestroy(res);
}
@@ -438,11 +386,8 @@ xmlSecTransformXPathInitialize(xmlSecTransformPtr transform) {
ret = xmlSecPtrListInitialize(dataList, xmlSecXPathDataListId);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListInitialize",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListInitialize",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -482,11 +427,8 @@ xmlSecTransformXPathExecute(xmlSecTransformPtr transform, int last,
transform->outNodes = xmlSecXPathDataListExecute(dataList, doc,
transform->hereNode, transform->inNodes);
if(transform->outNodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataExecute",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataListExecute",
+ xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -549,6 +491,7 @@ xmlSecTransformXPathNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
xmlSecXPathDataPtr data;
xmlNodePtr cur;
xmlChar* tmp;
+ int tmpSize;
int ret;
xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecTransformXPathId), -1);
@@ -562,33 +505,23 @@ xmlSecTransformXPathNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
/* there is only one required node */
cur = xmlSecGetNextElementNode(node->children);
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeXPath, xmlSecDSigNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeXPath));
+ xmlSecInvalidNodeError(cur, xmlSecNodeXPath,
+ xmlSecTransformGetName(transform));
return(-1);
}
/* read information from the node */
data = xmlSecXPathDataCreate(xmlSecXPathDataTypeXPath);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataCreate",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecXPathDataNodeRead(data, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataNodeRead",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -596,30 +529,27 @@ xmlSecTransformXPathNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
/* append it to the list */
ret = xmlSecPtrListAdd(dataList, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
/* create full XPath expression */
xmlSecAssert2(data->expr != NULL, -1);
- size_t tmpSize = sizeof(xmlChar) * (xmlStrlen(data->expr) +
- strlen(xpathPattern) + 1);
- tmp = (xmlChar*) xmlMalloc(tmpSize);
+ tmpSize = xmlStrlen(data->expr) + xmlStrlen(BAD_CAST xpathPattern) + 1;
+ tmp = (xmlChar*) xmlMalloc(sizeof(xmlChar) * tmpSize);
if(tmp == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- "size=%d",
- (int)(xmlStrlen(data->expr) + strlen(xpathPattern) + 1));
+ xmlSecMallocError(sizeof(xmlChar) * tmpSize,
+ xmlSecTransformGetName(transform));
return(-1);
}
- snprintf((char*)tmp, tmpSize, xpathPattern, (char*)data->expr);
+ ret = xmlStrPrintf(tmp, tmpSize, xpathPattern, (char*)data->expr);
+ if(ret < 0) {
+ xmlSecXmlError("xmlStrPrintf", xmlSecTransformGetName(transform));
+ xmlFree(tmp);
+ return(-1);
+ }
xmlFree(data->expr);
data->expr = tmp;
@@ -630,11 +560,7 @@ xmlSecTransformXPathNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xmlS
/* check that we have nothing else */
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -709,21 +635,15 @@ xmlSecTransformXPath2NodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
/* read information from the node */
data = xmlSecXPathDataCreate(xmlSecXPathDataTypeXPath2);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataCreate",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecXPathDataNodeRead(data, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataNodeRead",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -731,11 +651,8 @@ xmlSecTransformXPath2NodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
/* append it to the list */
ret = xmlSecPtrListAdd(dataList, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -744,12 +661,9 @@ xmlSecTransformXPath2NodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
data->nodeSetType = xmlSecNodeSetTree;
op = xmlGetProp(cur, xmlSecAttrFilter);
if(op == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecAttrFilter),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "node=%s",
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)));
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrFilter,
+ xmlSecTransformGetName(transform),
+ "empty");
return(-1);
}
if(xmlStrEqual(op, xmlSecXPath2FilterIntersect)) {
@@ -759,12 +673,9 @@ xmlSecTransformXPath2NodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
} else if(xmlStrEqual(op, xmlSecXPath2FilterUnion)) {
data->nodeSetOp = xmlSecNodeSetUnion;
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecAttrFilter),
- XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE,
- "filter=%s",
- xmlSecErrorsSafeString(op));
+ xmlSecInvalidNodeAttributeError(cur, xmlSecAttrFilter,
+ xmlSecTransformGetName(transform),
+ "unknown");
xmlFree(op);
return(-1);
}
@@ -775,11 +686,7 @@ xmlSecTransformXPath2NodeRead(xmlSecTransformPtr transform, xmlNodePtr node, xml
/* check that we have nothing else */
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -864,32 +771,23 @@ xmlSecTransformXPointerSetExpr(xmlSecTransformPtr transform, const xmlChar* expr
data = xmlSecXPathDataCreate(xmlSecXPathDataTypeXPointer);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataCreate",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecXPathDataRegisterNamespaces(data, hereNode);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataRegisterNamespaces",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataRegisterNamespaces",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
ret = xmlSecXPathDataSetExpr(data, expr);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataSetExpr",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataSetExpr",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -897,11 +795,8 @@ xmlSecTransformXPointerSetExpr(xmlSecTransformPtr transform, const xmlChar* expr
/* append it to the list */
ret = xmlSecPtrListAdd(dataList, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -931,33 +826,23 @@ xmlSecTransformXPointerNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, x
/* there is only one required node */
cur = xmlSecGetNextElementNode(node->children);
if((cur == NULL) || (!xmlSecCheckNodeName(cur, xmlSecNodeXPointer, xmlSecXPointerNs))) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_INVALID_NODE,
- "expected=%s",
- xmlSecErrorsSafeString(xmlSecNodeXPath));
+ xmlSecInvalidNodeError(cur, xmlSecNodeXPointer,
+ xmlSecTransformGetName(transform));
return(-1);
}
/* read information from the node */
data = xmlSecXPathDataCreate(xmlSecXPathDataTypeXPointer);
if(data == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataCreate",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecXPathDataNodeRead(data, cur);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXPathDataNodeRead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXPathDataNodeRead",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -965,11 +850,8 @@ xmlSecTransformXPointerNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, x
/* append it to the list */
ret = xmlSecPtrListAdd(dataList, data);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecPtrListAdd",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecPtrListAdd",
+ xmlSecTransformGetName(transform));
xmlSecXPathDataDestroy(data);
return(-1);
}
@@ -981,11 +863,7 @@ xmlSecTransformXPointerNodeRead(xmlSecTransformPtr transform, xmlNodePtr node, x
/* check that we have nothing else */
cur = xmlSecGetNextElementNode(cur->next);
if(cur != NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- xmlSecErrorsSafeString(xmlSecNodeGetName(cur)),
- XMLSEC_ERRORS_R_UNEXPECTED_NODE,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecUnexpectedNodeError(cur, xmlSecTransformGetName(transform));
return(-1);
}
return(0);
@@ -1076,11 +954,7 @@ xmlSecTransformVisa3DHackSetID(xmlSecTransformPtr transform, const xmlChar* id)
(*idPtr) = xmlStrdup(id);
if((*idPtr) == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlStrdup",
- XMLSEC_ERRORS_R_MALLOC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecStrdupError(id, xmlSecTransformGetName(transform));
return(-1);
}
@@ -1131,33 +1005,22 @@ xmlSecTransformVisa3DHackExecute(xmlSecTransformPtr transform, int last,
attr = xmlGetID(doc, (*idPtr));
if((attr == NULL) || (attr->parent == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlGetID",
- XMLSEC_ERRORS_R_XML_FAILED,
- "id=\"%s\"",
- xmlSecErrorsSafeString((*idPtr)));
+ xmlSecXmlError2("xmlGetID", xmlSecTransformGetName(transform),
+ "id=\"%s\"", xmlSecErrorsSafeString(*idPtr));
return(-1);
}
nodeSet = xmlXPathNodeSetCreate(attr->parent);
if(nodeSet == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlXPathNodeSetCreate",
- XMLSEC_ERRORS_R_XML_FAILED,
- "id=\"%s\"",
- xmlSecErrorsSafeString((*idPtr)));
+ xmlSecXmlError2("xmlXPathNodeSetCreate", xmlSecTransformGetName(transform),
+ "id=\"%s\"", xmlSecErrorsSafeString(*idPtr));
return(-1);
}
transform->outNodes = xmlSecNodeSetCreate(doc, nodeSet, xmlSecNodeSetTreeWithoutComments);
if(transform->outNodes == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecNodeSetCreate",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecNodeSetCreate",
+ xmlSecTransformGetName(transform));
xmlXPathFreeNodeSet(nodeSet);
return(-1);
}
diff --git a/src/xslt.c b/src/xslt.c
index e5470587..5e4353b6 100644
--- a/src/xslt.c
+++ b/src/xslt.c
@@ -1,13 +1,20 @@
-/**
+/*
* XML Security Library (http://www.aleksey.com/xmlsec).
*
- * XSLT Transform (http://www.w3.org/TR/xmldsig-core/#sec-XSLT)
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
+/**
+ * SECTION:xslt
+ * @Short_description: XSLT transform implementation.
+ * @Stability: Private
+ *
+ * [XSLT Transform](http://www.w3.org/TR/xmldsig-core/#sec-XSLT) implementation.
+ */
+
#include "globals.h"
#ifndef XMLSEC_NO_XSLT
@@ -212,6 +219,10 @@ xmlSecXsltFinalize(xmlSecTransformPtr transform) {
xsltFreeStylesheet(ctx->xslt);
}
if(ctx->parserCtx != NULL) {
+ if(ctx->parserCtx->myDoc != NULL) {
+ xmlFreeDoc(ctx->parserCtx->myDoc);
+ ctx->parserCtx->myDoc = NULL;
+ }
xmlFreeParserCtxt(ctx->parserCtx);
}
memset(ctx, 0, sizeof(xmlSecXsltCtx));
@@ -236,11 +247,7 @@ xmlSecXsltReadNode(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTransfor
/* read content in the buffer */
buffer = xmlBufferCreate();
if(buffer == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlBufferCreate",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlBufferCreate", xmlSecTransformGetName(transform));
return(-1);
}
cur = node->children;
@@ -253,11 +260,8 @@ xmlSecXsltReadNode(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTransfor
doc = xmlSecParseMemory(xmlBufferContent(buffer),
xmlBufferLength(buffer), 1);
if(doc == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecParseMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecParseMemory",
+ xmlSecTransformGetName(transform));
xmlBufferFree(buffer);
return(-1);
}
@@ -265,11 +269,8 @@ xmlSecXsltReadNode(xmlSecTransformPtr transform, xmlNodePtr node, xmlSecTransfor
/* pre-process stylesheet */
ctx->xslt = xsltParseStylesheetDoc(doc);
if(ctx->xslt == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xsltParseStylesheetDoc",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltParseStylesheetDoc", NULL, xmlSecTransformGetName(transform));
+
/* after parsing stylesheet doc is assigned
* to it and will be freed by xsltFreeStylesheet() */
xmlFreeDoc(doc);
@@ -301,11 +302,7 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
ctx->parserCtx = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL);
if(ctx->parserCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlCreatePushParserCtxt",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlCreatePushParserCtxt", xmlSecTransformGetName(transform));
return(-1);
}
@@ -317,11 +314,7 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
} else if(transform->status == xmlSecTransformStatusFinished) {
return(0);
} else if(transform->status != xmlSecTransformStatusWorking) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
xmlSecAssert2(transform->status == xmlSecTransformStatusWorking, -1);
@@ -331,11 +324,10 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
if((data != NULL) && (dataSize > 0)) {
ret = xmlParseChunk(ctx->parserCtx, (const char*)data, dataSize, 0);
if(ret != 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- "size=%d", dataSize);
+ xmlSecXmlParserError2("xmlParseChunk", ctx->parserCtx,
+ xmlSecTransformGetName(transform),
+ "size=%d", dataSize);
+
return(-1);
}
}
@@ -349,11 +341,8 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
/* finalize */
ret = xmlParseChunk(ctx->parserCtx, NULL, 0, 1);
if((ret != 0) || (ctx->parserCtx->myDoc == NULL)) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlParseChunk",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlParserError("xmlParseChunk", ctx->parserCtx,
+ xmlSecTransformGetName(transform));
return(-1);
}
@@ -363,11 +352,8 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
docOut = xmlSecXsApplyStylesheet(ctx, docIn);
if(docOut == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXsApplyStylesheet",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXsApplyStylesheet",
+ xmlSecTransformGetName(transform));
xmlFreeDoc(docIn);
return(-1);
}
@@ -376,22 +362,16 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
if(transform->next != NULL) {
output = xmlSecTransformCreateOutputBuffer(transform->next, transformCtx);
if(output == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecTransformCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecTransformCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
xmlFreeDoc(docOut);
return(-1);
}
} else {
output = xmlSecBufferCreateOutputBuffer(&(transform->outBuf));
if(output == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer",
+ xmlSecTransformGetName(transform));
xmlFreeDoc(docOut);
return(-1);
}
@@ -399,22 +379,14 @@ xmlSecXsltPushBin(xmlSecTransformPtr transform, const xmlSecByte* data,
ret = xsltSaveResultTo(output, docOut, ctx->xslt);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xsltSaveResultTo",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltParseStylesheetDoc", ctx->xslt, xmlSecTransformGetName(transform));
xmlOutputBufferClose(output);
xmlFreeDoc(docOut);
return(-1);
}
ret = xmlOutputBufferClose(output);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", xmlSecTransformGetName(transform));
xmlFreeDoc(docOut);
return(-1);
}
@@ -459,21 +431,16 @@ xmlSecXsltExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr
ret = xmlSecXslProcess(ctx, in, out);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecXslProcess",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXslProcess",
+ xmlSecTransformGetName(transform));
return(-1);
}
ret = xmlSecBufferRemoveHead(in, inSize);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- "xmlSecBufferRemoveHead",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- "size=%d", inSize);
+ xmlSecInternalError2("xmlSecBufferRemoveHead",
+ xmlSecTransformGetName(transform),
+ "size=%d", inSize);
return(-1);
}
@@ -482,11 +449,7 @@ xmlSecXsltExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr
/* the only way we can get here is if there is no input */
xmlSecAssert2(inSize == 0, -1);
} else {
- xmlSecError(XMLSEC_ERRORS_HERE,
- xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
- NULL,
- XMLSEC_ERRORS_R_INVALID_STATUS,
- "status=%d", transform->status);
+ xmlSecInvalidTransfromStatusError(transform);
return(-1);
}
return(0);
@@ -507,61 +470,47 @@ xmlSecXslProcess(xmlSecXsltCtxPtr ctx, xmlSecBufferPtr in, xmlSecBufferPtr out)
docIn = xmlSecParseMemory(xmlSecBufferGetData(in), xmlSecBufferGetSize(in), 1);
if(docIn == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecParseMemory",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecParseMemory", NULL);
goto done;
}
docOut = xmlSecXsApplyStylesheet(ctx, docIn);
if(docOut == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecXsApplyStylesheet",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecXsApplyStylesheet", NULL);
goto done;
}
output = xmlSecBufferCreateOutputBuffer(out);
if(output == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlSecBufferCreateOutputBuffer",
- XMLSEC_ERRORS_R_XMLSEC_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecInternalError("xmlSecBufferCreateOutputBuffer", NULL);
goto done;
}
ret = xsltSaveResultTo(output, docOut, ctx->xslt);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xsltSaveResultTo",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltSaveResultTo", ctx->xslt, NULL);
goto done;
}
ret = xmlOutputBufferClose(output);
output = NULL;
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xmlOutputBufferClose",
- XMLSEC_ERRORS_R_XML_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXmlError("xmlOutputBufferClose", NULL);
return(-1);
}
res = 0;
done:
- if(output != NULL) xmlOutputBufferClose(output);
- if(docIn != NULL) xmlFreeDoc(docIn);
- if(docOut != NULL) xmlFreeDoc(docOut);
+ if(output != NULL) {
+ xmlOutputBufferClose(output);
+ }
+ if(docIn != NULL) {
+ xmlFreeDoc(docIn);
+ }
+ if(docOut != NULL) {
+ xmlFreeDoc(docOut);
+ }
return(res);
}
@@ -578,37 +527,27 @@ xmlSecXsApplyStylesheet(xmlSecXsltCtxPtr ctx, xmlDocPtr doc) {
xsltCtx = xsltNewTransformContext(ctx->xslt, doc);
if(xsltCtx == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xsltNewTransformContext",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltNewTransformContext", ctx->xslt, NULL);
goto done;
}
/* set security prefs */
ret = xsltSetCtxtSecurityPrefs(g_xslt_default_security_prefs, xsltCtx);
if(ret < 0) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xsltSetCtxtSecurityPrefs",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltSetCtxtSecurityPrefs", ctx->xslt, NULL);
goto done;
}
res = xsltApplyStylesheetUser(ctx->xslt, doc, NULL, NULL, NULL, xsltCtx);
if(res == NULL) {
- xmlSecError(XMLSEC_ERRORS_HERE,
- NULL,
- "xsltApplyStylesheetUser",
- XMLSEC_ERRORS_R_XSLT_FAILED,
- XMLSEC_ERRORS_NO_MESSAGE);
+ xmlSecXsltError("xsltApplyStylesheetUser", ctx->xslt, NULL);
goto done;
}
done:
- if(xsltCtx != NULL) xsltFreeTransformContext(xsltCtx);
+ if(xsltCtx != NULL) {
+ xsltFreeTransformContext(xsltCtx);
+ }
return res;
}
diff --git a/tests/README b/tests/README
index 24643180..734d0a59 100644
--- a/tests/README
+++ b/tests/README
@@ -1,3 +1,6 @@
+Running a specific test
+----------------------------------------------
+
If a test fails, it's possible to re-run just that specific test for that
specific backend using:
@@ -8,3 +11,13 @@ where $name is the key name for key tests, and a file name otherwise.
Example:
> make check-crypto-nss XMLSEC_TEST_NAME="enveloping-sha256-rsa-sha256-relationship"
+
+Reproducible output
+----------------------------------------------
+
+It is also possible to have reproducible output, filtering out timestamps. This
+is useful to see the output before and after a change to understand its impact.
+
+Example:
+
+> make check-crypto-nss XMLSEC_TEST_REPRODUCIBLE=y
diff --git a/tests/aleksey-xmldsig-01/enveloped-ecdsa-java-bug.xml b/tests/aleksey-xmldsig-01/enveloped-ecdsa-java-bug.xml
new file mode 100644
index 00000000..b70cd397
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloped-ecdsa-java-bug.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><hello><world/><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><DigestValue>snwpz6KfSa6WJT7B1dWNfsESRHIqYq2/v0PD+3sU5mPQ3WvDO5ONS6HndlzrYDaodJX0EGZoTZTN
+WgYnOryWRg==</DigestValue></Reference></SignedInfo><SignatureValue>59zrun71/Jm6Ajsvym2THOiIzSp5tPpuM6onFpF4GHuSGr+x4Z3eYYqvNeRQRl3FAdFMj3GSO0Fn
+SgbX1xa+hx046vEltwSncL2KJYXVi3KFHJZnh36026lG3HxAT6bdnExEd0vibFl//PBlXA3cnFwn
+AGnK+NA69SxCm7CAaUZg9Q==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIICKTCCAYsCCQCykUo557/H2zAKBggqhkjOPQQDBDBWMQswCQYDVQQGEwJBVTETMBEGA1UECAwK
+U29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMQ8wDQYDVQQDDAZ0
+ZXN0Q0EwHhcNMTgxMDEyMTQ1NzM4WhcNMTkxMDEyMTQ1NzM4WjBcMQswCQYDVQQGEwJBVTETMBEG
+A1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRUwEwYD
+VQQDDAxzaWduZXJpdHNlbGYwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAF2E8w3gHHVE5Tu+u0U
+plBEjc3o1i+EtdVBnccLV6LqBlzWLwxpUK8b9VSIFL+/dLxENzsDdN3K60rqBLHz8k5sTgGvwEfY
+CJtK7IEI5FZEyEe+73ovf2KCLFtMVU5YZz+w/Qt6HJb7swrF3wWkYE4v4qq0Nseq8xbanthWcIeu
+CLVrCzAKBggqhkjOPQQDBAOBiwAwgYcCQUhHsJ/MMWic9fLowwVvOTYRVb8yOAoToBNLWP7k0cl1
+I3fOqZsaTziggtg6ALvmVS/elG51NljJzPbC6bkFHA0fAkIAoHrgm28dABq7LpnF+4F8IWEbTjLR
+/Cgrffhsy0HPOvCm/fcSo99bOMRWQ5i8qzNd9nNiDgMMJhRUMdr3kyrN2nE=</X509Certificate></X509Data></KeyInfo></Signature></hello> \ No newline at end of file
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1.xml b/tests/aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1.xml
index 358a7a11..10018e79 100644
--- a/tests/aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1.xml
@@ -8,8 +8,8 @@
<DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
</Reference>
</SignedInfo>
- <SignatureValue>kTx1j2j4J3hQuKBTGrPMj1ZQvYJgoyKtqcIPMoyB+623RD8dpp38v7DWmYipsqZA
-mHrqJBEmRI9o8h3Gwy/1Bg==</SignatureValue>
+ <SignatureValue>1T18pVocVMRq1aJ6L+bpLOzNQtM5kqjXafgzlgaGxFQMM/K1oBzWE5vmlau8WYm+
+04elfDnQb9tf5w2dXGyQBQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
@@ -34,6 +34,7 @@ EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
j0gv0PdxmuCsR/E=</X509Certificate>
+
<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
@@ -55,26 +56,25 @@ eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
-<X509Certificate>MIIDfDCCAyagAwIBAgIJAK+ii7kzrdq0MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+<X509Certificate>MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
-ZXkuY29tMCAXDTE2MDEyOTE3MjYxMloYDzIxMTYwMTA1MTcyNjEyWjCBojELMAkG
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
-BgNVBAMTE0VDRFNBIHNlY3AyNTZrMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
-Y0BhbGVrc2V5LmNvbTBWMBAGByqGSM49AgEGBSuBBAAKA0IABGfbnXrR7bjGBsK6
-LIo2LkMPz9OhqW6U4EUwhA+0wbXbLzRufuaaUuGHkhl9LDa5128d1209j25iWgyL
-QoxgMLOjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVu
-U1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPJXHiW1HSqdwbucp
-ESi1JeIJHKAwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436hgbSk
-gbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQK
-EzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94
-bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
-MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63arTAN
-BgkqhkiG9w0BAQUFAANBAFweA03Qo3e3BvU4MT3wnsn7VZukTI61ewyrGCQshOc5
-ng3TuNfNcAuwhwDnTkHEarbwvG3OmJIl+yDqgVtTD9M=</X509Certificate>
-</X509Data>
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=</X509Certificate></X509Data>
</KeyInfo>
<Object Id="object">some text</Object>
</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256.xml
index 393f0952..b8f6b53a 100644
--- a/tests/aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256.xml
@@ -8,8 +8,8 @@
<DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
</Reference>
</SignedInfo>
- <SignatureValue>r58DPJHB2Fi7Ssc/5W5/ZXys8uWiz3aF+XtDo6ZRF78rgk2TQDTse6yvTUC9kY3L
-UHcDZl9sGTJXyrw3DirasQ==</SignatureValue>
+ <SignatureValue>epctjDEaow8JdOu4/pCsV8WxYBtfeWGLYD51CRVeuUjjTaAodr+tXpdd1jvYoSxv
+YjhC4hmJTgH0tEmYWEPYZg==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
@@ -34,6 +34,7 @@ EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
j0gv0PdxmuCsR/E=</X509Certificate>
+
<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
@@ -55,26 +56,25 @@ eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
-<X509Certificate>MIIDfDCCAyagAwIBAgIJAK+ii7kzrdq0MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+<X509Certificate>MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
-ZXkuY29tMCAXDTE2MDEyOTE3MjYxMloYDzIxMTYwMTA1MTcyNjEyWjCBojELMAkG
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
-BgNVBAMTE0VDRFNBIHNlY3AyNTZrMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
-Y0BhbGVrc2V5LmNvbTBWMBAGByqGSM49AgEGBSuBBAAKA0IABGfbnXrR7bjGBsK6
-LIo2LkMPz9OhqW6U4EUwhA+0wbXbLzRufuaaUuGHkhl9LDa5128d1209j25iWgyL
-QoxgMLOjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVu
-U1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPJXHiW1HSqdwbucp
-ESi1JeIJHKAwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436hgbSk
-gbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQK
-EzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94
-bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
-MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63arTAN
-BgkqhkiG9w0BAQUFAANBAFweA03Qo3e3BvU4MT3wnsn7VZukTI61ewyrGCQshOc5
-ng3TuNfNcAuwhwDnTkHEarbwvG3OmJIl+yDqgVtTD9M=</X509Certificate>
-</X509Data>
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=</X509Certificate></X509Data>
</KeyInfo>
<Object Id="object">some text</Object>
</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.tmpl
new file mode 100644
index 00000000..ed5daf78
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.tmpl
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+ <DigestValue></DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data/>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.xml
new file mode 100644
index 00000000..5b32c5e5
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+ <DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>xOSp1bweDaNd5+NzBNO+m+1oEOm1jNjBMXf12F7LsXoBDpvgC3efL2XgkoRY8LJ9
+msV4PSDkJRzzmvSTvQ6Txg==</SignatureValue>
+ <KeyInfo>
+ <X509Data/>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-verify.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-verify.xml
new file mode 100644
index 00000000..4d6c84de
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-verify.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+ <DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>xOSp1bweDaNd5+NzBNO+m+1oEOm1jNjBMXf12F7LsXoBDpvgC3efL2XgkoRY8LJ9
+msV4PSDkJRzzmvSTvQ6Txg==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+A1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3
+DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMCAXDTE0MDUyMzE3NTA1OVoYDzIxMTQw
+NDI5MTc1MDU5WjCBrjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
+PTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtz
+ZXkuY29tL3htbHNlYykxEDAOBgNVBAsTB1Jvb3QgQ0ExFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCBnzAN
+BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtY4MCNj/qrOzVuex1BD/PuCYTDDOLLVj
+tpKXQteQPqy0kgMwuQgRwdNnICIHQbnFKL40XoyACJVWKM7b0LkvWJNeyVzXPqEE
+9ZPmNxWGUjVcr7powT7v8V7S2QflUnr8ZvR4XWwkZJ9EYKNhenijgJ5yYDrXCWdv
+C+fnjBjv2LcCAwEAAaOCARcwggETMB0GA1UdDgQWBBQGtaSsp6p1ROoVnE/fBYNP
+ah7+CzCB4wYDVR0jBIHbMIHYgBQGtaSsp6p1ROoVnE/fBYNPah7+C6GBtKSBsTCB
+rjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhN
+TCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNl
+YykxEDAOBgNVBAsTB1Jvb3QgQ0ExFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
+BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJAK+ii7kzrdqsMAwGA1Ud
+EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
+j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
+sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
+j0gv0PdxmuCsR/E=</X509Certificate>
+<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+A1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3
+DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMCAXDTE0MDUyMzE3NTIzOFoYDzIxMTQw
+NDI5MTc1MjM4WjCBnDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
+PTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtz
+ZXkuY29tL3htbHNlYykxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG
+9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
+QQCyuvKJ2CuUPD33ghPt4Q8MilesHxVbbpyKfmabrYVpDGVDmOKKp337qJUZZ95K
+fwlXbR2j0zyKWJmvRxUx+PsTAgMBAAGjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwG
+CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNV
+HQ4EFgQU/uTsUyTwlZXHELXhRLVdOWVa434wgeMGA1UdIwSB2zCB2IAUBrWkrKeq
+dUTqFZxP3wWDT2oe/guhgbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpD
+YWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDov
+L3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYD
+VQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3Nl
+eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
+BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
+jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
+mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
+<X509Certificate>MIIDpzCCA1GgAwIBAgIJAK+ii7kzrdqvMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
+A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
+ZXkuY29tMCAXDTE0MDUyMzE3NTUzNFoYDzIxMTQwNDI5MTc1NTM0WjCBxzELMAkG
+A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
+cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAn
+BgNVBAsTIFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7Ljqdn
+sYmW0tbDVxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQAB
+o4IBRTCCAUEwDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH
+ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTM
+QygZMIHjBgNVHSMEgdswgdiAFP7k7FMk8JWVxxC14US1XTllWuN+oYG0pIGxMIGu
+MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1M
+IFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2Vj
+KTEQMA4GA1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkAr6KLuTOt2q0wDQYJKoZI
+hvcNAQEFBQADQQAOXBj0yICp1RmHXqnUlsppryLCW3pKBD1dkb4HWarO7RjA1yJJ
+fBjXssrERn05kpBcrRfzou4r3DCgQFPhjxga</X509Certificate>
+</X509Data>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.tmpl
new file mode 100644
index 00000000..b8c8203b
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.tmpl
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
+ <DigestValue></DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ </SignatureValue>
+ <KeyInfo>
+ <X509Data/>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.xml b/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.xml
new file mode 100644
index 00000000..97fec3ba
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
+ <DigestValue>uTx8AeqrTmv+nijRsWW7TOs1pCIuCudsFRVloP6hPin8Q4x9fFX2j/zj53XB37OG</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>WPkdHC9fFlLdn8frBNBih8/tm4R/zRrYICLI+0oun6azj9OTBtyw0BCK5YmxF0LR
+8ZApcGnnvPom2U3i5e4h1A==</SignatureValue>
+ <KeyInfo>
+ <X509Data>
+<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+A1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3
+DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMCAXDTE0MDUyMzE3NTA1OVoYDzIxMTQw
+NDI5MTc1MDU5WjCBrjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
+PTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtz
+ZXkuY29tL3htbHNlYykxEDAOBgNVBAsTB1Jvb3QgQ0ExFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCBnzAN
+BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtY4MCNj/qrOzVuex1BD/PuCYTDDOLLVj
+tpKXQteQPqy0kgMwuQgRwdNnICIHQbnFKL40XoyACJVWKM7b0LkvWJNeyVzXPqEE
+9ZPmNxWGUjVcr7powT7v8V7S2QflUnr8ZvR4XWwkZJ9EYKNhenijgJ5yYDrXCWdv
+C+fnjBjv2LcCAwEAAaOCARcwggETMB0GA1UdDgQWBBQGtaSsp6p1ROoVnE/fBYNP
+ah7+CzCB4wYDVR0jBIHbMIHYgBQGtaSsp6p1ROoVnE/fBYNPah7+C6GBtKSBsTCB
+rjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhN
+TCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNl
+YykxEDAOBgNVBAsTB1Jvb3QgQ0ExFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
+BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJAK+ii7kzrdqsMAwGA1Ud
+EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
+j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
+sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
+j0gv0PdxmuCsR/E=</X509Certificate>
+
+<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
+A1UECxMHUm9vdCBDQTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3
+DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMCAXDTE0MDUyMzE3NTIzOFoYDzIxMTQw
+NDI5MTc1MjM4WjCBnDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
+PTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtz
+ZXkuY29tL3htbHNlYykxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG
+9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
+QQCyuvKJ2CuUPD33ghPt4Q8MilesHxVbbpyKfmabrYVpDGVDmOKKp337qJUZZ95K
+fwlXbR2j0zyKWJmvRxUx+PsTAgMBAAGjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwG
+CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNV
+HQ4EFgQU/uTsUyTwlZXHELXhRLVdOWVa434wgeMGA1UdIwSB2zCB2IAUBrWkrKeq
+dUTqFZxP3wWDT2oe/guhgbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpD
+YWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDov
+L3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYD
+VQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3Nl
+eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
+BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
+jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
+mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
+<X509Certificate>MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
+A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
+A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
+cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=</X509Certificate></X509Data>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512.xml b/tests/aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512.xml
index a33ea362..9233969b 100644
--- a/tests/aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512.xml
@@ -9,8 +9,8 @@
XDnbRaf22WqerzX1vL0QzA==</DigestValue>
</Reference>
</SignedInfo>
- <SignatureValue>p8iywKCFPKqaRq9tIpu2tXWx8BQ7L+1laypGaNucLtqzyUjSJy6XGoV9yNTnAEKq
-afu0z12Y/KTPRgfjLOqWXA==</SignatureValue>
+ <SignatureValue>5vaWW6jmgfmhFcV65FrOsOicilCL4H53ZNZU5XCvYXQvfJmYsQZ4bhzg2KOV78ZO
+v05ijIzPhhvYF+eodPfCZQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIID9zCCA2CgAwIBAgIJAK+ii7kzrdqsMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
@@ -35,6 +35,7 @@ EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEARpb86RP/ck55X+NunXeIX81i763b
j7Z1VJwFbA/QfupzxnqJ2IP/lxC8YxJ3Bp2IJMI7rC9r0poa41ZxI5rGHip97Dpg
sxPF9lkRUmKBBQjkICOq1w/4d2DRInBoqXttD+0WsqDfNDVK+7kSE07ytn3RzHCj
j0gv0PdxmuCsR/E=</X509Certificate>
+
<X509Certificate>MIIDzzCCAzigAwIBAgIJAK+ii7kzrdqtMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEQMA4G
@@ -56,26 +57,25 @@ eS5jb22CCQCvoou5M63arDANBgkqhkiG9w0BAQUFAAOBgQBuTAW63AgWqqUDPGi8
BiXbdKHhFP4J8qgkdv5WMa6SpSWVgNgOYXkK/BSg1aSmQtGv8/8UvBRPoJnO4y0N
jWUFf1ubOgUNmedYNLq7YbTp8yTGWeogCyM2xdWELMP8BMgQL0sP+MDAFMKO3itY
mEWnCEsP15HKSTms54RNj7oJ+A==</X509Certificate>
-<X509Certificate>MIIDfDCCAyagAwIBAgIJAK+ii7kzrdq0MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+<X509Certificate>MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
-ZXkuY29tMCAXDTE2MDEyOTE3MjYxMloYDzIxMTYwMTA1MTcyNjEyWjCBojELMAkG
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
-BgNVBAMTE0VDRFNBIHNlY3AyNTZrMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
-Y0BhbGVrc2V5LmNvbTBWMBAGByqGSM49AgEGBSuBBAAKA0IABGfbnXrR7bjGBsK6
-LIo2LkMPz9OhqW6U4EUwhA+0wbXbLzRufuaaUuGHkhl9LDa5128d1209j25iWgyL
-QoxgMLOjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVu
-U1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPJXHiW1HSqdwbucp
-ESi1JeIJHKAwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436hgbSk
-gbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQK
-EzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94
-bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
-MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63arTAN
-BgkqhkiG9w0BAQUFAANBAFweA03Qo3e3BvU4MT3wnsn7VZukTI61ewyrGCQshOc5
-ng3TuNfNcAuwhwDnTkHEarbwvG3OmJIl+yDqgVtTD9M=</X509Certificate>
-</X509Data>
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=</X509Certificate></X509Data>
</KeyInfo>
<Object Id="object">some text</Object>
</Signature>
diff --git a/tests/aleksey-xmldsig-01/signature-two-keynames.tmpl b/tests/aleksey-xmldsig-01/signature-two-keynames.tmpl
new file mode 100644
index 00000000..6396ea34
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/signature-two-keynames.tmpl
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+ <DigestValue></DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ </SignatureValue>
+ <KeyInfo>
+ <KeyName>key1</KeyName>
+ <KeyName>key2</KeyName>
+ </KeyInfo>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/signature-two-keynames.xml b/tests/aleksey-xmldsig-01/signature-two-keynames.xml
new file mode 100644
index 00000000..b166690b
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/signature-two-keynames.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+ <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+ <Reference URI="http://www.w3.org/TR/xml-stylesheet">
+ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <DigestValue>ITIkrxsTd8x8DE+Ui4ZehAiisH4=</DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>0UobNm5XqAHYfuzowI7e6SYQYyedx/YOBjvA0mQd6TDHxNvBs7QYuDaTuwjJGD9V
+8jXAQT5NktcwRHZm6E49jw==</SignatureValue>
+ <KeyInfo>
+ <KeyName>key1</KeyName>
+ <KeyName>key2</KeyName>
+ </KeyInfo>
+</Signature>
diff --git a/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.data b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.data
new file mode 100644
index 00000000..1d794286
--- /dev/null
+++ b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.data
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+ <Name>John Smith</Name>
+ <CreditCard Currency="USD" Limit="5,000">
+ <Number>4019 2445 0277 5567</Number>
+ <Issuer>Bank of the Internet</Issuer>
+ <Expiration Time="04/02"/>
+ </CreditCard>
+</PaymentInfo>
diff --git a/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.tmpl b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.tmpl
new file mode 100644
index 00000000..b0bcbdc6
--- /dev/null
+++ b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.tmpl
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey Id="EK" xmlns="http://www.w3.org/2001/04/xmlenc#">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+ <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+ <OAEPparams>MTIzNDU2Nzg=</OAEPparams>
+ </EncryptionMethod>
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+ <ds:KeyName>my-rsa-key</ds:KeyName>
+ </ds:KeyInfo>
+ <CipherData>
+ <CipherValue>
+ </CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </ds:KeyInfo>
+ <CipherData>
+ <CipherValue>
+ </CipherValue>
+ </CipherData>
+</EncryptedData>
diff --git a/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.xml b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.xml
new file mode 100644
index 00000000..5d1eeff0
--- /dev/null
+++ b/tests/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PaymentInfo xmlns="http://example.org/paymentv2">
+ <Name>John Smith</Name>
+ <CreditCard Currency="USD" Limit="5,000"><EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Id="ED" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+ <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#" Id="EK">
+ <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
+ <ds:DigestMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <OAEPparams>MTIzNDU2Nzg=</OAEPparams>
+ </EncryptionMethod>
+ <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+ <ds:KeyName>my-rsa-key</ds:KeyName>
+ </ds:KeyInfo>
+ <CipherData>
+ <CipherValue>qkGLaEkRFs+wAbz/zXl50nI7w8+b0NUxYXQu84lJz4iXeKj5/si2lgADR9bGVQ6N
+iSQGxMF9cra8zlzaB6hqxcL3u4A161ajA4iMn88kdkda/ZgVANaombU1HPn+Mqzo
+3/F/hfGSJ0CpzXv5Pi3zqe2J3Sii9NQBiyRkd0lbm41gCXLuRNkZH9x/LhOlrHEC
+Vj/7fi8sYTFuqz4MeCbIdNOzxOR5g/L+VTeAcTZfT6wfkfc7jFa2CqkwBqMvNrtD
+o+A0MmK0fb0/kJLxNx91PVXNti4l/SrbmGZhKIIgmY9DKtAJjTK60zWkiamfqA/N
+WbrcIZjGje5oRXC7GLyBJfHuLo4sQIN7UvbZCcz16OVcgOC2B/hG7CQCXGwiZV+U
+rTLjBaijbx/j0+zbMs+PkmD2Ba3DgrwzsGJ2sPq6oTW28ZJebcjSxNEundodNuFv
+RcohqiMFOlVJRKU/x15HsthnXrMDvYpIrKT4NJKQJHnPEeTZ+Bd6PR8jTL30p2Ea
+6yH3F189AVgQf8t6ZB+GSBb/zO2aKIrA6iiViz+MJDiiD3XY3T3beaDH/u09izRs
+bBqDCnFkkxajyENT8r5C1tS0PNAmaisXqPhkYSsWUBHYPgIxUasDy2oJBafF1JW0
+02N7Bvg9oVFDY+Xc4hWsmaC31txPEds6ZdxhBclCMu0=</CipherValue>
+ </CipherData>
+ </EncryptedKey>
+ </ds:KeyInfo>
+ <CipherData>
+ <CipherValue>ecIQfyygbLDMHLKCLO31g3Y4Q+2eJZ15hyt/kiLekdBWHZRFUBzEf/3W5H66tCL2
+/fsWY+Y2Zim64WuXJfPdYmy4UtSexpwTEHr0I5LR6Ykw2A61akDEh/zXKWpHsLrn
+so/amlIwRtEYJTQdER7+6kkMa40M2Jf2Hk6BIXfOSCggh0KpnCnuc1+NACE0VUh6</CipherValue>
+ </CipherData>
+</EncryptedData></CreditCard>
+</PaymentInfo>
diff --git a/tests/external-data/README b/tests/external-data/README
new file mode 100644
index 00000000..eafe37f3
--- /dev/null
+++ b/tests/external-data/README
@@ -0,0 +1 @@
+This folder contains external data mapped to URL resources for running tests offline. \ No newline at end of file
diff --git a/tests/external-data/rfc3161.txt b/tests/external-data/rfc3161.txt
new file mode 100644
index 00000000..628f300a
--- /dev/null
+++ b/tests/external-data/rfc3161.txt
@@ -0,0 +1,1459 @@
+
+
+
+
+
+
+Network Working Group C. Adams
+Request for Comments: 3161 Entrust
+Category: Standards Track P. Cain
+ BBN
+ D. Pinkas
+ Integris
+ R. Zuccherato
+ Entrust
+ August 2001
+
+
+ Internet X.509 Public Key Infrastructure
+ Time-Stamp Protocol (TSP)
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+Abstract
+
+ This document describes the format of a request sent to a Time
+ Stamping Authority (TSA) and of the response that is returned. It
+ also establishes several security-relevant requirements for TSA
+ operation, with regards to processing requests to generate responses.
+
+1. Introduction
+
+ A time-stamping service supports assertions of proof that a datum
+ existed before a particular time. A TSA may be operated as a Trusted
+ Third Party (TTP) service, though other operational models may be
+ appropriate, e.g., an organization might require a TSA for internal
+ time-stamping purposes.
+
+ Non-repudiation services [ISONR] require the ability to establish the
+ existence of data before specified times. This protocol may be used
+ as a building block to support such services. An example of how to
+ prove that a digital signature was generated during the validity
+ period of a public key certificate is given in an annex.
+
+
+
+
+
+Adams, et al. Standards Track [Page 1]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT",
+ "SHALL", "RECOMMENDED", "MAY", and "OPTIONAL" in this document (in
+ uppercase, as shown) are to be interpreted as described in [RFC2119].
+
+ In order to associate a datum with a particular point in time, a Time
+ Stamp Authority (TSA) may need to be used. This Trusted Third Party
+ provides a "proof-of-existence" for this particular datum at an
+ instant in time.
+
+ The TSA's role is to time-stamp a datum to establish evidence
+ indicating that a datum existed before a particular time. This can
+ then be used, for example, to verify that a digital signature was
+ applied to a message before the corresponding certificate was revoked
+ thus allowing a revoked public key certificate to be used for
+ verifying signatures created prior to the time of revocation. This
+ is an important public key infrastructure operation. The TSA can
+ also be used to indicate the time of submission when a deadline is
+ critical, or to indicate the time of transaction for entries in a
+ log. An exhaustive list of possible uses of a TSA is beyond the
+ scope of this document.
+
+ This standard does not establish overall security requirements for
+ TSA operation, just like other PKIX standards do not establish such
+ requirements for CA operation. Rather, it is anticipated that a TSA
+ will make known to prospective clients the policies it implements to
+ ensure accurate time-stamp generation, and clients will make use of
+ the services of a TSA only if they are satisfied that these policies
+ meet their needs.
+
+2. The TSA
+
+ The TSA is a TTP that creates time-stamp tokens in order to indicate
+ that a datum existed at a particular point in time.
+
+ For the remainder of this document a "valid request" shall mean one
+ that can be decoded correctly, is of the form specified in Section
+ 2.4, and is from a supported TSA subscriber.
+
+2.1. Requirements of the TSA
+
+ The TSA is REQUIRED:
+
+ 1. to use a trustworthy source of time.
+
+ 2. to include a trustworthy time value for each time-stamp token.
+
+ 3. to include a unique integer for each newly generated time-stamp
+ token.
+
+
+
+Adams, et al. Standards Track [Page 2]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ 4. to produce a time-stamp token upon receiving a valid request
+ from the requester, when it is possible.
+
+ 5. to include within each time-stamp token an identifier to
+ uniquely indicate the security policy under which the token was
+ created.
+
+ 6. to only time-stamp a hash representation of the datum, i.e., a
+ data imprint associated with a one-way collision resistant
+ hash-function uniquely identified by an OID.
+
+ 7. to examine the OID of the one-way collision resistant hash-
+ function and to verify that the hash value length is consistent
+ with the hash algorithm.
+
+ 8. not to examine the imprint being time-stamped in any way (other
+ than to check its length, as specified in the previous bullet).
+
+ 9. not to include any identification of the requesting entity in
+ the time-stamp tokens.
+
+ 10. to sign each time-stamp token using a key generated exclusively
+ for this purpose and have this property of the key indicated on
+ the corresponding certificate.
+
+ 11. to include additional information in the time-stamp token, if
+ asked by the requester using the extensions field, only for the
+ extensions that are supported by the TSA. If this is not
+ possible, the TSA SHALL respond with an error message.
+
+2.2. TSA Transactions
+
+ As the first message of this mechanism, the requesting entity
+ requests a time-stamp token by sending a request (which is or
+ includes a TimeStampReq, as defined below) to the Time Stamping
+ Authority. As the second message, the Time Stamping Authority
+ responds by sending a response (which is or includes a TimeStampResp,
+ as defined below) to the requesting entity.
+
+ Upon receiving the response (which is or includes a TimeStampResp
+ that normally contains a TimeStampToken (TST), as defined below), the
+ requesting entity SHALL verify the status error returned in the
+ response and if no error is present it SHALL verify the various
+ fields contained in the TimeStampToken and the validity of the
+ digital signature of the TimeStampToken. In particular, it SHALL
+ verify that what was time-stamped corresponds to what was requested
+ to be time-stamped. The requester SHALL verify that the
+ TimeStampToken contains the correct certificate identifier of the
+
+
+
+Adams, et al. Standards Track [Page 3]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ TSA, the correct data imprint and the correct hash algorithm OID. It
+ SHALL then verify the timeliness of the response by verifying either
+ the time included in the response against a local trusted time
+ reference, if one is available, or the value of the nonce (large
+ random number with a high probability that it is generated by the
+ client only once) included in the response against the value included
+ in the request. For more details about replay attack detection, see
+ the security considerations section (item 6). If any of the
+ verifications above fails, the TimeStampToken SHALL be rejected.
+
+ Then, since the TSA's certificate may have been revoked, the status
+ of the certificate SHOULD be checked (e.g., by checking the
+ appropriate CRL) to verify that the certificate is still valid.
+
+ Then, the client application SHOULD check the policy field to
+ determine whether or not the policy under which the token was issued
+ is acceptable for the application.
+
+2.3. Identification of the TSA
+
+ The TSA MUST sign each time-stamp message with a key reserved
+ specifically for that purpose. A TSA MAY have distinct private keys,
+ e.g., to accommodate different policies, different algorithms,
+ different private key sizes or to increase the performance. The
+ corresponding certificate MUST contain only one instance of the
+ extended key usage field extension as defined in [RFC2459] Section
+ 4.2.1.13 with KeyPurposeID having value:
+
+ id-kp-timeStamping. This extension MUST be critical.
+
+ The following object identifier identifies the KeyPurposeID having
+ value id-kp-timeStamping.
+
+ id-kp-timeStamping OBJECT IDENTIFIER ::= {iso(1)
+ identified-organization(3) dod(6)
+ internet(1) security(5) mechanisms(5) pkix(7)
+ kp (3) timestamping (8)}
+
+2.4. Request and Response Formats
+
+2.4.1. Request Format
+
+ A time-stamping request is as follows:
+
+TimeStampReq ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ messageImprint MessageImprint,
+ --a hash algorithm OID and the hash value of the data to be
+
+
+
+Adams, et al. Standards Track [Page 4]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ --time-stamped
+ reqPolicy TSAPolicyId OPTIONAL,
+ nonce INTEGER OPTIONAL,
+ certReq BOOLEAN DEFAULT FALSE,
+ extensions [0] IMPLICIT Extensions OPTIONAL }
+
+ The version field (currently v1) describes the version of the Time-
+ Stamp request.
+
+ The messageImprint field SHOULD contain the hash of the datum to be
+ time-stamped. The hash is represented as an OCTET STRING. Its
+ length MUST match the length of the hash value for that algorithm
+ (e.g., 20 bytes for SHA-1 or 16 bytes for MD5).
+
+ MessageImprint ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashedMessage OCTET STRING }
+
+ The hash algorithm indicated in the hashAlgorithm field SHOULD be a
+ known hash algorithm (one-way and collision resistant). That means
+ that it SHOULD be one-way and collision resistant. The Time Stamp
+ Authority SHOULD check whether or not the given hash algorithm is
+ known to be "sufficient" (based on the current state of knowledge in
+ cryptanalysis and the current state of the art in computational
+ resources, for example). If the TSA does not recognize the hash
+ algorithm or knows that the hash algorithm is weak (a decision left
+ to the discretion of each individual TSA), then the TSA SHOULD refuse
+ to provide the time-stamp token by returning a pkiStatusInfo of
+ 'bad_alg'.
+
+ The reqPolicy field, if included, indicates the TSA policy under
+ which the TimeStampToken SHOULD be provided. TSAPolicyId is defined
+ as follows:
+
+ TSAPolicyId ::= OBJECT IDENTIFIER
+
+ The nonce, if included, allows the client to verify the timeliness of
+ the response when no local clock is available. The nonce is a large
+ random number with a high probability that the client generates it
+ only once (e.g., a 64 bit integer). In such a case the same nonce
+ value MUST be included in the response, otherwise the response shall
+ be rejected.
+
+ If the certReq field is present and set to true, the TSA's public key
+ certificate that is referenced by the ESSCertID identifier inside a
+ SigningCertificate attribute in the response MUST be provided by the
+ TSA in the certificates field from the SignedData structure in that
+ response. That field may also contain other certificates.
+
+
+
+Adams, et al. Standards Track [Page 5]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ If the certReq field is missing or if the certReq field is present
+ and set to false then the certificates field from the SignedData
+ structure MUST not be present in the response.
+
+ The extensions field is a generic way to add additional information
+ to the request in the future. Extensions is defined in [RFC 2459].
+ If an extension, whether it is marked critical or not critical, is
+ used by a requester but is not recognized by a time-stamping server,
+ the server SHALL not issue a token and SHALL return a failure
+ (unacceptedExtension).
+
+ The time-stamp request does not identify the requester, as this
+ information is not validated by the TSA (See Section 2.1). In
+ situations where the TSA requires the identity of the requesting
+ entity, alternate identification /authentication means have to be
+ used (e.g., CMS encapsulation [CMS] or TLS authentication [RFC2246]).
+
+2.4.2. Response Format
+
+ A time-stamping response is as follows:
+
+ TimeStampResp ::= SEQUENCE {
+ status PKIStatusInfo,
+ timeStampToken TimeStampToken OPTIONAL }
+
+ The status is based on the definition of status in section 3.2.3
+ of [RFC2510] as follows:
+
+ PKIStatusInfo ::= SEQUENCE {
+ status PKIStatus,
+ statusString PKIFreeText OPTIONAL,
+ failInfo PKIFailureInfo OPTIONAL }
+
+ When the status contains the value zero or one, a TimeStampToken MUST
+ be present. When status contains a value other than zero or one, a
+ TimeStampToken MUST NOT be present. One of the following values MUST
+ be contained in status:
+
+ PKIStatus ::= INTEGER {
+ granted (0),
+ -- when the PKIStatus contains the value zero a TimeStampToken, as
+ requested, is present.
+ grantedWithMods (1),
+ -- when the PKIStatus contains the value one a TimeStampToken,
+ with modifications, is present.
+ rejection (2),
+ waiting (3),
+ revocationWarning (4),
+
+
+
+Adams, et al. Standards Track [Page 6]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ -- this message contains a warning that a revocation is
+ -- imminent
+ revocationNotification (5)
+ -- notification that a revocation has occurred }
+
+ Compliant servers SHOULD NOT produce any other values. Compliant
+ clients MUST generate an error if values it does not understand are
+ present.
+
+ When the TimeStampToken is not present, the failInfo indicates the
+ reason why the time-stamp request was rejected and may be one of the
+ following values.
+
+PKIFailureInfo ::= BIT STRING {
+ badAlg (0),
+ -- unrecognized or unsupported Algorithm Identifier
+ badRequest (2),
+ -- transaction not permitted or supported
+ badDataFormat (5),
+ -- the data submitted has the wrong format
+ timeNotAvailable (14),
+ -- the TSA's time source is not available
+ unacceptedPolicy (15),
+ -- the requested TSA policy is not supported by the TSA
+ unacceptedExtension (16),
+ -- the requested extension is not supported by the TSA
+ addInfoNotAvailable (17)
+ -- the additional information requested could not be understood
+ -- or is not available
+ systemFailure (25)
+ -- the request cannot be handled due to system failure }
+
+ These are the only values of PKIFailureInfo that SHALL be supported.
+
+ Compliant servers SHOULD NOT produce any other values. Compliant
+ clients MUST generate an error if values it does not understand are
+ present.
+
+ The statusString field of PKIStatusInfo MAY be used to include reason
+ text such as "messageImprint field is not correctly formatted".
+
+ A TimeStampToken is as follows. It is defined as a ContentInfo
+ ([CMS]) and SHALL encapsulate a signed data content type.
+
+ TimeStampToken ::= ContentInfo
+ -- contentType is id-signedData ([CMS])
+ -- content is SignedData ([CMS])
+
+
+
+
+Adams, et al. Standards Track [Page 7]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ The fields of type EncapsulatedContentInfo of the SignedData
+ construct have the following meanings:
+
+ eContentType is an object identifier that uniquely specifies the
+ content type. For a time-stamp token it is defined as:
+
+ id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}
+
+ eContent is the content itself, carried as an octet string.
+ The eContent SHALL be the DER-encoded value of TSTInfo.
+
+ The time-stamp token MUST NOT contain any signatures other than the
+ signature of the TSA. The certificate identifier (ESSCertID) of the
+ TSA certificate MUST be included as a signerInfo attribute inside a
+ SigningCertificate attribute.
+
+TSTInfo ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ policy TSAPolicyId,
+ messageImprint MessageImprint,
+ -- MUST have the same value as the similar field in
+ -- TimeStampReq
+ serialNumber INTEGER,
+ -- Time-Stamping users MUST be ready to accommodate integers
+ -- up to 160 bits.
+ genTime GeneralizedTime,
+ accuracy Accuracy OPTIONAL,
+ ordering BOOLEAN DEFAULT FALSE,
+ nonce INTEGER OPTIONAL,
+ -- MUST be present if the similar field was present
+ -- in TimeStampReq. In that case it MUST have the same value.
+ tsa [0] GeneralName OPTIONAL,
+ extensions [1] IMPLICIT Extensions OPTIONAL }
+
+ The version field (currently v1) describes the version of the time-
+ stamp token.
+
+ Conforming time-stamping servers MUST be able to provide version 1
+ time-stamp tokens.
+
+ Among the optional fields, only the nonce field MUST be supported.
+
+ Conforming time-stamping requesters MUST be able to recognize version
+ 1 time-stamp tokens with all the optional fields present, but are not
+ mandated to understand the semantics of any extension, if present.
+
+
+
+
+
+Adams, et al. Standards Track [Page 8]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ The policy field MUST indicate the TSA's policy under which the
+ response was produced. If a similar field was present in the
+ TimeStampReq, then it MUST have the same value, otherwise an error
+ (unacceptedPolicy) MUST be returned. This policy MAY include the
+ following types of information (although this list is certainly not
+ exhaustive):
+
+ * The conditions under which the time-stamp token may be used.
+
+ * The availability of a time-stamp token log, to allow later
+ verification that a time-stamp token is authentic.
+
+ The messageImprint MUST have the same value as the similar field in
+ TimeStampReq, provided that the size of the hash value matches the
+ expected size of the hash algorithm identified in hashAlgorithm.
+
+ The serialNumber field is an integer assigned by the TSA to each
+ TimeStampToken. It MUST be unique for each TimeStampToken issued by
+ a given TSA (i.e., the TSA name and serial number identify a unique
+ TimeStampToken). It should be noticed that the property MUST be
+ preserved even after a possible interruption (e.g., crash) of the
+ service.
+
+ genTime is the time at which the time-stamp token has been created by
+ the TSA. It is expressed as UTC time (Coordinated Universal Time) to
+ reduce confusion with the local time zone use. UTC is a time scale,
+ based on the second (SI), as defined and recommended by the CCIR, and
+ maintained by the Bureau International des Poids et Mesures (BIPM). A
+ synonym is "Zulu" time which is used by the civil aviation and
+ represented by the letter "Z" (phonetically "Zulu").
+
+ The ASN.1 GeneralizedTime syntax can include fraction-of-second
+ details. Such syntax, without the restrictions from [RFC 2459]
+ Section 4.1.2.5.2, where GeneralizedTime is limited to represent the
+ time with a granularity of one second, may be used here.
+
+ GeneralizedTime values MUST include seconds. However, when there is
+ no need to have a precision better than the second, then
+ GeneralizedTime with a precision limited to one second SHOULD be used
+ (as in [RFC 2459]).
+
+ The syntax is: YYYYMMDDhhmmss[.s...]Z
+ Example: 19990609001326.34352Z
+
+ X.690 | ISO/IEC 8825-1 provides the following restrictions for a
+ DER-encoding.
+
+
+
+
+
+Adams, et al. Standards Track [Page 9]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ The encoding MUST terminate with a "Z" (which means "Zulu" time). The
+ decimal point element, if present, MUST be the point option ".". The
+ fractional-seconds elements, if present, MUST omit all trailing 0's;
+ if the elements correspond to 0, they MUST be wholly omitted, and the
+ decimal point element also MUST be omitted.
+
+ Midnight (GMT) shall be represented in the form: "YYYYMMDD000000Z"
+ where "YYYYMMDD" represents the day following the midnight in
+ question.
+
+ Here are a few examples of valid representations:
+
+ "19920521000000Z"
+ "19920622123421Z"
+ "19920722132100.3Z"
+
+ accuracy represents the time deviation around the UTC time contained
+ in GeneralizedTime.
+
+ Accuracy ::= SEQUENCE {
+ seconds INTEGER OPTIONAL,
+ millis [0] INTEGER (1..999) OPTIONAL,
+ micros [1] INTEGER (1..999) OPTIONAL }
+
+ If either seconds, millis or micros is missing, then a value of zero
+ MUST be taken for the missing field.
+
+ By adding the accuracy value to the GeneralizedTime, an upper limit
+ of the time at which the time-stamp token has been created by the TSA
+ can be obtained. In the same way, by subtracting the accuracy to the
+ GeneralizedTime, a lower limit of the time at which the time-stamp
+ token has been created by the TSA can be obtained.
+
+ accuracy can be decomposed in seconds, milliseconds (between 1-999)
+ and microseconds (1-999), all expressed as integer.
+
+ When the accuracy optional field is not present, then the accuracy
+ may be available through other means, e.g., the TSAPolicyId.
+
+ If the ordering field is missing, or if the ordering field is present
+ and set to false, then the genTime field only indicates the time at
+ which the time-stamp token has been created by the TSA. In such a
+ case, the ordering of time-stamp tokens issued by the same TSA or
+ different TSAs is only possible when the difference between the
+ genTime of the first time-stamp token and the genTime of the second
+ time-stamp token is greater than the sum of the accuracies of the
+ genTime for each time-stamp token.
+
+
+
+
+Adams, et al. Standards Track [Page 10]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ If the ordering field is present and set to true, every time-stamp
+ token from the same TSA can always be ordered based on the genTime
+ field, regardless of the genTime accuracy.
+
+ The nonce field MUST be present if it was present in the
+ TimeStampReq. In such a case it MUST equal the value provided in the
+ TimeStampReq structure.
+
+ The purpose of the tsa field is to give a hint in identifying the
+ name of the TSA. If present, it MUST correspond to one of the
+ subject names included in the certificate that is to be used to
+ verify the token. However, the actual identification of the entity
+ that signed the response will always occur through the use of the
+ certificate identifier (ESSCertID Attribute) inside a
+ SigningCertificate attribute which is part of the signerInfo (See
+ Section 5 of [ESS]).
+
+ extensions is a generic way to add additional information in the
+ future. Extensions is defined in [RFC 2459].
+
+ Particular extension field types may be specified in standards or may
+ be defined and registered by any organization or community.
+
+3. Transports
+
+ There is no mandatory transport mechanism for TSA messages in this
+ document. The mechanisms described below are optional; additional
+ optional mechanisms may be defined in the future.
+
+3.1. Time-Stamp Protocol Using E-mail
+
+ This section specifies a means for conveying ASN.1-encoded messages
+ for the protocol exchanges described in Section 2 and Appendix D via
+ Internet mail.
+
+ Two MIME objects are specified as follows:
+
+ Content-Type: application/timestamp-query
+ Content-Transfer-Encoding: base64
+ <<the ASN.1 DER-encoded Time-Stamp message, base64-encoded>>
+
+ Content-Type: application/timestamp-reply
+ Content-Transfer-Encoding: base64
+ <<the ASN.1 DER-encoded Time-Stamp message, base64-encoded>>
+
+ These MIME objects can be respectively sent and received using common
+ MIME processing engines and provides a simple Internet mail transport
+ for Time-Stamp messages.
+
+
+
+Adams, et al. Standards Track [Page 11]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ For the application/timestamp-query and application/timestamp-reply
+ MIME types, implementations SHOULD include the optional "name" and
+ "filename" parameters. Including a file name helps preserve type
+ information when time-stamp queries and replies are saved as files.
+ When these parameters are included, a file name with the appropriate
+ extension SHOULD be selected:
+
+ MIME Type File Extension
+ application/timestamp-query .TSQ
+ application/timestamp-reply .TSR
+
+ In addition, the file name SHOULD be limited to eight characters
+ followed by a three letter extension. The eight character filename
+ base can be any distinct name.
+
+3.2. File Based Protocol
+
+ A file containing a time-stamp message MUST contain only the DER
+ encoding of one TSA message, i.e., there MUST be no extraneous header
+ or trailer information in the file. Such files can be used to
+ transport time stamp messages using for example, FTP.
+
+ A Time-Stamp Request SHOULD be contained in a file with file
+ extension .tsq (like Time-Stamp Query). A Time-Stamp Response
+ SHOULD be contained in a file with file extension .tsr (like
+ Time-Stamp Reply).
+
+3.3. Socket Based Protocol
+
+ The following simple TCP-based protocol is to be used for transport
+ of TSA messages. This protocol is suitable for cases where an entity
+ initiates a transaction and can poll to pick up the results.
+
+ The protocol basically assumes a listener process on a TSA that can
+ accept TSA messages on a well-defined port (IP port number 318).
+
+ Typically an initiator binds to this port and submits the initial TSA
+ message. The responder replies with a TSA message and/or with a
+ reference number to be used later when polling for the actual TSA
+ message response.
+
+ If a number of TSA response messages are to be produced for a given
+ request (say if a receipt must be sent before the actual token can be
+ produced) then a new polling reference is also returned.
+
+ When the final TSA response message has been picked up by the
+ initiator then no new polling reference is supplied.
+
+
+
+
+Adams, et al. Standards Track [Page 12]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ The initiator of a transaction sends a "direct TCP-based TSA message"
+ to the recipient. The recipient responds with a similar message.
+
+ A "direct TCP-based TSA message" consists of:
+ length (32-bits), flag (8-bits), value (defined below)
+
+ The length field contains the number of octets of the remainder of
+ the message (i.e., number of octets of "value" plus one). All 32-bit
+ values in this protocol are specified to be in network byte order.
+
+ Message name flag value
+ tsaMsg '00'H DER-encoded TSA message
+ -- TSA message
+ pollRep '01'H polling reference (32 bits),
+ time-to-check-back (32 bits)
+ -- poll response where no TSA message response ready; use polling
+ -- reference value (and estimated time value) for later polling
+ pollReq '02'H polling reference (32 bits)
+ -- request for a TSA message response to initial message
+ negPollRep '03'H '00'H
+ -- no further polling responses (i.e., transaction complete)
+ partialMsgRep '04'H next polling reference (32 bits),
+ time-to-check-back (32 bits),
+ DER-encoded TSA message
+ -- partial response (receipt) to initial message plus new polling
+ -- reference (and estimated time value) to use to get next part of
+ -- response
+ finalMsgRep '05'H DER-encoded TSA message
+ -- final (and possibly sole) response to initial message
+ errorMsgRep '06'H human readable error message
+ -- produced when an error is detected (e.g., a polling reference
+ -- is received which doesn't exist or is finished with)
+
+ The sequence of messages that can occur is:
+
+ a) entity sends tsaMsg and receives one of pollRep, negPollRep,
+ partialMsgRep, or finalMsgRep in response.
+
+ b) end entity sends pollReq message and receives one of
+ negPollRep, partialMsgRep, finalMsgRep, or errorMsgRep in
+ response.
+
+ The "time-to-check-back" parameter is an unsigned 32-bit integer. It
+ is the time in seconds indicating the minimum interval after which
+ the client SHOULD check the status again.
+
+ It provides an estimate of the time that the end entity should send
+ its next pollReq.
+
+
+
+Adams, et al. Standards Track [Page 13]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+3.4. Time-Stamp Protocol via HTTP
+
+ This subsection specifies a means for conveying ASN.1-encoded
+ messages for the protocol exchanges described in Section 2 and
+ Appendix D via the HyperText Transfer Protocol.
+
+ Two MIME objects are specified as follows.
+
+ Content-Type: application/timestamp-query
+
+ <<the ASN.1 DER-encoded Time-Stamp Request message>>
+
+ Content-Type: application/timestamp-reply
+
+ <<the ASN.1 DER-encoded Time-Stamp Response message>>
+
+ These MIME objects can be sent and received using common HTTP
+ processing engines over WWW links and provides a simple browser-
+ server transport for Time-Stamp messages.
+
+ Upon receiving a valid request, the server MUST respond with either a
+ valid response with content type application/timestamp-response or
+ with an HTTP error.
+
+4. Security Considerations
+
+ This entire document concerns security considerations. When
+ designing a TSA service, the following considerations have been
+ identified that have an impact upon the validity or "trust" in the
+ time-stamp token.
+
+ 1. When a TSA shall not be used anymore, but the TSA private key has
+ not been compromised, the authority's certificate SHALL be
+ revoked. When the reasonCode extension relative to the revoked
+ certificate from the TSA is present in the CRL entry extensions,
+ it SHALL be set either to unspecified (0), affiliationChanged (3),
+ superseded (4) or cessationOfOperation (5). In that case, at any
+ future time, the tokens signed with the corresponding key will be
+ considered as invalid, but tokens generated before the revocation
+ time will remain valid. When the reasonCode extension relative to
+ the revoked certificate from the TSA is not present in the CRL
+ entry extensions, then all the tokens that have been signed with
+ the corresponding key SHALL be considered as invalid. For that
+ reason, it is recommended to use the reasonCode extension.
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 14]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ 2. When the TSA private key has been compromised, then the
+ corresponding certificate SHALL be revoked. In that case, the
+ reasonCode extension relative to the revoked certificate from the
+ TSA may or may not be present in the CRL entry extensions. When
+ it is present then it SHALL be set to keyCompromise (1). Any
+ token signed by the TSA using that private key cannot be trusted
+ anymore. For this reason, it is imperative that the TSA's private
+ key be guarded with proper security and controls in order to
+ minimize the possibility of compromise. In case the private key
+ does become compromised, an audit trail of all tokens generated by
+ the TSA MAY provide a means to discriminate between genuine and
+ false backdated tokens. Two time-stamp tokens from two different
+ TSAs is another way to address this issue.
+
+ 3. The TSA signing key MUST be of a sufficient length to allow for a
+ sufficiently long lifetime. Even if this is done, the key will
+ have a finite lifetime. Thus, any token signed by the TSA SHOULD
+ be time-stamped again (if authentic copies of old CRLs are
+ available) or notarized (if they aren't) at a later date to renew
+ the trust that exists in the TSA's signature. time-stamp tokens
+ could also be kept with an Evidence Recording Authority to
+ maintain this trust.
+
+ 4. A client application using only a nonce and no local clock SHOULD
+ be concerned about the amount of time it is willing to wait for a
+ response. A `man-in-the-middle' attack can introduce delays.
+ Thus, any TimeStampResp that takes more than an acceptable period
+ of time SHOULD be considered suspect. Since each transport method
+ specified in this document has different delay characteristics,
+ the period of time that is considered acceptable will depend upon
+ the particular transport method used, as well as other environment
+ factors.
+
+ 5. If different entities obtain time-stamp tokens on the same data
+ object using the same hash algorithm, or a single entity obtains
+ multiple time-stamp tokens on the same object, the generated
+ time-stamp tokens will include identical message imprints; as a
+ result, an observer with access to those time-stamp tokens could
+ infer that the time-stamps may refer to the same underlying data.
+
+
+
+
+
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 15]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ 6. Inadvertent or deliberate replays for requests incorporating the
+ same hash algorithm and value may happen. Inadvertent replays
+ occur when more than one copy of the same request message gets
+ sent to the TSA because of problems in the intervening network
+ elements. Deliberate replays occur when a middleman is replaying
+ legitimate TS responses. In order to detect these situations,
+ several techniques may be used. Using a nonce always allows to
+ detect replays, and hence its use is RECOMMENDED. Another
+ possibility is to use both a local clock and a moving time window
+ during which the requester remembers all the hashes sent during
+ that time window. When receiving a response, the requester
+ ensures both that the time of the response is within the time
+ window and that there is only one occurrence of the hash value in
+ that time window. If the same hash value is present more than
+ once within a time window, the requester may either use a nonce,
+ or wait until the time window has moved to come back to the case
+ where the same hash value appears only once during that time
+ window.
+
+5. Intellectual Property Rights
+
+ The IETF takes no position regarding the validity or scope of any
+ intellectual property or other rights that might be claimed to per-
+ tain to the implementation or use of the technology described in this
+ document or the extent to which any license under such rights might
+ or might not be available; neither does it represent that it has made
+ any effort to identify any such rights. Information on the IETF's
+ procedures with respect to rights in standards-track and standards-
+ related documentation can be found in BCP-11. Copies of claims of
+ rights made available for publication and any assurances of licenses
+ to be made available, or the result of an attempt made to obtain a
+ general license or permission for the use of such proprietary rights
+ by implementors or users of this specification can be obtained from
+ the IETF Secretariat.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights which may cover technology that may be required to practice
+ this standard. Please address the information to the IETF Executive
+ Director.
+
+ The following eight (8) United States Patents related to time
+ stamping, listed in chronological order, are known by the authors to
+ exist at this time. This may not be an exhaustive list. Other
+ patents MAY exist or be issued at any time. This list is provided
+ for informational purposes; to date, the IETF has not been notified
+ of intellectual property rights claimed in regard to any of the
+
+
+
+
+Adams, et al. Standards Track [Page 16]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ specification contained in this document. Should this situation
+ change, the current status may be found at the online list of claimed
+ rights (IETF Page of Intellectual Property Rights Notices).
+
+ Implementers of this protocol SHOULD perform their own patent search
+ and determine whether or not any encumbrances exist on their
+ implementation.
+
+ Users of this protocol SHOULD perform their own patent search and
+ determine whether or not any encumbrances exist on the use of this
+ standard.
+
+# 5,001,752 Public/Key Date-Time Notary Facility
+Filing date: October 13, 1989
+Issued: March 19, 1991
+Inventor: Addison M. Fischer
+
+# 5,022,080 Electronic Notary
+Filing date: April 16, 1989
+Issued: June 4, 1991
+Inventors: Robert T. Durst, Kevin D. Hunter
+
+# 5,136,643 Public/Key Date-Time Notary Facility
+Filing date: December 20, 1990
+Issued: August 4, 1992
+Inventor: Addison M. Fischer
+Note: This is a continuation of patent # 5,001,752.)
+
+# 5,136,646 Digital Document Time-Stamping with Catenate Certificate
+Filing date: August 2, 1990
+Issued: August 4, 1992
+Inventors: Stuart A. Haber, Wakefield S. Stornetta Jr.
+(assignee) Bell Communications Research, Inc.,
+
+# 5,136,647 Method for Secure Time-Stamping of Digital Documents
+Filing date: August 2, 1990
+Issued: August 4, 1992
+Inventors: Stuart A. Haber, Wakefield S. Stornetta Jr.
+(assignee) Bell Communications Research, Inc.,
+
+# 5,373,561 Method of Extending the Validity of a Cryptographic
+Certificate
+Filing date: December 21, 1992
+Issued: December 13, 1994
+Inventors: Stuart A. Haber, Wakefield S. Stornetta Jr.
+(assignee) Bell Communications Research, Inc.,
+
+
+
+
+
+Adams, et al. Standards Track [Page 17]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+# 5,422,953 Personal Date/Time Notary Device
+Filing date: May 5, 1993
+Issued: June 6, 1995
+Inventor: Addison M. Fischer
+
+# 5,781,629 Digital Document Authentication System
+Filing date: February 21, 1997
+Issued: July 14, 1998
+Inventor: Stuart A. Haber, Wakefield S. Stornetta Jr.
+(assignee) Surety Technologies, Inc.,
+
+6. References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol, Version 1.0",
+ RFC 2246, January 1999.
+
+ [RFC2510] Adams, C. and S. Farrell, "Internet X.509 Public Key
+ Infrastructure, Certificate Management Protocols", RFC
+ 2510, March 1999.
+
+ [RFC2459] Housley, R., Ford, W., Polk, W. and D. Solo, "Internet
+ X.509 Public Key Infrastructure, Certificate and CRL
+ Profile", RFC 2459, January 1999.
+
+ [CMS] Housley, R., "Cryptographic Message Syntax", RFC 2630,
+ June 1999.
+
+ [DSS] Digital Signature Standard. FIPS Pub 186. National
+ Institute of Standards and Technology. 19 May 1994.
+
+ [ESS] Hoffman, P., "Enhanced Security Services for S/MIME", RFC
+ 2634, June 1999.
+
+ [ISONR] ISO/IEC 10181-5: Security Frameworks in Open Systems.
+ Non-Repudiation Framework. April 1997.
+
+ [MD5] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
+ April 1992.
+
+ [SHA1] Secure Hash Standard. FIPS Pub 180-1. National Institute
+ of Standards and Technology. 17 April 1995.
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 18]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+7. Authors' Addresses
+
+ Carlisle Adams
+ Entrust, Inc.
+ 1000 Innovation Drive
+ Ottawa, Ontario
+ K2K 3E7
+ CANADA
+
+ EMail: cadams@entrust.com
+
+
+ Pat Cain
+ BBN
+ 70 Fawcett Street
+ Cambridge, MA 02138
+ U.S.A.
+
+ EMail: pcain@bbn.com
+
+
+ Denis Pinkas
+ Integris
+ 68 route de Versailles
+ B.P. 434
+ 78430 Louveciennes
+ FRANCE
+
+ EMail: Denis.Pinkas@bull.net
+
+
+ Robert Zuccherato
+ Entrust, Inc.
+ 1000 Innovation Drive
+ Ottawa, Ontario
+ K2K 3E7
+ CANADA
+
+ EMail: robert.zuccherato@entrust.com
+
+
+
+
+
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 19]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+APPENDIX A - Signature Time-stamp attribute using CMS
+
+ One of the major uses of time-stamping is to time-stamp a digital
+ signature to prove that the digital signature was created before a
+ given time. Should the corresponding public key certificate be
+ revoked this allows a verifier to know whether the signature was
+ created before or after the revocation date.
+
+ A sensible place to store a time-stamp is in a [CMS] structure as an
+ unsigned attribute.
+
+ This appendix defines a Signature Time-stamp attribute that may be
+ used to time-stamp a digital signature.
+
+ The following object identifier identifies the Signature Time-stamp
+ attribute:
+
+ id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }
+
+ The Signature time-stamp attribute value has ASN.1 type
+ SignatureTimeStampToken:
+
+ SignatureTimeStampToken ::= TimeStampToken
+
+ The value of messageImprint field within TimeStampToken shall be a
+ hash of the value of signature field within SignerInfo for the
+ signedData being time-stamped.
+
+APPENDIX B - Placing a Signature At a Particular Point in Time
+
+ We present an example of a possible use of this general time-stamping
+ service. It places a signature at a particular point in time, from
+ which the appropriate certificate status information (e.g., CRLs)
+ MUST be checked. This application is intended to be used in
+ conjunction with evidence generated using a digital signature
+ mechanism.
+
+ Signatures can only be verified according to a non-repudiation
+ policy. This policy MAY be implicit or explicit (i.e., indicated in
+ the evidence provided by the signer). The non-repudiation policy can
+ specify, among other things, the time period allowed by a signer to
+ declare the compromise of a signature key used for the generation of
+ digital signatures. Thus a signature may not be guaranteed to be
+ valid until the termination of this time period.
+
+ To verify a digital signature, the following basic technique may be
+ used:
+
+
+
+Adams, et al. Standards Track [Page 20]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ A) Time-stamping information needs to be obtained soon after the
+ signature has been produced (e.g., within a few minutes or hours).
+
+ 1) The signature is presented to the Time Stamping Authority
+ (TSA). The TSA then returns a TimeStampToken (TST) upon
+ that signature.
+
+ 2) The invoker of the service MUST then verify that the
+ TimeStampToken is correct.
+
+ B) The validity of the digital signature may then be verified in the
+ following way:
+
+ 1) The time-stamp token itself MUST be verified and it MUST be
+ verified that it applies to the signature of the signer.
+
+ 2) The date/time indicated by the TSA in the TimeStampToken
+ MUST be retrieved.
+
+ 3) The certificate used by the signer MUST be identified and
+ retrieved.
+
+ 4) The date/time indicated by the TSA MUST be within the
+ validity period of the signer's certificate.
+
+ 5) The revocation information about that certificate, at the
+ date/time of the Time-Stamping operation, MUST be retrieved.
+
+ 6) Should the certificate be revoked, then the date/time of
+ revocation shall be later than the date/time indicated by
+ the TSA.
+
+ If all these conditions are successful, then the digital signature
+ shall be declared as valid.
+
+APPENDIX C: ASN.1 Module using 1988 Syntax
+
+PKIXTSP {iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-tsp(13)}
+
+DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+-- EXPORTS ALL --
+
+IMPORTS
+
+
+
+
+Adams, et al. Standards Track [Page 21]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ Extensions, AlgorithmIdentifier
+ FROM PKIX1Explicit88 {iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7)
+ id-mod(0) id-pkix1-explicit-88(1)}
+
+ GeneralName FROM PKIX1Implicit88 {iso(1)
+ identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)}
+
+ ContentInfo FROM CryptographicMessageSyntax {iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
+ smime(16) modules(0) cms(1)}
+
+ PKIFreeText FROM PKIXCMP {iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
+ id-mod-cmp(9)} ;
+
+ -- Locally defined OIDs --
+
+-- eContentType for a time-stamp token
+
+id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}
+
+-- 2.4.1
+
+TimeStampReq ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ messageImprint MessageImprint,
+ --a hash algorithm OID and the hash value of the data to be
+ --time-stamped
+ reqPolicy TSAPolicyId OPTIONAL,
+ nonce INTEGER OPTIONAL,
+ certReq BOOLEAN DEFAULT FALSE,
+ extensions [0] IMPLICIT Extensions OPTIONAL }
+
+MessageImprint ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashedMessage OCTET STRING }
+
+TSAPolicyId ::= OBJECT IDENTIFIER
+
+
+-- 2.4.2
+
+TimeStampResp ::= SEQUENCE {
+ status PKIStatusInfo,
+ timeStampToken TimeStampToken OPTIONAL }
+
+
+
+Adams, et al. Standards Track [Page 22]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+-- The status is based on the definition of status
+-- in section 3.2.3 of [RFC2510]
+
+PKIStatusInfo ::= SEQUENCE {
+ status PKIStatus,
+ statusString PKIFreeText OPTIONAL,
+ failInfo PKIFailureInfo OPTIONAL }
+
+PKIStatus ::= INTEGER {
+ granted (0),
+ -- when the PKIStatus contains the value zero a TimeStampToken, as
+ requested, is present.
+ grantedWithMods (1),
+ -- when the PKIStatus contains the value one a TimeStampToken,
+ with modifications, is present.
+ rejection (2),
+ waiting (3),
+ revocationWarning (4),
+ -- this message contains a warning that a revocation is
+ -- imminent
+ revocationNotification (5)
+ -- notification that a revocation has occurred }
+
+ -- When the TimeStampToken is not present
+ -- failInfo indicates the reason why the
+ -- time-stamp request was rejected and
+ -- may be one of the following values.
+
+PKIFailureInfo ::= BIT STRING {
+ badAlg (0),
+ -- unrecognized or unsupported Algorithm Identifier
+ badRequest (2),
+ -- transaction not permitted or supported
+ badDataFormat (5),
+ -- the data submitted has the wrong format
+ timeNotAvailable (14),
+ -- the TSA's time source is not available
+ unacceptedPolicy (15),
+ -- the requested TSA policy is not supported by the TSA.
+ unacceptedExtension (16),
+ -- the requested extension is not supported by the TSA.
+ addInfoNotAvailable (17)
+ -- the additional information requested could not be understood
+ -- or is not available
+ systemFailure (25)
+ -- the request cannot be handled due to system failure }
+
+TimeStampToken ::= ContentInfo
+
+
+
+Adams, et al. Standards Track [Page 23]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ -- contentType is id-signedData as defined in [CMS]
+ -- content is SignedData as defined in([CMS])
+ -- eContentType within SignedData is id-ct-TSTInfo
+ -- eContent within SignedData is TSTInfo
+
+TSTInfo ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ policy TSAPolicyId,
+ messageImprint MessageImprint,
+ -- MUST have the same value as the similar field in
+ -- TimeStampReq
+ serialNumber INTEGER,
+ -- Time-Stamping users MUST be ready to accommodate integers
+ -- up to 160 bits.
+ genTime GeneralizedTime,
+ accuracy Accuracy OPTIONAL,
+ ordering BOOLEAN DEFAULT FALSE,
+ nonce INTEGER OPTIONAL,
+ -- MUST be present if the similar field was present
+ -- in TimeStampReq. In that case it MUST have the same value.
+ tsa [0] GeneralName OPTIONAL,
+ extensions [1] IMPLICIT Extensions OPTIONAL }
+
+Accuracy ::= SEQUENCE {
+ seconds INTEGER OPTIONAL,
+ millis [0] INTEGER (1..999) OPTIONAL,
+ micros [1] INTEGER (1..999) OPTIONAL }
+
+END
+
+APPENDIX D: Access descriptors for Time-Stamping.
+
+ [This annex describes an extension based on the SIA extension that
+ will be defined in the "son-of-RFC2459". Since at the time of
+ publication of this document, "son-of-RFC2459" is not yet available,
+ its description is placed in an informative annex. The contents of
+ this annex will eventually become incorporated into the son-of-
+ RFC2459 document, at which time this annex will no longer be needed.
+ A future version of this document will likely omit this annex and
+ refer to son-of-RFC2459 directly.]
+
+ A TSA's certificate MAY contain a Subject Information Access (SIA)
+ extension (son of RFC2459) in order to convey the method of
+ contacting the TSA. The accessMethod field in this extension MUST
+ contain the OID id-ad-timestamping:
+
+ The following object identifier identifies the access descriptors for
+ time-Stamping.
+
+
+
+Adams, et al. Standards Track [Page 24]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+ id-ad-timeStamping OBJECT IDENTIFIER ::= {iso(1)
+ identified-organization(3) dod(6)
+ internet(1) security(5) mechanisms(5) pkix(7)
+ ad (48) timestamping (3)}
+
+ The value of the accessLocation field defines the transport (e.g.,
+ HTTP) used to access the TSA and may contain other transport
+ dependent information (e.g., a URL).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 25]
+
+RFC 3161 Time-Stamp Protocol (TSP) August 2001
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Adams, et al. Standards Track [Page 26]
+
diff --git a/tests/external-data/xml-stylesheet-2005 b/tests/external-data/xml-stylesheet-2005
new file mode 100644
index 00000000..de8e119b
--- /dev/null
+++ b/tests/external-data/xml-stylesheet-2005
@@ -0,0 +1,341 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Associating Style Sheets with XML documents</title>
+<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-REC">
+<style type="text/css">code { font-family: monospace }</style>
+</head>
+<body>
+<div class="head">
+<a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/WWW/w3c_home" alt="W3C" height="48" width="72"></a>
+<h1>Associating Style Sheets with XML documents<br>Version 1.0</h1>
+<h2>W3C Recommendation 29 June 1999</h2>
+<dl>
+<dt>This version:</dt>
+<dd>
+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629</a>
+<br>
+</dd>
+<dt>Latest version:</dt>
+<dd>
+<a href="http://www.w3.org/TR/xml-stylesheet">http://www.w3.org/TR/xml-stylesheet</a>
+<br>
+</dd>
+<dt>Previous version:</dt>
+<dd>
+<a href="http://www.w3.org/TR/1999/xml-stylesheet-19990428">http://www.w3.org/TR/1999/xml-stylesheet-19990428</a>
+<br>
+</dd>
+<dt>Editor:</dt>
+<dd>
+
+James Clark
+<a href="mailto:jjc@jclark.com">&lt;jjc@jclark.com&gt;</a>
+<br>
+</dd>
+</dl>
+<p class="copyright">
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright">
+ Copyright</a> &nbsp;&copy;&nbsp; 1999 <a href="http://www.w3.org">W3C</a>
+ (<a href="http://www.lcs.mit.edu">MIT</a>,
+ <a href="http://www.inria.fr/">INRIA</a>,
+ <a href="http://www.keio.ac.jp/">Keio</a> ), All Rights Reserved. W3C
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal Disclaimer">liability,</a><a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C Trademarks">trademark</a>,
+ <a href="http://www.w3.org/Consortium/Legal/copyright-documents.html">document use </a>and
+ <a href="http://www.w3.org/Consortium/Legal/copyright-software.html">software licensing </a>rules apply.
+ </p>
+<hr title="Separator for header">
+</div>
+<h2>
+<a name="abstract">Abstract</a>
+</h2>
+
+<p>This document allows a style sheet to be associated with an XML
+document by including one or more processing instructions with a
+target of <code>xml-stylesheet</code> in the document's prolog.</p>
+
+<h2>
+<a name="status">Status of this document</a>
+</h2>
+
+<p>This document has been reviewed by W3C Members and other interested
+parties and has been endorsed by the Director as a W3C <a href="http://www.w3.org/Consortium/Process/#RecsW3C">Recommendation</a>. It
+is a stable document and may be used as reference material or cited as
+a normative reference from other documents. W3C's role in making the
+Recommendation is to draw attention to the specification and to
+promote its widespread deployment. This enhances the functionality and
+interoperability of the Web.</p>
+
+<p>The list of known errors in this specifications is available at
+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata">http://www.w3.org/TR/1999/xml-stylesheet-19990629/errata</a>.</p>
+
+<p>Comments on this specification may be sent to &lt;<a href="mailto:www-xml-stylesheet-comments@w3.org">www-xml-stylesheet-comments@w3.org</a>&gt;. The archive of public
+comments is available at <a href="http://www.w3.org/Archives/Public/www-xml-stylesheet-comments">http://w3.org/Archives/Public/www-xml-stylesheet-comments</a>.</p>
+
+<p>A list of current W3C Recommendations and other technical documents
+can be found at <a href="http://www.w3.org/TR">http://www.w3.org/TR</a>.</p>
+
+<p>The Working Group expects additional mechanisms for linking style
+sheets to XML document to be defined in a future specification.</p>
+
+<p>The use of XML processing instructions in this specification should
+not be taken as a precedent. The W3C does not anticipate recommending
+the use of processing instructions in any future specification. The
+<a href="#rationale">Rationale</a> explains why they were used in
+this specification.</p>
+
+<p>This document was produced as part of the <a href="http://www.w3.org/XML/Activity">W3C XML Activity</a>.</p>
+
+
+<h2>
+<a name="contents">Table of contents</a>
+</h2>1 <a href="#The xml-stylesheet processing instruction">The xml-stylesheet processing instruction</a>
+<br>
+<h3>Appendices</h3>A <a href="#References">References</a>
+<br>B <a href="#rationale">Rationale</a>
+<br>
+<hr>
+
+<h2>
+<a name="The xml-stylesheet processing instruction"></a>1 The <code>xml-stylesheet</code> processing instruction</h2>
+
+<p>Style Sheets can be associated with an XML<a href="#XML">[XML10]</a>
+document by using a processing instruction whose target is
+<code>xml-stylesheet</code>. This processing instruction follows the
+behaviour of the HTML 4.0 <code>&lt;LINK
+REL="stylesheet"&gt;</code><a href="#HTML">[HTML40]</a>.</p>
+
+<p>The <code>xml-stylesheet</code> processing instruction is parsed in
+the same way as a start-tag, with the exception that entities other
+than predefined entities must not be referenced.</p>
+
+<p>The following grammar is given using the same notation as the
+grammar in the XML Recommendation<a href="#XML">[XML10]</a>. Symbols in the
+grammar that are not defined here are defined in the XML
+Recommendation.</p>
+
+<h5>xml-stylesheet processing instruction</h5>
+<table class="scrap">
+<tbody>
+<tr valign="baseline">
+<td>
+<a name="NT-StyleSheetPI"></a>[1]&nbsp;&nbsp;&nbsp;</td>
+<td>StyleSheetPI</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>'&lt;?xml-stylesheet' (<a href="http://www.w3.org/TR/REC-xml#NT-S">S</a> <a href="#NT-PseudoAtt">PseudoAtt</a>)* <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '?&gt;'</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PseudoAtt"></a>[2]&nbsp;&nbsp;&nbsp;</td>
+<td>PseudoAtt</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>
+<a href="http://www.w3.org/TR/REC-xml#NT-Name">Name</a> <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? '=' <a href="http://www.w3.org/TR/REC-xml#NT-S">S</a>? <a href="#NT-PseudoAttValue">PseudoAttValue</a>
+</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PseudoAttValue"></a>[3]&nbsp;&nbsp;&nbsp;</td>
+<td>PseudoAttValue</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>('"' ([^"&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* '"'</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+</td>
+<td>
+</td>
+<td>
+</td>
+<td>| "'" ([^'&lt;&amp;] | <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* "'")</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+</td>
+<td>
+</td>
+<td>
+</td>
+<td>- (<a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>* '?&gt;' <a href="http://www.w3.org/TR/REC-xml#NT-Char">Char</a>*)</td>
+<td>
+</td>
+</tr>
+<tr valign="baseline">
+<td>
+<a name="NT-PredefEntityRef"></a>[4]&nbsp;&nbsp;&nbsp;</td>
+<td>PredefEntityRef</td>
+<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
+<td>'&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;' | '&amp;apos;'</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>In <a href="#NT-PseudoAttValue">PseudoAttValue</a>, a <a href="http://www.w3.org/TR/REC-xml#NT-CharRef">CharRef</a> or a <a href="#NT-PredefEntityRef">PredefEntityRef</a> is interpreted in the
+same manner as in a normal XML attribute value. The actual value of
+the pseudo-attribute is the value after each reference is replaced by
+the character it references. This replacement is not performed
+automatically by an XML processor.</p>
+
+<p>The <code>xml-stylesheet</code> processing instruction is allowed
+only in the prolog of an XML document. The syntax of XML constrains
+where processing instructions are allowed in the prolog; the
+<code>xml-stylesheet</code> processing instruction is allowed anywhere
+in the prolog that meets these constraints.</p>
+
+<blockquote>
+<b>NOTE: </b>If the <code>xml-stylesheet</code> processing instruction
+occurs in the external DTD subset or in a parameter entity, it is
+possible that it may not be processed by a non-validating XML
+processor (see <a href="#XML">[XML10]</a>).</blockquote>
+
+<p>The following pseudo attributes are defined</p>
+
+<pre>href CDATA #REQUIRED
+type CDATA #REQUIRED
+title CDATA #IMPLIED
+media CDATA #IMPLIED
+charset CDATA #IMPLIED
+alternate (yes|no) "no"</pre>
+
+<p>The semantics of the pseudo-attributes are exactly as with
+<code>&lt;LINK REL="stylesheet"&gt;</code> in HTML 4.0, with the
+exception of the <code>alternate</code> pseudo-attribute. If
+<code>alternate="yes"</code> is specified, then the processing
+instruction has the semantics of <code>&lt;LINK REL="alternate
+stylesheet"&gt;</code> instead of <code>&lt;LINK
+REL="stylesheet"&gt;</code>.</p>
+
+<blockquote>
+<b>NOTE: </b>Since the value of the <code>href</code> attribute is a URI
+reference, it may be a relative URI and it may contain a fragment
+identifier. In particular the URI reference may contain only a
+fragment identifier. Such a URI reference is a reference to a part of
+the document containing the <code>xml-stylesheet</code> processing
+instruction (see <a href="#RFC2396">[RFC2396]</a>). The consequence is that the
+<code>xml-stylesheet</code> processing instruction allows style sheets
+to be embedded in the same document as the <code>xml-stylesheet</code>
+processing instruction.</blockquote>
+
+<p>In some cases, style sheets may be linked with an XML document by
+means external to the document. For example, earlier versions of HTTP
+<a href="#RFC2068">[RFC2068]</a> (section 19.6.2.4) allowed style sheets to be
+associated with XML documents by means of the <code>Link</code>
+header. Any links to style sheets that are specified externally to the
+document are considered to occur before the links specified by the
+<code>xml-stylesheet</code> processing instructions. This is the same
+as in HTML 4.0 (see <a href="http://www.w3.org/TR/REC-html40/present/styles.html#h-14.6">section
+14.6</a>).</p>
+
+<p>Here are some examples from HTML 4.0 with the corresponding
+processing instruction:</p>
+
+<pre>&lt;LINK href="mystyle.css" rel="style sheet" type="text/css"&gt;
+&lt;?xml-stylesheet href="mystyle.css" type="text/css"?&gt;
+
+&lt;LINK href="mystyle.css" title="Compact" rel="stylesheet"
+type="text/css"&gt;
+&lt;?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?&gt;
+
+&lt;LINK href="mystyle.css" title="Medium" rel="alternate stylesheet"
+type="text/css"&gt;
+&lt;?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium"
+type="text/css"?&gt;</pre>
+
+<p>Multiple <code>xml-stylesheet</code> processing instructions are
+also allowed with exactly the same semantics as with <code>LINK
+REL="stylesheet"</code>. For example,</p>
+
+<pre>&lt;LINK rel="alternate stylesheet" title="compact" href="small-base.css"
+type="text/css"&gt;
+&lt;LINK rel="alternate stylesheet" title="compact" href="small-extras.css"
+type="text/css"&gt;
+&lt;LINK rel="alternate stylesheet" title="big print" href="bigprint.css"
+type="text/css"&gt;
+&lt;LINK rel="stylesheet" href="common.css" type="text/css"&gt;</pre>
+
+<p>would be equivalent to:</p>
+
+<pre>&lt;?xml-stylesheet alternate="yes" title="compact" href="small-base.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet alternate="yes" title="compact" href="small-extras.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet alternate="yes" title="big print" href="bigprint.css"
+type="text/css"?&gt;
+&lt;?xml-stylesheet href="common.css" type="text/css"?&gt;</pre>
+
+
+
+<hr title="Separator from footer">
+
+<h2>
+<a name="References"></a>A References</h2>
+
+<dl>
+
+<dt>
+<a name="HTML">HTML40</a>
+</dt>
+<dd>World Wide Web
+Consortium. <i>HTML 4.0 Specification.</i> W3C Recommendation. See
+<a href="http://www.w3.org/TR/REC-html40">http://www.w3.org/TR/REC-html40</a>
+</dd>
+
+<dt>
+<a name="RFC2068">RFC2068</a>
+</dt>
+<dd>R. Fielding, J. Gettys, J. Mogul,
+H. Frystyk Nielsen, and T. Berners-Lee. <i>Hypertext Transfer
+Protocol -- HTTP/1.1.</i>. IETF RFC 2068. See <a href="http://www.ietf.org/rfc/rfc2068.txt">http://www.ietf.org/rfc/rfc2068.txt</a>.</dd>
+
+<dt>
+<a name="RFC2396">RFC2396</a>
+</dt>
+<dd>T. Berners-Lee, R. Fielding, and
+L. Masinter. <i>Uniform Resource Identifiers (URI): Generic
+Syntax</i>. IETF RFC 2396. See <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>.</dd>
+
+<dt>
+<a name="XML">XML10</a>
+</dt>
+<dd>World Wide Web Consortium. <i>Extensible
+Markup Language (XML) 1.0.</i> W3C Recommendation. See <a href="http://www.w3.org/TR/1998/REC-xml-19980210">http://www.w3.org/TR/1998/REC-xml-19980210</a>
+</dd>
+
+</dl>
+
+
+
+
+<h2>
+<a name="rationale"></a>B Rationale</h2>
+
+<p>There was an urgent requirement for a specification for style sheet
+linking that could be completed in time for the next release from
+major browser vendors. Only by choosing a simple mechanism closely
+based on a proven existing mechanism could the specification be
+completed in time to meet this requirement.</p>
+
+<p>Use of a processing instruction avoids polluting the main document
+structure with application specific processing information.</p>
+
+<p>The mechanism chosen for this version of the specification is not a
+constraint on the additional mechanisms planned for future versions.
+There is no expectation that these will use processing instructions;
+indeed they may not include the linking information in the source
+document.</p>
+
+
+
+
+</body>
+</html>
diff --git a/tests/external-data/xml-stylesheet-2005.b64 b/tests/external-data/xml-stylesheet-2005.b64
new file mode 100644
index 00000000..eb9a11ab
--- /dev/null
+++ b/tests/external-data/xml-stylesheet-2005.b64
@@ -0,0 +1,274 @@
+PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFu
+c2l0aW9uYWwvL0VOIj4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+QXNzb2NpYXRpbmcg
+U3R5bGUgU2hlZXRzIHdpdGggWE1MIGRvY3VtZW50czwvdGl0bGU+CjxsaW5rIHJl
+bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHA6Ly93d3cu
+dzMub3JnL1N0eWxlU2hlZXRzL1RSL1czQy1SRUMiPgo8c3R5bGUgdHlwZT0idGV4
+dC9jc3MiPmNvZGUgeyBmb250LWZhbWlseTogbW9ub3NwYWNlIH08L3N0eWxlPgo8
+L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNzPSJoZWFkIj4KPGEgaHJlZj0iaHR0cDov
+L3d3dy53My5vcmcvIj48aW1nIHNyYz0iaHR0cDovL3d3dy53My5vcmcvSWNvbnMv
+V1dXL3czY19ob21lIiBhbHQ9IlczQyIgaGVpZ2h0PSI0OCIgd2lkdGg9IjcyIj48
+L2E+CjxoMT5Bc3NvY2lhdGluZyBTdHlsZSBTaGVldHMgd2l0aCBYTUwgZG9jdW1l
+bnRzPGJyPlZlcnNpb24gMS4wPC9oMT4KPGgyPlczQyBSZWNvbW1lbmRhdGlvbiAy
+OSBKdW5lIDE5OTk8L2gyPgo8ZGw+CjxkdD5UaGlzIHZlcnNpb246PC9kdD4KPGRk
+Pgo8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzA2L1JFQy14bWwtc3R5
+bGVzaGVldC0xOTk5MDYyOSI+aHR0cDovL3d3dy53My5vcmcvMTk5OS8wNi9SRUMt
+eG1sLXN0eWxlc2hlZXQtMTk5OTA2Mjk8L2E+Cjxicj4KPC9kZD4KPGR0PkxhdGVz
+dCB2ZXJzaW9uOjwvZHQ+CjxkZD4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
+VFIveG1sLXN0eWxlc2hlZXQiPmh0dHA6Ly93d3cudzMub3JnL1RSL3htbC1zdHls
+ZXNoZWV0PC9hPgo8YnI+CjwvZGQ+CjxkdD5QcmV2aW91cyB2ZXJzaW9uOjwvZHQ+
+CjxkZD4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwtc3R5
+bGVzaGVldC0xOTk5MDQyOCI+aHR0cDovL3d3dy53My5vcmcvVFIvMTk5OS94bWwt
+c3R5bGVzaGVldC0xOTk5MDQyODwvYT4KPGJyPgo8L2RkPgo8ZHQ+RWRpdG9yOjwv
+ZHQ+CjxkZD4KCkphbWVzIENsYXJrCjxhIGhyZWY9Im1haWx0bzpqamNAamNsYXJr
+LmNvbSI+Jmx0O2pqY0BqY2xhcmsuY29tJmd0OzwvYT4KPGJyPgo8L2RkPgo8L2Rs
+Pgo8cCBjbGFzcz0iY29weXJpZ2h0Ij4KPGEgaHJlZj0iaHR0cDovL3d3dy53My5v
+cmcvQ29uc29ydGl1bS9MZWdhbC9pcHItbm90aWNlLmh0bWwjQ29weXJpZ2h0Ij4K
+CQlDb3B5cmlnaHQ8L2E+ICZuYnNwOyZjb3B5OyZuYnNwOyAxOTk5IDxhIGhyZWY9
+Imh0dHA6Ly93d3cudzMub3JnIj5XM0M8L2E+CgkJKDxhIGhyZWY9Imh0dHA6Ly93
+d3cubGNzLm1pdC5lZHUiPk1JVDwvYT4sCgkJPGEgaHJlZj0iaHR0cDovL3d3dy5p
+bnJpYS5mci8iPklOUklBPC9hPiwKCQk8YSBocmVmPSJodHRwOi8vd3d3LmtlaW8u
+YWMuanAvIj5LZWlvPC9hPiApLCBBbGwgUmlnaHRzIFJlc2VydmVkLiBXM0MKCQk8
+YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsL2lwci1u
+b3RpY2UuaHRtbCNMZWdhbCBEaXNjbGFpbWVyIj5saWFiaWxpdHksPC9hPjxhIGhy
+ZWY9Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvaXByLW5vdGlj
+ZS5odG1sI1czQyBUcmFkZW1hcmtzIj50cmFkZW1hcms8L2E+LAoJCTxhIGhyZWY9
+Imh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LWRv
+Y3VtZW50cy5odG1sIj5kb2N1bWVudCB1c2UgPC9hPmFuZAoJCTxhIGhyZWY9Imh0
+dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvY29weXJpZ2h0LXNvZnR3
+YXJlLmh0bWwiPnNvZnR3YXJlIGxpY2Vuc2luZyA8L2E+cnVsZXMgYXBwbHkuCgk8
+L3A+CjxociB0aXRsZT0iU2VwYXJhdG9yIGZvciBoZWFkZXIiPgo8L2Rpdj4KPGgy
+Pgo8YSBuYW1lPSJhYnN0cmFjdCI+QWJzdHJhY3Q8L2E+CjwvaDI+Cgo8cD5UaGlz
+IGRvY3VtZW50IGFsbG93cyBhIHN0eWxlIHNoZWV0IHRvIGJlIGFzc29jaWF0ZWQg
+d2l0aCBhbiBYTUwKZG9jdW1lbnQgYnkgaW5jbHVkaW5nIG9uZSBvciBtb3JlIHBy
+b2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIHdpdGggYQp0YXJnZXQgb2YgPGNvZGU+eG1s
+LXN0eWxlc2hlZXQ8L2NvZGU+IGluIHRoZSBkb2N1bWVudCdzIHByb2xvZy48L3A+
+Cgo8aDI+CjxhIG5hbWU9InN0YXR1cyI+U3RhdHVzIG9mIHRoaXMgZG9jdW1lbnQ8
+L2E+CjwvaDI+Cgo8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIHJldmlld2VkIGJ5
+IFczQyBNZW1iZXJzIGFuZCBvdGhlciBpbnRlcmVzdGVkCnBhcnRpZXMgYW5kIGhh
+cyBiZWVuIGVuZG9yc2VkIGJ5IHRoZSBEaXJlY3RvciBhcyBhIFczQyA8YSBocmVm
+PSJodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL1Byb2Nlc3MvI1JlY3NXM0Mi
+PlJlY29tbWVuZGF0aW9uPC9hPi4gSXQKaXMgYSBzdGFibGUgZG9jdW1lbnQgYW5k
+IG1heSBiZSB1c2VkIGFzIHJlZmVyZW5jZSBtYXRlcmlhbCBvciBjaXRlZCBhcwph
+IG5vcm1hdGl2ZSByZWZlcmVuY2UgZnJvbSBvdGhlciBkb2N1bWVudHMuIFczQydz
+IHJvbGUgaW4gbWFraW5nIHRoZQpSZWNvbW1lbmRhdGlvbiBpcyB0byBkcmF3IGF0
+dGVudGlvbiB0byB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgdG8KcHJvbW90ZSBpdHMg
+d2lkZXNwcmVhZCBkZXBsb3ltZW50LiBUaGlzIGVuaGFuY2VzIHRoZSBmdW5jdGlv
+bmFsaXR5IGFuZAppbnRlcm9wZXJhYmlsaXR5IG9mIHRoZSBXZWIuPC9wPgoKPHA+
+VGhlIGxpc3Qgb2Yga25vd24gZXJyb3JzIGluIHRoaXMgc3BlY2lmaWNhdGlvbnMg
+aXMgYXZhaWxhYmxlIGF0CjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
+MDYvUkVDLXhtbC1zdHlsZXNoZWV0LTE5OTkwNjI5L2VycmF0YSI+aHR0cDovL3d3
+dy53My5vcmcvVFIvMTk5OS94bWwtc3R5bGVzaGVldC0xOTk5MDYyOS9lcnJhdGE8
+L2E+LjwvcD4KCjxwPkNvbW1lbnRzIG9uIHRoaXMgc3BlY2lmaWNhdGlvbiBtYXkg
+YmUgc2VudCB0byAmbHQ7PGEgaHJlZj0ibWFpbHRvOnd3dy14bWwtc3R5bGVzaGVl
+dC1jb21tZW50c0B3My5vcmciPnd3dy14bWwtc3R5bGVzaGVldC1jb21tZW50c0B3
+My5vcmc8L2E+Jmd0Oy4gVGhlIGFyY2hpdmUgb2YgcHVibGljCmNvbW1lbnRzIGlz
+IGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9BcmNoaXZl
+cy9QdWJsaWMvd3d3LXhtbC1zdHlsZXNoZWV0LWNvbW1lbnRzIj5odHRwOi8vdzMu
+b3JnL0FyY2hpdmVzL1B1YmxpYy93d3cteG1sLXN0eWxlc2hlZXQtY29tbWVudHM8
+L2E+LjwvcD4KCjxwPkEgbGlzdCBvZiBjdXJyZW50IFczQyBSZWNvbW1lbmRhdGlv
+bnMgYW5kIG90aGVyIHRlY2huaWNhbCBkb2N1bWVudHMKY2FuIGJlIGZvdW5kIGF0
+IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSIj5odHRwOi8vd3d3LnczLm9y
+Zy9UUjwvYT4uPC9wPgoKPHA+VGhlIFdvcmtpbmcgR3JvdXAgZXhwZWN0cyBhZGRp
+dGlvbmFsIG1lY2hhbmlzbXMgZm9yIGxpbmtpbmcgc3R5bGUKc2hlZXRzIHRvIFhN
+TCBkb2N1bWVudCB0byBiZSBkZWZpbmVkIGluIGEgZnV0dXJlIHNwZWNpZmljYXRp
+b24uPC9wPgoKPHA+VGhlIHVzZSBvZiBYTUwgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
+bnMgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIHNob3VsZApub3QgYmUgdGFrZW4gYXMg
+YSBwcmVjZWRlbnQuICBUaGUgVzNDIGRvZXMgbm90IGFudGljaXBhdGUgcmVjb21t
+ZW5kaW5nCnRoZSB1c2Ugb2YgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgaW4gYW55
+IGZ1dHVyZSBzcGVjaWZpY2F0aW9uLiAgVGhlCjxhIGhyZWY9IiNyYXRpb25hbGUi
+PlJhdGlvbmFsZTwvYT4gZXhwbGFpbnMgd2h5IHRoZXkgd2VyZSB1c2VkIGluCnRo
+aXMgc3BlY2lmaWNhdGlvbi48L3A+Cgo8cD5UaGlzIGRvY3VtZW50IHdhcyBwcm9k
+dWNlZCBhcyBwYXJ0IG9mIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9Y
+TUwvQWN0aXZpdHkiPlczQyBYTUwgQWN0aXZpdHk8L2E+LjwvcD4KCgo8aDI+Cjxh
+IG5hbWU9ImNvbnRlbnRzIj5UYWJsZSBvZiBjb250ZW50czwvYT4KPC9oMj4xIDxh
+IGhyZWY9IiNUaGUgeG1sLXN0eWxlc2hlZXQgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
+biI+VGhlIHhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2E+
+Cjxicj4KPGgzPkFwcGVuZGljZXM8L2gzPkEgPGEgaHJlZj0iI1JlZmVyZW5jZXMi
+PlJlZmVyZW5jZXM8L2E+Cjxicj5CIDxhIGhyZWY9IiNyYXRpb25hbGUiPlJhdGlv
+bmFsZTwvYT4KPGJyPgo8aHI+Cgo8aDI+CjxhIG5hbWU9IlRoZSB4bWwtc3R5bGVz
+aGVldCBwcm9jZXNzaW5nIGluc3RydWN0aW9uIj48L2E+MSBUaGUgPGNvZGU+eG1s
+LXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2gyPgoK
+PHA+U3R5bGUgU2hlZXRzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gWE1MPGEg
+aHJlZj0iI1hNTCI+W1hNTDEwXTwvYT4KZG9jdW1lbnQgYnkgdXNpbmcgYSBwcm9j
+ZXNzaW5nIGluc3RydWN0aW9uIHdob3NlIHRhcmdldCBpcwo8Y29kZT54bWwtc3R5
+bGVzaGVldDwvY29kZT4uICBUaGlzIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gZm9s
+bG93cyB0aGUKYmVoYXZpb3VyIG9mIHRoZSBIVE1MIDQuMCA8Y29kZT4mbHQ7TElO
+SwpSRUw9InN0eWxlc2hlZXQiJmd0OzwvY29kZT48YSBocmVmPSIjSFRNTCI+W0hU
+TUw0MF08L2E+LjwvcD4KCjxwPlRoZSA8Y29kZT54bWwtc3R5bGVzaGVldDwvY29k
+ZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBpcyBwYXJzZWQgaW4KdGhlIHNhbWUg
+d2F5IGFzIGEgc3RhcnQtdGFnLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBlbnRp
+dGllcyBvdGhlcgp0aGFuIHByZWRlZmluZWQgZW50aXRpZXMgbXVzdCBub3QgYmUg
+cmVmZXJlbmNlZC48L3A+Cgo8cD5UaGUgZm9sbG93aW5nIGdyYW1tYXIgaXMgZ2l2
+ZW4gdXNpbmcgdGhlIHNhbWUgbm90YXRpb24gYXMgdGhlCmdyYW1tYXIgaW4gdGhl
+IFhNTCBSZWNvbW1lbmRhdGlvbjxhIGhyZWY9IiNYTUwiPltYTUwxMF08L2E+LiAg
+U3ltYm9scyBpbiB0aGUKZ3JhbW1hciB0aGF0IGFyZSBub3QgZGVmaW5lZCBoZXJl
+IGFyZSBkZWZpbmVkIGluIHRoZSBYTUwKUmVjb21tZW5kYXRpb24uPC9wPgoKPGg1
+PnhtbC1zdHlsZXNoZWV0IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb248L2g1Pgo8dGFi
+bGUgY2xhc3M9InNjcmFwIj4KPHRib2R5Pgo8dHIgdmFsaWduPSJiYXNlbGluZSI+
+Cjx0ZD4KPGEgbmFtZT0iTlQtU3R5bGVTaGVldFBJIj48L2E+WzFdJm5ic3A7Jm5i
+c3A7Jm5ic3A7PC90ZD4KPHRkPlN0eWxlU2hlZXRQSTwvdGQ+Cjx0ZD4mbmJzcDsm
+bmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPgo8dGQ+JyZsdDs/
+eG1sLXN0eWxlc2hlZXQnICg8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9S
+RUMteG1sI05ULVMiPlM8L2E+IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHQiPlBzZXVk
+b0F0dDwvYT4pKiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1s
+I05ULVMiPlM8L2E+PyAnPyZndDsnPC90ZD4KPHRkPgo8L3RkPgo8L3RyPgo8dHIg
+dmFsaWduPSJiYXNlbGluZSI+Cjx0ZD4KPGEgbmFtZT0iTlQtUHNldWRvQXR0Ij48
+L2E+WzJdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KPHRkPlBzZXVkb0F0dDwvdGQ+
+Cjx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs6Oj0mbmJzcDsmbmJzcDsmbmJzcDs8L3Rk
+Pgo8dGQ+CjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQt
+TmFtZSI+TmFtZTwvYT4gPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
+LXhtbCNOVC1TIj5TPC9hPj8gJz0nIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
+L1RSL1JFQy14bWwjTlQtUyI+UzwvYT4/IDxhIGhyZWY9IiNOVC1Qc2V1ZG9BdHRW
+YWx1ZSI+UHNldWRvQXR0VmFsdWU8L2E+CjwvdGQ+Cjx0ZD4KPC90ZD4KPC90cj4K
+PHRyIHZhbGlnbj0iYmFzZWxpbmUiPgo8dGQ+CjxhIG5hbWU9Ik5ULVBzZXVkb0F0
+dFZhbHVlIj48L2E+WzNdJm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD4KPHRkPlBzZXVk
+b0F0dFZhbHVlPC90ZD4KPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzo6PSZuYnNwOyZu
+YnNwOyZuYnNwOzwvdGQ+Cjx0ZD4oJyInIChbXiImbHQ7JmFtcDtdIHwgPGEgaHJl
+Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFy
+UmVmPC9hPiB8IDxhIGhyZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVu
+dGl0eVJlZjwvYT4pKiAnIic8L3RkPgo8dGQ+CjwvdGQ+CjwvdHI+Cjx0ciB2YWxp
+Z249ImJhc2VsaW5lIj4KPHRkPgo8L3RkPgo8dGQ+CjwvdGQ+Cjx0ZD4KPC90ZD4K
+PHRkPnwgIiciIChbXicmbHQ7JmFtcDtdIHwgPGEgaHJlZj0iaHR0cDovL3d3dy53
+My5vcmcvVFIvUkVDLXhtbCNOVC1DaGFyUmVmIj5DaGFyUmVmPC9hPiB8IDxhIGhy
+ZWY9IiNOVC1QcmVkZWZFbnRpdHlSZWYiPlByZWRlZkVudGl0eVJlZjwvYT4pKiAi
+JyIpPC90ZD4KPHRkPgo8L3RkPgo8L3RyPgo8dHIgdmFsaWduPSJiYXNlbGluZSI+
+Cjx0ZD4KPC90ZD4KPHRkPgo8L3RkPgo8dGQ+CjwvdGQ+Cjx0ZD4tICg8YSBocmVm
+PSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXIiPkNoYXI8L2E+
+KiAnPyZndDsnIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwj
+TlQtQ2hhciI+Q2hhcjwvYT4qKTwvdGQ+Cjx0ZD4KPC90ZD4KPC90cj4KPHRyIHZh
+bGlnbj0iYmFzZWxpbmUiPgo8dGQ+CjxhIG5hbWU9Ik5ULVByZWRlZkVudGl0eVJl
+ZiI+PC9hPls0XSZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+Cjx0ZD5QcmVkZWZFbnRp
+dHlSZWY8L3RkPgo8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7Ojo9Jm5ic3A7Jm5ic3A7
+Jm5ic3A7PC90ZD4KPHRkPicmYW1wO2FtcDsnIHwgJyZhbXA7bHQ7JyB8ICcmYW1w
+O2d0OycgfCAnJmFtcDtxdW90OycgfCAnJmFtcDthcG9zOyc8L3RkPgo8dGQ+Cjwv
+dGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+Cgo8cD5JbiA8YSBocmVmPSIjTlQt
+UHNldWRvQXR0VmFsdWUiPlBzZXVkb0F0dFZhbHVlPC9hPiwgYSA8YSBocmVmPSJo
+dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sI05ULUNoYXJSZWYiPkNoYXJSZWY8
+L2E+IG9yIGEgPGEgaHJlZj0iI05ULVByZWRlZkVudGl0eVJlZiI+UHJlZGVmRW50
+aXR5UmVmPC9hPiBpcyBpbnRlcnByZXRlZCBpbiB0aGUKc2FtZSBtYW5uZXIgYXMg
+aW4gYSBub3JtYWwgWE1MIGF0dHJpYnV0ZSB2YWx1ZS4gIFRoZSBhY3R1YWwgdmFs
+dWUgb2YKdGhlIHBzZXVkby1hdHRyaWJ1dGUgaXMgdGhlIHZhbHVlIGFmdGVyIGVh
+Y2ggcmVmZXJlbmNlIGlzIHJlcGxhY2VkIGJ5CnRoZSBjaGFyYWN0ZXIgaXQgcmVm
+ZXJlbmNlcy4gIFRoaXMgcmVwbGFjZW1lbnQgaXMgbm90IHBlcmZvcm1lZAphdXRv
+bWF0aWNhbGx5IGJ5IGFuIFhNTCBwcm9jZXNzb3IuPC9wPgoKPHA+VGhlIDxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGlz
+IGFsbG93ZWQKb25seSBpbiB0aGUgcHJvbG9nIG9mIGFuIFhNTCBkb2N1bWVudC4g
+VGhlIHN5bnRheCBvZiBYTUwgY29uc3RyYWlucwp3aGVyZSBwcm9jZXNzaW5nIGlu
+c3RydWN0aW9ucyBhcmUgYWxsb3dlZCBpbiB0aGUgcHJvbG9nOyB0aGUKPGNvZGU+
+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gaXMg
+YWxsb3dlZCBhbnl3aGVyZQppbiB0aGUgcHJvbG9nIHRoYXQgbWVldHMgdGhlc2Ug
+Y29uc3RyYWludHMuPC9wPgoKPGJsb2NrcXVvdGU+CjxiPk5PVEU6IDwvYj5JZiB0
+aGUgPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHByb2Nlc3NpbmcgaW5zdHJ1
+Y3Rpb24Kb2NjdXJzIGluIHRoZSBleHRlcm5hbCBEVEQgc3Vic2V0IG9yIGluIGEg
+cGFyYW1ldGVyIGVudGl0eSwgaXQgaXMKcG9zc2libGUgdGhhdCBpdCBtYXkgbm90
+IGJlIHByb2Nlc3NlZCBieSBhIG5vbi12YWxpZGF0aW5nIFhNTApwcm9jZXNzb3Ig
+KHNlZSA8YSBocmVmPSIjWE1MIj5bWE1MMTBdPC9hPikuPC9ibG9ja3F1b3RlPgoK
+PHA+VGhlIGZvbGxvd2luZyBwc2V1ZG8gYXR0cmlidXRlcyBhcmUgZGVmaW5lZDwv
+cD4KCjxwcmU+aHJlZiBDREFUQSAjUkVRVUlSRUQKdHlwZSBDREFUQSAjUkVRVUlS
+RUQKdGl0bGUgQ0RBVEEgI0lNUExJRUQKbWVkaWEgQ0RBVEEgI0lNUExJRUQKY2hh
+cnNldCBDREFUQSAjSU1QTElFRAphbHRlcm5hdGUgKHllc3xubykgIm5vIjwvcHJl
+PgoKPHA+VGhlIHNlbWFudGljcyBvZiB0aGUgcHNldWRvLWF0dHJpYnV0ZXMgYXJl
+IGV4YWN0bHkgYXMgd2l0aAo8Y29kZT4mbHQ7TElOSyBSRUw9InN0eWxlc2hlZXQi
+Jmd0OzwvY29kZT4gaW4gSFRNTCA0LjAsIHdpdGggdGhlCmV4Y2VwdGlvbiBvZiB0
+aGUgPGNvZGU+YWx0ZXJuYXRlPC9jb2RlPiBwc2V1ZG8tYXR0cmlidXRlLiAgSWYK
+PGNvZGU+YWx0ZXJuYXRlPSJ5ZXMiPC9jb2RlPiBpcyBzcGVjaWZpZWQsIHRoZW4g
+dGhlIHByb2Nlc3NpbmcKaW5zdHJ1Y3Rpb24gaGFzIHRoZSBzZW1hbnRpY3Mgb2Yg
+PGNvZGU+Jmx0O0xJTksgUkVMPSJhbHRlcm5hdGUKc3R5bGVzaGVldCImZ3Q7PC9j
+b2RlPiBpbnN0ZWFkIG9mIDxjb2RlPiZsdDtMSU5LClJFTD0ic3R5bGVzaGVldCIm
+Z3Q7PC9jb2RlPi48L3A+Cgo8YmxvY2txdW90ZT4KPGI+Tk9URTogPC9iPlNpbmNl
+IHRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+aHJlZjwvY29kZT4gYXR0cmlidXRlIGlz
+IGEgVVJJCnJlZmVyZW5jZSwgaXQgbWF5IGJlIGEgcmVsYXRpdmUgVVJJIGFuZCBp
+dCBtYXkgY29udGFpbiBhIGZyYWdtZW50CmlkZW50aWZpZXIuIEluIHBhcnRpY3Vs
+YXIgdGhlIFVSSSByZWZlcmVuY2UgbWF5IGNvbnRhaW4gb25seSBhCmZyYWdtZW50
+IGlkZW50aWZpZXIuICBTdWNoIGEgVVJJIHJlZmVyZW5jZSBpcyBhIHJlZmVyZW5j
+ZSB0byBhIHBhcnQgb2YKdGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIDxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nCmluc3RydWN0aW9uIChz
+ZWUgPGEgaHJlZj0iI1JGQzIzOTYiPltSRkMyMzk2XTwvYT4pLiBUaGUgY29uc2Vx
+dWVuY2UgaXMgdGhhdCB0aGUKPGNvZGU+eG1sLXN0eWxlc2hlZXQ8L2NvZGU+IHBy
+b2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gYWxsb3dzIHN0eWxlIHNoZWV0cwp0byBiZSBl
+bWJlZGRlZCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgPGNvZGU+eG1sLXN0
+eWxlc2hlZXQ8L2NvZGU+CnByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uPC9ibG9ja3F1
+b3RlPgoKPHA+SW4gc29tZSBjYXNlcywgc3R5bGUgc2hlZXRzIG1heSBiZSBsaW5r
+ZWQgd2l0aCBhbiBYTUwgZG9jdW1lbnQgYnkKbWVhbnMgZXh0ZXJuYWwgdG8gdGhl
+IGRvY3VtZW50LiBGb3IgZXhhbXBsZSwgZWFybGllciB2ZXJzaW9ucyBvZiBIVFRQ
+CjxhIGhyZWY9IiNSRkMyMDY4Ij5bUkZDMjA2OF08L2E+IChzZWN0aW9uIDE5LjYu
+Mi40KSBhbGxvd2VkIHN0eWxlIHNoZWV0cyB0byBiZQphc3NvY2lhdGVkIHdpdGgg
+WE1MIGRvY3VtZW50cyBieSBtZWFucyBvZiB0aGUgPGNvZGU+TGluazwvY29kZT4K
+aGVhZGVyLiAgQW55IGxpbmtzIHRvIHN0eWxlIHNoZWV0cyB0aGF0IGFyZSBzcGVj
+aWZpZWQgZXh0ZXJuYWxseSB0byB0aGUKZG9jdW1lbnQgYXJlIGNvbnNpZGVyZWQg
+dG8gb2NjdXIgYmVmb3JlIHRoZSBsaW5rcyBzcGVjaWZpZWQgYnkgdGhlCjxjb2Rl
+PnhtbC1zdHlsZXNoZWV0PC9jb2RlPiBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy4g
+IFRoaXMgaXMgdGhlIHNhbWUKYXMgaW4gSFRNTCA0LjAgKHNlZSA8YSBocmVmPSJo
+dHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3ByZXNlbnQvc3R5bGVzLmh0
+bWwjaC0xNC42Ij5zZWN0aW9uCjE0LjY8L2E+KS48L3A+Cgo8cD5IZXJlIGFyZSBz
+b21lIGV4YW1wbGVzIGZyb20gSFRNTCA0LjAgd2l0aCB0aGUgY29ycmVzcG9uZGlu
+Zwpwcm9jZXNzaW5nIGluc3RydWN0aW9uOjwvcD4KCjxwcmU+Jmx0O0xJTksgaHJl
+Zj0ibXlzdHlsZS5jc3MiIHJlbD0ic3R5bGUgc2hlZXQiIHR5cGU9InRleHQvY3Nz
+IiZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBocmVmPSJteXN0eWxlLmNzcyIgdHlw
+ZT0idGV4dC9jc3MiPyZndDsKCiZsdDtMSU5LIGhyZWY9Im15c3R5bGUuY3NzIiB0
+aXRsZT0iQ29tcGFjdCIgcmVsPSJzdHlsZXNoZWV0Igp0eXBlPSJ0ZXh0L2NzcyIm
+Z3Q7CiZsdDs/eG1sLXN0eWxlc2hlZXQgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxl
+PSJDb21wYWN0IiB0eXBlPSJ0ZXh0L2NzcyI/Jmd0OwoKJmx0O0xJTksgaHJlZj0i
+bXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0iIHJlbD0iYWx0ZXJuYXRlIHN0eWxl
+c2hlZXQiCnR5cGU9InRleHQvY3NzIiZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBh
+bHRlcm5hdGU9InllcyIgaHJlZj0ibXlzdHlsZS5jc3MiIHRpdGxlPSJNZWRpdW0i
+CnR5cGU9InRleHQvY3NzIj8mZ3Q7PC9wcmU+Cgo8cD5NdWx0aXBsZSA8Y29kZT54
+bWwtc3R5bGVzaGVldDwvY29kZT4gcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYXJl
+CmFsc28gYWxsb3dlZCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgc2VtYW50aWNzIGFz
+IHdpdGggPGNvZGU+TElOSwpSRUw9InN0eWxlc2hlZXQiPC9jb2RlPi4gRm9yIGV4
+YW1wbGUsPC9wPgoKPHByZT4mbHQ7TElOSyByZWw9ImFsdGVybmF0ZSBzdHlsZXNo
+ZWV0IiB0aXRsZT0iY29tcGFjdCIgaHJlZj0ic21hbGwtYmFzZS5jc3MiCnR5cGU9
+InRleHQvY3NzIiZndDsKJmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVl
+dCIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5jc3MiCnR5cGU9
+InRleHQvY3NzIiZndDsKJmx0O0xJTksgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVl
+dCIgdGl0bGU9ImJpZyBwcmludCIgaHJlZj0iYmlncHJpbnQuY3NzIgp0eXBlPSJ0
+ZXh0L2NzcyImZ3Q7CiZsdDtMSU5LIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY29t
+bW9uLmNzcyIgdHlwZT0idGV4dC9jc3MiJmd0OzwvcHJlPgoKPHA+d291bGQgYmUg
+ZXF1aXZhbGVudCB0bzo8L3A+Cgo8cHJlPiZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0
+ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJjb21wYWN0IiBocmVmPSJzbWFsbC1iYXNlLmNz
+cyIKdHlwZT0idGV4dC9jc3MiPyZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBhbHRl
+cm5hdGU9InllcyIgdGl0bGU9ImNvbXBhY3QiIGhyZWY9InNtYWxsLWV4dHJhcy5j
+c3MiCnR5cGU9InRleHQvY3NzIj8mZ3Q7CiZsdDs/eG1sLXN0eWxlc2hlZXQgYWx0
+ZXJuYXRlPSJ5ZXMiIHRpdGxlPSJiaWcgcHJpbnQiIGhyZWY9ImJpZ3ByaW50LmNz
+cyIKdHlwZT0idGV4dC9jc3MiPyZndDsKJmx0Oz94bWwtc3R5bGVzaGVldCBocmVm
+PSJjb21tb24uY3NzIiB0eXBlPSJ0ZXh0L2NzcyI/Jmd0OzwvcHJlPgoKCgo8aHIg
+dGl0bGU9IlNlcGFyYXRvciBmcm9tIGZvb3RlciI+Cgo8aDI+CjxhIG5hbWU9IlJl
+ZmVyZW5jZXMiPjwvYT5BIFJlZmVyZW5jZXM8L2gyPgoKPGRsPgoKPGR0Pgo8YSBu
+YW1lPSJIVE1MIj5IVE1MNDA8L2E+CjwvZHQ+CjxkZD5Xb3JsZCBXaWRlIFdlYgpD
+b25zb3J0aXVtLiA8aT5IVE1MIDQuMCBTcGVjaWZpY2F0aW9uLjwvaT4gVzNDIFJl
+Y29tbWVuZGF0aW9uLiBTZWUKPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
+UkVDLWh0bWw0MCI+aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MDwvYT4K
+PC9kZD4KCjxkdD4KPGEgbmFtZT0iUkZDMjA2OCI+UkZDMjA2ODwvYT4KPC9kdD4K
+PGRkPlIuIEZpZWxkaW5nLCBKLiBHZXR0eXMsIEouIE1vZ3VsLApILiBGcnlzdHlr
+IE5pZWxzZW4sIGFuZCBULiBCZXJuZXJzLUxlZS4gIDxpPkh5cGVydGV4dCBUcmFu
+c2ZlcgpQcm90b2NvbCAtLSBIVFRQLzEuMS48L2k+LiBJRVRGIFJGQyAyMDY4LiBT
+ZWUgPGEgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjA2OC50eHQi
+Pmh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIwNjgudHh0PC9hPi48L2RkPgoK
+PGR0Pgo8YSBuYW1lPSJSRkMyMzk2Ij5SRkMyMzk2PC9hPgo8L2R0Pgo8ZGQ+VC4g
+QmVybmVycy1MZWUsIFIuIEZpZWxkaW5nLCBhbmQKTC4gTWFzaW50ZXIuICA8aT5V
+bmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUkkpOiBHZW5lcmljClN5bnRh
+eDwvaT4uIElFVEYgUkZDIDIzOTYuIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3Lmll
+dGYub3JnL3JmYy9yZmMyMzk2LnR4dCI+aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMv
+cmZjMjM5Ni50eHQ8L2E+LjwvZGQ+Cgo8ZHQ+CjxhIG5hbWU9IlhNTCI+WE1MMTA8
+L2E+CjwvZHQ+CjxkZD5Xb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLiA8aT5FeHRl
+bnNpYmxlCk1hcmt1cCBMYW5ndWFnZSAoWE1MKSAxLjAuPC9pPiBXM0MgUmVjb21t
+ZW5kYXRpb24uIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk4
+L1JFQy14bWwtMTk5ODAyMTAiPmh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTgvUkVD
+LXhtbC0xOTk4MDIxMDwvYT4KPC9kZD4KCjwvZGw+CgoKCgo8aDI+CjxhIG5hbWU9
+InJhdGlvbmFsZSI+PC9hPkIgUmF0aW9uYWxlPC9oMj4KCjxwPlRoZXJlIHdhcyBh
+biB1cmdlbnQgcmVxdWlyZW1lbnQgZm9yIGEgc3BlY2lmaWNhdGlvbiBmb3Igc3R5
+bGUgc2hlZXQKbGlua2luZyB0aGF0IGNvdWxkIGJlIGNvbXBsZXRlZCBpbiB0aW1l
+IGZvciB0aGUgbmV4dCByZWxlYXNlIGZyb20KbWFqb3IgYnJvd3NlciB2ZW5kb3Jz
+LiAgT25seSBieSBjaG9vc2luZyBhIHNpbXBsZSBtZWNoYW5pc20gY2xvc2VseQpi
+YXNlZCBvbiBhIHByb3ZlbiBleGlzdGluZyBtZWNoYW5pc20gY291bGQgdGhlIHNw
+ZWNpZmljYXRpb24gYmUKY29tcGxldGVkIGluIHRpbWUgdG8gbWVldCB0aGlzIHJl
+cXVpcmVtZW50LjwvcD4KCjxwPlVzZSBvZiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rp
+b24gYXZvaWRzIHBvbGx1dGluZyB0aGUgbWFpbiBkb2N1bWVudApzdHJ1Y3R1cmUg
+d2l0aCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBwcm9jZXNzaW5nIGluZm9ybWF0aW9u
+LjwvcD4KCjxwPlRoZSBtZWNoYW5pc20gY2hvc2VuIGZvciB0aGlzIHZlcnNpb24g
+b2YgdGhlIHNwZWNpZmljYXRpb24gaXMgbm90IGEKY29uc3RyYWludCBvbiB0aGUg
+YWRkaXRpb25hbCBtZWNoYW5pc21zIHBsYW5uZWQgZm9yIGZ1dHVyZSB2ZXJzaW9u
+cy4KVGhlcmUgaXMgbm8gZXhwZWN0YXRpb24gdGhhdCB0aGVzZSB3aWxsIHVzZSBw
+cm9jZXNzaW5nIGluc3RydWN0aW9uczsKaW5kZWVkIHRoZXkgbWF5IG5vdCBpbmNs
+dWRlIHRoZSBsaW5raW5nIGluZm9ybWF0aW9uIGluIHRoZSBzb3VyY2UKZG9jdW1l
+bnQuPC9wPgoKCgoKPC9ib2R5Pgo8L2h0bWw+Cg==
diff --git a/tests/external-data/xml-stylesheet-2018 b/tests/external-data/xml-stylesheet-2018
new file mode 100644
index 00000000..8b7bd963
--- /dev/null
+++ b/tests/external-data/xml-stylesheet-2018
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><title>Associating Style Sheets with XML documents 1.0 (Second Edition)</title><style type="text/css">
+code { font-family: monospace; }
+
+div.constraint,
+div.issue,
+div.note,
+div.notice { margin-left: 2em; }
+
+ol.enumar { list-style-type: decimal; }
+ol.enumla { list-style-type: lower-alpha; }
+ol.enumlr { list-style-type: lower-roman; }
+ol.enumua { list-style-type: upper-alpha; }
+ol.enumur { list-style-type: upper-roman; }
+
+
+div.exampleInner pre { margin-left: 1em;
+ margin-top: 0em; margin-bottom: 0em}
+div.exampleOuter {border: 4px double gray;
+ margin: 0em; padding: 0em}
+div.exampleInner { background-color: #d5dee3;
+ border-top-width: 4px;
+ border-top-style: double;
+ border-top-color: #d3d3d3;
+ border-bottom-width: 4px;
+ border-bottom-style: double;
+ border-bottom-color: #d3d3d3;
+ padding: 4px; margin: 0em }
+div.exampleWrapper { margin: 4px }
+div.exampleHeader { font-weight: bold;
+ margin: 4px}
+</style><link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-REC.css"/></head><body><div class="head"><p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"/></a></p>
+<h1><a name="title" id="title"/>Associating Style Sheets with XML documents 1.0 (Second Edition)</h1>
+<h2><a name="w3c-doctype" id="w3c-doctype"/>W3C Recommendation 28 October 2010</h2><dl><dt>This version:</dt><dd>
+ <a href="http://www.w3.org/TR/2010/REC-xml-stylesheet-20101028">http://www.w3.org/TR/2010/REC-xml-stylesheet-20101028</a>
+ </dd><dt>Latest version:</dt><dd>
+ <a href="http://www.w3.org/TR/xml-stylesheet/">http://www.w3.org/TR/xml-stylesheet</a>
+ </dd><dt>Previous versions:</dt><dd>
+ <a href="http://www.w3.org/TR/2010/PER-xml-stylesheet-20100909">http://www.w3.org/TR/2010/PER-xml-stylesheet-20100909</a>
+ </dd><dt>Editors:</dt><dd>James Clark (First Edition) <a href="mailto:jjc@jclark.com">&lt;jjc@jclark.com&gt;</a></dd><dd>Simon Pieters (Second Edition), Opera Software <a href="mailto:simonp@opera.com">&lt;simonp@opera.com&gt;</a></dd><dd>Henry S. Thompson (Second Edition), University of Edinburgh <a href="mailto:ht@inf.ed.ac.uk">&lt;ht@inf.ed.ac.uk&gt;</a></dd></dl><p>Please refer to the <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata"><strong>errata</strong></a> for this document, which may
+ include normative corrections.</p><p>See also <a href=" http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-stylesheet"><strong>translations</strong></a>.</p><p>This document is also available in these non-normative formats: <a href="xml-stylesheet.xml">XML</a>.</p><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2010 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p></div><hr/><div>
+<h2><a name="abstract" id="abstract"/>Abstract</h2><p>This document allows style sheets to be associated with an XML document by including one or more processing instructions with a target of <code>xml-stylesheet</code> in the document's prolog.</p></div><div>
+<h2><a name="status" id="status"/>Status of This Document</h2><p><em>
+This section describes the status of this document at the time
+of its publication. Other documents may supersede this document.
+A list of current W3C publications and the latest revision of
+this technical report can be found in the
+<a href="http://www.w3.org/TR/">W3C technical reports index</a>
+at http://www.w3.org/TR/.
+</em></p><p>
+This document is a product of the
+<a href="http://www.w3.org/XML/Core/">XML Core Working Group</a>
+as part of the
+<a href="http://www.w3.org/XML/Activity.html">W3C XML Activity</a>.
+The English version of this specification is the only normative version.
+However, for translations of this document, see
+<a href="http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-stylesheet">
+http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-stylesheet</a>.
+</p><p>
+This second edition incorporates all known errata as of the publication date,
+clarifies several areas left unspecified in the earlier edition, and has been
+restructured to allow other specifications to reuse the
+rules for parsing pseudo-attributes from a string. A more detailed description
+of the changes from the first edition is in <a href="#changes"><b>B Changes since the first edition</b></a>.
+This edition supersedes the previous
+<a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/">edition of 29
+June 1999</a>.
+</p><p>Comments on this document may be sent to
+<a href="mailto:www-xml-stylesheet-comments@w3.org">www-xml-stylesheet-comments@w3.org</a>;
+public
+<a href="http://lists.w3.org/Archives/Public/www-xml-stylesheet-comments/">archives</a>
+are available. The errata list for this document is available at <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata</a></p><p>
+This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.</p><p>
+W3C maintains a
+<a href="http://www.w3.org/2002/08/xmlcore-IPR-statements">public
+list of any patent disclosures</a>
+made in connection with the deliverables of
+the group; that page also includes instructions for disclosing a patent.
+An individual who has actual knowledge of a patent which the individual
+believes contains
+<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
+Claim(s)</a>
+must disclose the information in accordance with
+<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+6 of the W3C Patent Policy</a>.
+</p></div><div class="toc">
+<h2><a name="contents" id="contents"/>Table of Contents</h2><p class="toc">1 <a href="#introduction"> Introduction</a><br/>
+2 <a href="#conformance-requirements">
+Conformance requirements</a><br/>
+3 <a href="#pseudo-attributes">Pseudo-attributes</a><br/>
+4 <a href="#the-xml-stylesheet-processing-instruction">The xml-stylesheet processing instruction</a><br/>
+</p>
+<h3><a name="appendices" id="appendices"/>Appendices</h3><p class="toc">A <a href="#references">References</a><br/>
+B <a href="#changes">Changes since the first edition</a><br/>
+</p></div><hr/><div class="body"><div class="div1">
+<h2><a name="introduction" id="introduction"/>1 Introduction</h2><p><em>(This section is non-normative.)</em></p><p>Authors might have particular intentions as to how
+user agents are to present the information contained in their XML documents.
+This specification provides a non-intrusive mechanism, using a processing
+instruction, to provide links to one or more style sheets, i.e. resources
+specifying the desired rendering in a designated language. User
+agents will use these resources to control presentation of XML.</p><div class="exampleOuter"><p>Consider an XHTML document with style sheet associations using the <code>link</code> element:</p><div class="exampleInner"><pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+ &lt;head&gt;
+ &lt;title&gt;Example with link elements&lt;/title&gt;
+ &lt;link rel="stylesheet" href="common.css"/&gt;
+ &lt;link rel="stylesheet" href="default.css" title="Default style"/&gt;
+ &lt;link rel="alternate stylesheet" href="alt.css" title="Alternative style"/&gt;
+ &lt;link rel="stylesheet" href="single-col.css" media="all and (max-width: 30em)"/&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ ...
+ &lt;/body&gt;
+&lt;/html&gt;</pre></div><p>This document could be written as follows, using <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a>:</p><div class="exampleInner"><pre>&lt;?xml-stylesheet href="common.css"?&gt;
+&lt;?xml-stylesheet href="default.css" title="Default style"?&gt;
+&lt;?xml-stylesheet alternate="yes" href="alt.css" title="Alternative style"?&gt;
+&lt;?xml-stylesheet href="single-col.css" media="all and (max-width: 30em)"?&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
+ &lt;head&gt;
+ &lt;title&gt;Example with xml-stylesheet processing instructions&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ ...
+ &lt;/body&gt;
+&lt;/html&gt;</pre></div></div></div><div class="div1">
+<h2><a name="conformance-requirements" id="conformance-requirements"/>2
+Conformance requirements</h2><p>All diagrams, examples, and notes in this specification are
+non-normative, as are all sections explicitly marked non-normative.
+Everything else in this specification is normative.</p><p>The key words <strong>must</strong>, <strong>must
+not</strong>, <strong>should</strong>, <strong>should not</strong> and <strong>may</strong> in the normative parts
+of this document are to be interpreted as described in RFC 2119. These words do not appear in all uppercase letters in
+this specification. <a href="#rfc2119">[RFC2119]</a></p><p>The following conformance classes are defined by this specification:</p><dl><dt class="label">Documents</dt><dd><p>A document is considered to be a conforming document if it satisfies all <strong>must</strong>-level criteria in this specification that apply to documents.</p><p><a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet
+processing instructions</a> and their pseudo-attributes are intended for
+use by document authors to provide links to and information about one
+ or more stylesheets, as described in
+ <a href="#the-xml-stylesheet-processing-instruction"><b>4 The xml-stylesheet processing instruction</b></a>, which are
+available to be applied to the containing document.</p></dd><dt class="label">xml-stylesheet processors</dt><dd><p>XML defines an <a href="http://www.w3.org/TR/xml/#dt-app">application</a> as a software module which receives
+ the information content of an XML document from an <a href="http://www.w3.org/TR/xml/#dt-xml-proc">XML processor</a>.
+ [<a name="dt-xml-stylesheet-processor" id="dt-xml-stylesheet-processor" title="xml-stylesheet processor">Definition</a>: An <b>xml-stylesheet processor</b> is such an
+ application which processes XML <a href="http://www.w3.org/TR/xml/#sec-pi">processing instructions</a> in accordance
+ with this specification.] <a href="#xml">[XML]</a></p><p>An <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processor</a> is considered to be a conforming <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processor</a> if it satisfies all <strong>must</strong>-level criteria in this specification that apply to <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processors</a>. <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processors</a> do not have to check or enforce any of the constraints on documents.</p></dd><dt class="label">Applications</dt><dd><p>An <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processor</a> <strong>may</strong> be part of a larger XML
+ application, or <strong>may</strong> function independently. In either case,
+ [<a name="dt-application" id="dt-application" title="application">Definition</a>: an <b>application</b> is the consumer of the
+ pseudo-attribute analysis defined in this specification.]</p><p>A detailed specification of how <a title="application" href="#dt-application">applications</a> exploit the
+ information contained in <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet
+processing instructions</a>
+ is out of scope for this document, as this may reasonably vary
+ from application to application. Accordingly this
+ specification places no conformance requirements on
+ applications.</p><p>It is however expected that specifications governing the use of
+ stylesheet languages will reference this specification in
+ describing how applications may identify stylesheets for
+ use. Such specifications are expected to specify
+ interpretations for the values (or absense of value) of those
+ <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes</a> which they make use of, doing so in a way
+ that is as consistent as possible with those <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes'</a>
+ descriptions in <a href="#the-xml-stylesheet-processing-instruction"><b>4 The xml-stylesheet processing instruction</b></a>,
+ insofar as this makes sense for the application and stylesheet language(s) in question.</p></dd></dl><p>This specification is defined with reference to the vocabulary for
+ XML provided by the XML Information
+ Set. <a href="#infoset">[INFOSET]</a></p><p>The productions in this specification use the same
+ notation as used in the XML specification. Tokens in the
+ grammar that are not defined in this specification are defined in
+ the XML specification. <a href="#xml">[XML]</a></p></div><div class="div1">
+<h2><a name="pseudo-attributes" id="pseudo-attributes"/>3 Pseudo-attributes</h2><p>[<a name="dt-parsing" id="dt-parsing" title="rules for parsing pseudo-attributes from a string">Definition</a>: The <b>rules for parsing pseudo-attributes from a string</b> are given in this section.]</p><p>[<a name="dt-parsing-result" id="dt-parsing-result" title="parsing result">Definition</a>: The <b>parsing result</b> is either a set of <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes</a> or an error.]</p><p>If the given string is not matched by the <a href="#NT-PseudoAtts">PseudoAtts</a> production, the <a title="parsing result" href="#dt-parsing-result">parsing result</a> is an error.</p>
+<h5><a name="d0e323" id="d0e323"/>Productions for strings with pseudo-attributes</h5><table class="scrap" summary="Scrap"><tbody><tr valign="baseline"><td><a name="NT-PseudoAtts" id="NT-PseudoAtts"/>[1a]   </td><td><code>PseudoAtts</code></td><td>   ::=   </td><td><code>
+ <a href="#NT-PseudoAtt">PseudoAtt</a>? (<a href="http://www.w3.org/TR/xml/#NT-S">S</a> <a href="#NT-PseudoAtt">PseudoAtt</a>)* <a href="http://www.w3.org/TR/xml/#NT-S">S</a>?</code></td></tr><tr valign="baseline"><td><a name="NT-PseudoAtt" id="NT-PseudoAtt"/>[2]   </td><td><code>PseudoAtt</code></td><td>   ::=   </td><td><code><a href="http://www.w3.org/TR/xml/#NT-Name">Name</a> <a href="http://www.w3.org/TR/xml/#NT-S">S</a>? "=" <a href="http://www.w3.org/TR/xml/#NT-S">S</a>? <a href="#NT-PseudoAttValue">PseudoAttValue</a>
+ </code></td></tr><tr valign="baseline"><td><a name="NT-PseudoAttValue" id="NT-PseudoAttValue"/>[3]   </td><td><code>PseudoAttValue</code></td><td>   ::=   </td><td><code>('"' ([^"&lt;&amp;] | <a href="http://www.w3.org/TR/xml/#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* '"' | "'"
+([^'&lt;&amp;] | <a href="http://www.w3.org/TR/xml/#NT-CharRef">CharRef</a> | <a href="#NT-PredefEntityRef">PredefEntityRef</a>)* "'")</code></td></tr><tr valign="baseline"><td><a name="NT-PredefEntityRef" id="NT-PredefEntityRef"/>[4]   </td><td><code>PredefEntityRef</code></td><td>   ::=   </td><td><code>"&amp;amp;" | "&amp;lt;" | "&amp;gt;" | "&amp;quot;" |
+"&amp;apos;"</code></td></tr></tbody></table><p>
+ [<a name="dt-pseudo-attribute" id="dt-pseudo-attribute" title="pseudo-attribute">Definition</a>: Each
+string matched by <a href="#NT-PseudoAtt">PseudoAtt</a> in the <a href="#NT-PseudoAtts">PseudoAtts</a> production
+represents a <b>pseudo-attribute</b>.] A
+<a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a> has a
+<a title="name" href="#dt-name">name</a> and a <a title="value" href="#dt-value">value</a>.
+ </p><p>
+[<a name="dt-name" id="dt-name" title="name">Definition</a>: The
+string matched by
+<a href="http://www.w3.org/TR/xml/#NT-Name">Name</a> in the <a href="#NT-PseudoAtt">PseudoAtt</a>
+production constitutes the <b>name</b> of the corresponding <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a>.]
+ </p><p>
+[<a name="dt-value" id="dt-value" title="value">Definition</a>: The string matched by
+<a href="#NT-PseudoAttValue">PseudoAttValue</a> in the <a href="#NT-PseudoAtt">PseudoAtt</a>
+production —
+with the
+three modifications specified below — constitutes the <b>value</b>
+of the corresponding <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a>.]</p><ol class="enumar"><li><p>Each <a href="http://www.w3.org/TR/xml/#NT-CharRef">CharRef</a> is replaced with the character it represents according to
+XML <a href="#xml">[XML]</a>.</p></li><li><p>Each <a href="#NT-PredefEntityRef">PredefEntityRef</a> in <a href="#NT-PseudoAttValue">PseudoAttValue</a> is replaced with U+0026 (&amp;) if it is
+"<code>&amp;amp;</code>", U+003C (&lt;) if it is
+"<code>&amp;lt;</code>", U+003E (&gt;) if it is
+"<code>&amp;gt;</code>", U+0022 (") if it is
+"<code>&amp;quot;</code>" and U+0027 (') if it is
+"<code>&amp;apos;</code>".</p></li><li><p>The
+ first and last character (the start and end quotes) are removed.</p></li></ol><p>The <a title="parsing result" href="#dt-parsing-result">parsing result</a> is an error if the XML <a href="http://www.w3.org/TR/xml/#wf-Legalchar">Legal Character well-formedness contraint</a> is violated for any <a href="http://www.w3.org/TR/xml/#NT-CharRef">CharRef</a>. <a href="#xml">[XML]</a></p><p>The <a title="parsing result" href="#dt-parsing-result">parsing result</a> is an error if there are more than one <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a> with the same <a title="name" href="#dt-name">name</a>.</p><p>If
+the <a title="parsing result" href="#dt-parsing-result">parsing result</a> is not an error, then it is the set of
+<a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes</a> represented when the given string is matched by the
+<a href="#NT-PseudoAtts">PseudoAtts</a> production.</p></div><div class="div1">
+<h2><a name="the-xml-stylesheet-processing-instruction" id="the-xml-stylesheet-processing-instruction"/>4 The xml-stylesheet processing instruction</h2><p>[<a name="dt-potential-xml-stylesheet" id="dt-potential-xml-stylesheet" title="potential xml-stylesheet processing instruction">Definition</a>: A processing instruction information item is said to be a <b>potential xml-stylesheet processing instruction</b> if it has the [target] property <code>xml-stylesheet</code> and it either is in the [children] property of a document information item and appears before the element information item of the document information item's [children] property, or it appears in the [children] property of a document type declaration information item.]</p><p>For <a title="potential xml-stylesheet processing instruction" href="#dt-potential-xml-stylesheet">potential xml-stylesheet processing instructions</a> that are in the [children] property of a document information item, <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processors</a> <strong>must</strong> report to the <a title="application" href="#dt-application">application</a> the <a title="parsing result" href="#dt-parsing-result">parsing result</a> of invoking the <a title="rules for parsing pseudo-attributes from a string" href="#dt-parsing">rules for parsing pseudo-attributes from a string</a>, using the processing instruction information item's [content] property as the string.</p><p>For <a title="potential xml-stylesheet processing instruction" href="#dt-potential-xml-stylesheet">potential
+xml-stylesheet processing instructions</a> that are in the [children] property of a document type declaration information item, <a title="xml-stylesheet processor" href="#dt-xml-stylesheet-processor">xml-stylesheet processors</a> <strong>may</strong> report to the <a title="application" href="#dt-application">application</a> the <a title="parsing result" href="#dt-parsing-result">parsing result</a> of invoking the <a title="rules for parsing pseudo-attributes from a string" href="#dt-parsing">rules for parsing pseudo-attributes from a string</a>, using the processing instruction information item's [content] property as the string. [<a name="dt-ignored" id="dt-ignored" title="ignored">Definition</a>: If it is not reported to the <a title="application" href="#dt-application">application</a>, the processing instruction information item is said to be <b>ignored</b>.]</p><div class="note"><p class="prefix"><b>Note:</b></p><p>Since non-validating XML processors are not required to read parameter entities or the external subset, it is possible that processing instructions that appear in parameter entities or the external subset will not be present in the document type declaration information item's [children] property. <a href="#xml">[XML]</a></p></div><p>[<a name="dt-xml-stylesheet" id="dt-xml-stylesheet" title="xml-stylesheet processing instruction">Definition</a>: A <a title="potential xml-stylesheet processing instruction" href="#dt-potential-xml-stylesheet">potential xml-stylesheet processing instruction</a> is said to be an <b>xml-stylesheet processing instruction</b> if the <a title="parsing result" href="#dt-parsing-result">parsing result</a> is not an error when invoking the <a title="rules for parsing pseudo-attributes from a string" href="#dt-parsing">rules for parsing pseudo-attributes from a string</a>, using the processing instruction information item's [content] property as the string.]</p><p>Documents <strong>must not</strong> use processing instruction information items with the [target] property
+<code>xml-stylesheet</code> if they are not <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a>.</p><p>Documents <strong>should not</strong> use <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a> that are in the [children] property of a document type declaration information item.</p><p>An <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instruction</a> will match the following production:</p>
+<h5><a name="d0e611" id="d0e611"/>Production for xml-stylesheet processing instruction</h5><table class="scrap" summary="Scrap"><tbody><tr valign="baseline"><td><a name="NT-StyleSheetPI" id="NT-StyleSheetPI"/>[1]   </td><td><code>StyleSheetPI</code></td><td>   ::=   </td><td><code>"&lt;?xml-stylesheet" ( (<a href="http://www.w3.org/TR/xml/#NT-S">S</a> <a href="#NT-PseudoAtts">PseudoAtts</a>)? - (<a href="http://www.w3.org/TR/xml/#NT-Char">Char</a>* "?&gt;"
+<a href="http://www.w3.org/TR/xml/#NT-Char">Char</a>*) ) "?&gt;"</code></td></tr></tbody></table><p>Documents <strong>may</strong> specify the following <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes</a> on
+<a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a>, unless otherwise stated:</p><dl><dt class="label"><a name="PA-href" id="PA-href"/>
+ <code>href</code>
+ </dt><dd><p>Gives the address of the referenced style sheet. Documents <strong>must</strong> specify this <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a>. Documents <strong>must</strong> set the <a title="value" href="#dt-value">value</a> to a string that matches the grammar for
+&lt;IRI-reference&gt; given in RFC 3987. <a href="#rfc3987">[RFC3987]</a></p><div class="note"><p class="prefix"><b>Note:</b></p><p>It is possible to associate a style sheet that is in the
+same document as the <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing
+instruction</a> by using just a fragment identifier in the <a title="" href="#PA-href"><span><code>href</code></span></a> <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a>.</p><p>For details on how this is managed in XSLT,
+see <a href="http://www.w3.org/TR/xslt20/#embedded">3.11 Embedded
+Stylesheet Modules</a> in <a href="#xslt">[XSLT]</a>.</p></div></dd><dt class="label"><a name="PA-type" id="PA-type"/>
+ <code>type</code>
+ </dt><dd><p>Gives an advisory media type for the referenced style sheet. If
+specified, documents <strong>must</strong> set the <a title="value" href="#dt-value">value</a> to a string that matches the
+<code>media-type</code> production defined in section 3.7 "Media Types"
+of RFC 2616. <a href="#http">[RFC2616]</a></p><div class="note"><p class="prefix"><b>Note:</b></p><p><em>Syntactic</em> conformance to the
+production in RFC 2616 is all that is required by the above. This
+specification imposes no requirements with respect to the status of the types
+used. Some unregistered (as of the publication of this specification) media
+types, such as <code>text/xsl</code>, are well-supported by existing
+implementations, whereas some registered media types, such as
+<code>application/xslt+xml</code>, are not.</p></div><p>
+ The <a title="value" href="#dt-value">value</a> is advisory in
+that it is intended to be used by an application only when no other source of
+media type
+information becomes available during retrieval of the stylesheet itself.</p></dd><dt class="label"><a name="PA-title" id="PA-title"/>
+ <code>title</code>
+ </dt><dd><p>Gives the title of the referenced style sheet in a style sheet
+set. No constraints beyond those of the <a href="#NT-PseudoAttValue">PseudoAttValue</a> production
+are placed on the <a title="value" href="#dt-value">value</a>.</p></dd><dt class="label"><a name="PA-media" id="PA-media"/>
+ <code>media</code>
+ </dt><dd><p>Gives the media for which the referenced style sheet applies. If
+specified, documents <strong>must</strong> set the <a title="value" href="#dt-value">value</a> to a string that matches the <code>media_query_list</code> production of the Media Queries specification. <a href="#mq">[MQ]</a></p></dd><dt class="label"><a name="PA-charset" id="PA-charset"/>
+ <code>charset</code>
+ </dt><dd><p>Gives an advisory character encoding for the referenced style
+sheet. If specified, documents <strong>must</strong> set the <a title="value" href="#dt-value">value</a> to a valid
+character encoding name, which <strong>must</strong> be the name or alias labeled as "preferred MIME name" in the IANA Character Sets registry, if there is one, or the encoding's name, if none of the aliases are so labeled. <a href="#ianacharset">[IANACHARSET]</a></p><p>
+ The <a title="value" href="#dt-value">value</a> is advisory in
+that it is intended to be used by an application only when no other source of encoding
+information becomes available during retrieval of the stylesheet itself, either explicitly via an HTTP header,
+or implicitly via its media type, as in the case of XML documents.</p></dd><dt class="label"><a name="PA-alternate" id="PA-alternate"/>
+ <code>alternate</code>
+ </dt><dd><p>If the <a title="value" href="#dt-value">value</a> is "<code>yes</code>", it
+indicates that the referenced style sheet is an alternative style
+sheet, and documents <strong>must</strong> also specify the <a title="" href="#PA-title"><span><code>title</code></span></a>
+ <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attribute</a> with a non-empty <a title="value" href="#dt-value">value</a>. If specified, documents <strong>must</strong> set the <a title="value" href="#dt-value">value</a> to either "<code>yes</code>" or
+"<code>no</code>".</p></dd></dl><p>Documents <strong>must not</strong> specify other <a title="pseudo-attribute" href="#dt-pseudo-attribute">pseudo-attributes</a> on
+<a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a>.</p><p>Any links to style sheets that are specified externally to the
+document (e.g. <code>Link</code> headers in some versions of HTTP <a href="#rfc2068">[RFC2068]</a>) are considered to create associations that occur before the associations specified by the <a title="xml-stylesheet processing instruction" href="#dt-xml-stylesheet">xml-stylesheet processing instructions</a>. The <a title="application" href="#dt-application">application</a> is responsible for taking all associations and determining how, if at all, their order affects its processing.</p></div></div><div class="back"><div class="div1">
+<h2><a name="references" id="references"/>A References</h2><p>References are normative unless marked "non-normative".</p><dl><dt class="label"><a name="ianacharset" id="ianacharset"/>IANACHARSET</dt><dd><a href="http://www.iana.org/assignments/character-sets"><cite>Character Sets</cite></a>. IANA, May 2007. (See http://www.iana.org/assignments/character-sets.)</dd><dt class="label"><a name="infoset" id="infoset"/>INFOSET</dt><dd><a href="http://www.w3.org/TR/xml-infoset/"><cite>XML Information Set</cite></a>, J. Cowan, R. Tobin. W3C, February 2004. (See http://www.w3.org/TR/xml-infoset/.)</dd><dt class="label"><a name="mq" id="mq"/>MQ</dt><dd><a href="http://www.w3.org/TR/css3-mediaqueries/"><cite>Media
+ Queries</cite></a>, H. Lie, T. Çelik, D. Glazman, A. van
+ Kesteren. W3C, April 2009. (See http://www.w3.org/TR/css3-mediaqueries/.)</dd><dt class="label"><a name="rfc2068" id="rfc2068"/>RFC2068</dt><dd>(non-normative) <a href="http://www.ietf.org/rfc/rfc2068.txt"><cite>Hypertext
+ Transfer Protocol — HTTP/1.1</cite></a>, R. Fielding, J. Gettys,
+ J. Mogul, H. Frystyk, T. Berners-Lee. IETF,
+ June 1997. (See http://www.ietf.org/rfc/rfc2068.txt.)</dd><dt class="label"><a name="rfc2119" id="rfc2119"/>RFC2119</dt><dd><a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in
+ RFCs to Indicate Requirement Levels</cite></a>, S. Bradner. IETF, March
+ 1997. (See http://www.ietf.org/rfc/rfc2119.txt.)</dd><dt class="label"><a name="http" id="http"/>RFC2616</dt><dd><a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext
+ Transfer Protocol — HTTP/1.1</cite></a>, R. Fielding, J. Gettys,
+ J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee. IETF,
+ June 1999. (See http://www.ietf.org/rfc/rfc2616.txt.)</dd><dt class="label"><a name="rfc3987" id="rfc3987"/>RFC3987</dt><dd><a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized
+ Resource Identifiers (IRIs)</cite></a>, M. Dürst, M. Suignard. IETF, January
+ 2005. (See http://www.ietf.org/rfc/rfc3987.txt.)</dd><dt class="label"><a name="xml" id="xml"/>XML</dt><dd><a href="http://www.w3.org/TR/xml/"><cite>Extensible Markup
+ Language</cite></a>, T. Bray, J. Paoli, C. Sperberg-McQueen,
+ E. Maler, F. Yergeau. W3C, November 2008. (See http://www.w3.org/TR/xml/.)</dd><dt class="label"><a name="xslt" id="xslt"/>XSLT</dt><dd>(non-normative) <a href="http://www.w3.org/TR/xslt20/"><cite>XSL Transformations (XSLT) Version 2.0</cite></a>, M. Kay. W3C, January 2007. (See http://www.w3.org/TR/xslt20/.)</dd></dl></div><div class="div1">
+<h2><a name="changes" id="changes"/>B Changes since the first edition</h2><p>This appendix is non-normative</p><p>The first edition of this specification was admirably brief, but at the
+same time left many details unstated. This second edition aims to fill the
+gaps left in the first edition, while restructuring the presentation to provide
+for independent citation and re-use of the pseudo-attribute construct.</p><p>Neither the syntax nor the semantics of the <code>xml-stylesheet</code>
+processing instructions have been changed, beyond the restructuring just
+mentioned. Conformance constraints on processors have been eased slightly, in
+that <code>xml-stylesheet</code>
+processing instructions occurring within the internal or external subset may be ignored.</p><p>The following list identifies the major changes which have been made:</p><ul><li><p>Provided definitions for a number of terms used but not defined in the
+first edition;</p></li><li><p>Added a conformance section, distinguishing between processor
+and document conformance, all of which was implicit in the first edition;</p></li><li><p>Identified a number of error cases, which were implicit in the first
+edition's appeal to the parallel with element start tag processing, and
+specified expected processor behaviour;</p></li><li><p>In recognition of deployed processor behaviour, allowed
+<code>xml-stylesheet</code> processing instructions to be ignored unless they
+are among the [children] of the document information item;</p></li><li><p>Added a number of references, but removed the explicit
+dependence on the HTML 4.0 specification by adding descriptions of the meanings
+of each of the pseudo-attributes consistent with their HTML 4.0 use but brought up-to-date;</p></li><li><p>Removed the (non-normative) Rationale section, as it contained a
+number of out-of-date assumptions;</p></li><li><p>Made the <code>type</code> pseudo-attribute optional, as agreed
+by <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata">existing erratum</a>.</p></li></ul></div></div><script type="application/javascript" src="https://www.w3.org/scripts/TR/fixup.js"></script></body></html>
diff --git a/tests/keys/README b/tests/keys/README
index 7a5a5684..6b4bbecc 100644
--- a/tests/keys/README
+++ b/tests/keys/README
@@ -81,12 +81,13 @@ README
G. Generate ECDSA key with second level CA
> openssl ecparam -list_curves
- > openssl ecparam -name secp256k1 -genkey -noout -out ecdsa-secp256k1-key.pem
- > openssl req -config ./openssl.cnf -new -key ecdsa-secp256k1-key.pem -out ecdsa-secp256k1-req.pem
+ > openssl ecparam -name secp256r1 -genkey -noout -out ecdsa-secp256r1-key.pem
+ Here use 'ECDSA secp256r1 Key' for Common Name:
+ > openssl req -config ./openssl.cnf -new -key ecdsa-secp256r1-key.pem -out ecdsa-secp256r1-req.pem
> openssl ca -config ./openssl.cnf -cert ca2cert.pem -keyfile ca2key.pem \
- -out ecdsa-secp256k1-cert.pem -infiles ecdsa-secp256k1-req.pem
- > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem ecdsa-secp256k1-cert.pem
- > rm ecdsa-secp256k1-req.pem
+ -out ecdsa-secp256r1-cert.pem -infiles ecdsa-secp256r1-req.pem
+ > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem ecdsa-secp256r1-cert.pem
+ > rm ecdsa-secp256r1-req.pem
3. Converting key and certs between PEM and DER formats
@@ -101,7 +102,7 @@ README
> openssl dsa -inform PEM -outform DER -in dsa3072key.pem -out dsa3072key.der
ECDSA keys:
- > openssl ec -inform PEM -outform DER -in ecdsa-secp256k1-key.pem -out ecdsa-secp256k1-key.der
+ > openssl ec -inform PEM -outform DER -in ecdsa-secp256r1-key.pem -out ecdsa-secp256r1-key.der
- Convert PEM cert file to DER file
> openssl x509 -outform DER -in cacert.pem -out cacert.der
@@ -112,7 +113,7 @@ README
> openssl x509 -outform DER -in rsacert.pem -out rsacert.der
> openssl x509 -outform DER -in largersacert.pem -out largersacert.der
> openssl x509 -outform DER -in expiredcert.pem -out expiredcert.der
- > openssl x509 -outform DER -in ecdsa-secp256k1-cert.pem -out ecdsa-secp256k1-cert.der
+ > openssl x509 -outform DER -in ecdsa-secp256r1-cert.pem -out ecdsa-secp256r1-cert.der
- (optional) Convert PEM public key file to DER file
RSA key:
@@ -141,7 +142,7 @@ README
-outform pem -topk8
> openssl pkcs8 -in largersakey.der -inform der -out largersakey.p8-der \
-outform der -topk8
- > openssl pkcs8 -in ecdsa-secp256k1-key.der -inform der -out ecdsa-secp256k1-key.p8-der \
+ > openssl pkcs8 -in ecdsa-secp256r1-key.der -inform der -out ecdsa-secp256r1-key.p8-der \
-outform der -topk8
5. NSS is unfriendly towards standalone private keys.
@@ -167,9 +168,9 @@ README
> openssl pkcs12 -export -in allexpired.pem -name TestExpiredRsaKey \
-out expiredkey.p12
- > cat ecdsa-secp256k1-key.pem ecdsa-secp256k1-cert.pem ca2cert.pem cacert.pem > all-ecdsa-secp256k1.pem
- > openssl pkcs12 -export -in all-ecdsa-secp256k1.pem -name TestEcdsaSecp256k1Key -out ecdsa-secp256k1-key.p12
- > rm all-ecdsa-secp256k1.pem
+ > cat ecdsa-secp256r1-key.pem ecdsa-secp256r1-cert.pem ca2cert.pem cacert.pem > all-ecdsa-secp256r1.pem
+ > openssl pkcs12 -export -in all-ecdsa-secp256r1.pem -name TestEcdsaSecp256k1Key -out ecdsa-secp256r1-key.p12
+ > rm all-ecdsa-secp256r1.pem
5a.
Input: DSA/RSA private key in PEM or DER format
@@ -247,3 +248,11 @@ Worse, the CSP is different for XP and older versions
> openssl pkcs12 -export -in alllargersa.pem -name TestLargeRsaKey -out largersakey-winxp.p12 -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
> openssl pkcs12 -export -in alllargersa.pem -name TestLargeRsaKey -out largersakey-win.p12 -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"
+ > cat dsa2048key.pem dsa2048cert.pem ca2cert.pem cacert.pem > alldsa2048.pem
+ > openssl pkcs12 -export -in alldsa2048.pem -name TestDsa2048Key -out dsa2048key-win.p12 -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"
+
+ > cat dsa3072key.pem dsa3072cert.pem ca2cert.pem cacert.pem > alldsa3072.pem
+ > openssl pkcs12 -export -in alldsa3072.pem -name TestDsa3072Key -out dsa3072key-win.p12 -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider"
+
+
+
diff --git a/tests/keys/demoCA/index.txt b/tests/keys/demoCA/index.txt
index 1b8c10fb..1bef0651 100644
--- a/tests/keys/demoCA/index.txt
+++ b/tests/keys/demoCA/index.txt
@@ -7,3 +7,4 @@ V 140524175816Z AFA28BB933ADDAB1 unknown /C=US/ST=California/O=XML Security Lib
V 21150209225409Z AFA28BB933ADDAB2 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level DSA 2048 Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
V 21150209225453Z AFA28BB933ADDAB3 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level DSA 3072 Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
V 21160105172612Z AFA28BB933ADDAB4 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/CN=ECDSA secp256k1 Key/emailAddress=xmlsec@aleksey.com
+V 21170122220821Z AFA28BB933ADDAB5 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/CN=ECDSA secp256r1 Key/emailAddress=xmlsec@aleksey.com
diff --git a/tests/keys/demoCA/index.txt.old b/tests/keys/demoCA/index.txt.old
index c8270ea2..1b8c10fb 100644
--- a/tests/keys/demoCA/index.txt.old
+++ b/tests/keys/demoCA/index.txt.old
@@ -6,3 +6,4 @@ V 21140429175706Z AFA28BB933ADDAB0 unknown /C=US/ST=California/O=XML Security L
V 140524175816Z AFA28BB933ADDAB1 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Expired RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
V 21150209225409Z AFA28BB933ADDAB2 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level DSA 2048 Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
V 21150209225453Z AFA28BB933ADDAB3 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level DSA 3072 Certificate/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+V 21160105172612Z AFA28BB933ADDAB4 unknown /C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/CN=ECDSA secp256k1 Key/emailAddress=xmlsec@aleksey.com
diff --git a/tests/keys/demoCA/newcerts/AFA28BB933ADDAB5.pem b/tests/keys/demoCA/newcerts/AFA28BB933ADDAB5.pem
new file mode 100644
index 00000000..3404e672
--- /dev/null
+++ b/tests/keys/demoCA/newcerts/AFA28BB933ADDAB5.pem
@@ -0,0 +1,60 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ af:a2:8b:b9:33:ad:da:b5
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ Validity
+ Not Before: Feb 15 22:08:21 2017 GMT
+ Not After : Jan 22 22:08:21 2117 GMT
+ Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), CN=ECDSA secp256r1 Key/emailAddress=xmlsec@aleksey.com
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (256 bit)
+ pub:
+ 04:6d:2e:ce:aa:75:98:77:d1:f7:31:0c:b1:88:88:
+ 5e:43:4f:b6:d6:72:8f:46:8f:f2:21:3d:c2:52:8d:
+ a7:dc:7b:de:42:67:36:69:65:f2:5e:3b:31:90:d6:
+ 56:3b:6b:73:21:67:d5:75:33:c4:7e:ea:59:52:58:
+ 8c:f0:46:a6:d4
+ ASN1 OID: prime256v1
+ NIST CURVE: P-256
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 7A:2C:3C:AF:7F:B0:88:7C:34:E5:3F:B7:A9:18:63:7E:10:19:BB:D9
+ X509v3 Authority Key Identifier:
+ keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+ DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Root CA/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ serial:AF:A2:8B:B9:33:AD:DA:AD
+
+ Signature Algorithm: sha1WithRSAEncryption
+ 1b:38:21:ee:bd:d4:14:77:d0:a8:bd:30:ce:63:cc:68:56:96:
+ 75:ac:f1:26:86:26:40:25:27:17:24:86:15:66:bd:5f:f9:72:
+ 7b:4b:be:e4:0d:18:fa:59:26:d9:18:f1:c5:48:c3:6f:c6:e1:
+ 79:81:05:a7:7b:95:97:2e:39:a8
+-----BEGIN CERTIFICATE-----
+MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
+A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
+A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
+cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=
+-----END CERTIFICATE-----
diff --git a/tests/keys/demoCA/serial b/tests/keys/demoCA/serial
index f10ea957..ee29801f 100644
--- a/tests/keys/demoCA/serial
+++ b/tests/keys/demoCA/serial
@@ -1 +1 @@
-AFA28BB933ADDAB5
+AFA28BB933ADDAB6
diff --git a/tests/keys/demoCA/serial.old b/tests/keys/demoCA/serial.old
index adf3394d..f10ea957 100644
--- a/tests/keys/demoCA/serial.old
+++ b/tests/keys/demoCA/serial.old
@@ -1 +1 @@
-AFA28BB933ADDAB4
+AFA28BB933ADDAB5
diff --git a/tests/keys/dsa2048key-win.p12 b/tests/keys/dsa2048key-win.p12
new file mode 100644
index 00000000..374a13e0
--- /dev/null
+++ b/tests/keys/dsa2048key-win.p12
Binary files differ
diff --git a/tests/keys/dsa3072key-win.p12 b/tests/keys/dsa3072key-win.p12
new file mode 100644
index 00000000..36071ecc
--- /dev/null
+++ b/tests/keys/dsa3072key-win.p12
Binary files differ
diff --git a/tests/keys/ecdsa-secp256r1-cert.der b/tests/keys/ecdsa-secp256r1-cert.der
new file mode 100644
index 00000000..c2f99e4f
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-cert.der
Binary files differ
diff --git a/tests/keys/ecdsa-secp256r1-cert.pem b/tests/keys/ecdsa-secp256r1-cert.pem
new file mode 100644
index 00000000..3404e672
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-cert.pem
@@ -0,0 +1,60 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ af:a2:8b:b9:33:ad:da:b5
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ Validity
+ Not Before: Feb 15 22:08:21 2017 GMT
+ Not After : Jan 22 22:08:21 2117 GMT
+ Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), CN=ECDSA secp256r1 Key/emailAddress=xmlsec@aleksey.com
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (256 bit)
+ pub:
+ 04:6d:2e:ce:aa:75:98:77:d1:f7:31:0c:b1:88:88:
+ 5e:43:4f:b6:d6:72:8f:46:8f:f2:21:3d:c2:52:8d:
+ a7:dc:7b:de:42:67:36:69:65:f2:5e:3b:31:90:d6:
+ 56:3b:6b:73:21:67:d5:75:33:c4:7e:ea:59:52:58:
+ 8c:f0:46:a6:d4
+ ASN1 OID: prime256v1
+ NIST CURVE: P-256
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 7A:2C:3C:AF:7F:B0:88:7C:34:E5:3F:B7:A9:18:63:7E:10:19:BB:D9
+ X509v3 Authority Key Identifier:
+ keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+ DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Root CA/CN=Aleksey Sanin/emailAddress=xmlsec@aleksey.com
+ serial:AF:A2:8B:B9:33:AD:DA:AD
+
+ Signature Algorithm: sha1WithRSAEncryption
+ 1b:38:21:ee:bd:d4:14:77:d0:a8:bd:30:ce:63:cc:68:56:96:
+ 75:ac:f1:26:86:26:40:25:27:17:24:86:15:66:bd:5f:f9:72:
+ 7b:4b:be:e4:0d:18:fa:59:26:d9:18:f1:c5:48:c3:6f:c6:e1:
+ 79:81:05:a7:7b:95:97:2e:39:a8
+-----BEGIN CERTIFICATE-----
+MIIDfzCCAymgAwIBAgIJAK+ii7kzrdq1MA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEWMBQG
+A1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtz
+ZXkuY29tMCAXDTE3MDIxNTIyMDgyMVoYDzIxMTcwMTIyMjIwODIxWjCBojELMAkG
+A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1
+cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHDAa
+BgNVBAMTE0VDRFNBIHNlY3AyNTZyMSBLZXkxITAfBgkqhkiG9w0BCQEWEnhtbHNl
+Y0BhbGVrc2V5LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG0uzqp1mHfR
+9zEMsYiIXkNPttZyj0aP8iE9wlKNp9x73kJnNmll8l47MZDWVjtrcyFn1XUzxH7q
+WVJYjPBGptSjggFFMIIBQTAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1P
+cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUeiw8r3+wiHw0
+5T+3qRhjfhAZu9kwgeMGA1UdIwSB2zCB2IAU/uTsUyTwlZXHELXhRLVdOWVa436h
+gbSkgbEwga4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYD
+VQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNv
+bS94bWxzZWMpMRAwDgYDVQQLEwdSb290IENBMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQCvoou5M63a
+rTANBgkqhkiG9w0BAQUFAANBABs4Ie691BR30Ki9MM5jzGhWlnWs8SaGJkAlJxck
+hhVmvV/5cntLvuQNGPpZJtkY8cVIw2/G4XmBBad7lZcuOag=
+-----END CERTIFICATE-----
diff --git a/tests/keys/ecdsa-secp256r1-key.der b/tests/keys/ecdsa-secp256r1-key.der
new file mode 100644
index 00000000..a26a34c3
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-key.der
Binary files differ
diff --git a/tests/keys/ecdsa-secp256r1-key.p12 b/tests/keys/ecdsa-secp256r1-key.p12
new file mode 100644
index 00000000..b81eba3a
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-key.p12
Binary files differ
diff --git a/tests/keys/ecdsa-secp256r1-key.p8-der b/tests/keys/ecdsa-secp256r1-key.p8-der
new file mode 100644
index 00000000..44c8eb5e
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-key.p8-der
Binary files differ
diff --git a/tests/keys/ecdsa-secp256r1-key.pem b/tests/keys/ecdsa-secp256r1-key.pem
new file mode 100644
index 00000000..e5e864ff
--- /dev/null
+++ b/tests/keys/ecdsa-secp256r1-key.pem
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEID5bCaVHTwFNu+anJe0XrGEg+ExsbUIlyub3bPWh5BcMoAoGCCqGSM49
+AwEHoUQDQgAEbS7OqnWYd9H3MQyxiIheQ0+21nKPRo/yIT3CUo2n3HveQmc2aWXy
+XjsxkNZWO2tzIWfVdTPEfupZUliM8Eam1A==
+-----END EC PRIVATE KEY-----
diff --git a/tests/keys/enveloped-ecdsa-java-bug-cert.der b/tests/keys/enveloped-ecdsa-java-bug-cert.der
new file mode 100644
index 00000000..27befe6f
--- /dev/null
+++ b/tests/keys/enveloped-ecdsa-java-bug-cert.der
Binary files differ
diff --git a/tests/keys/enveloped-ecdsa-java-bug-cert.pem b/tests/keys/enveloped-ecdsa-java-bug-cert.pem
new file mode 100644
index 00000000..9e9b4330
--- /dev/null
+++ b/tests/keys/enveloped-ecdsa-java-bug-cert.pem
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICfjCCAd+gAwIBAgIJAP1+F7krF+SAMAoGCCqGSM49BAMEMFYxCzAJBgNVBAYT
+AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn
+aXRzIFB0eSBMdGQxDzANBgNVBAMMBnRlc3RDQTAeFw0xODEwMTIxNDU2MjNaFw0y
+MTA4MDExNDU2MjNaMFYxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRl
+MSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMMBnRl
+c3RDQTCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAfAiTmdR/hzwGEkmWH0b8aQS
+VaKm5hNni8aksuGjAboVttvArn/mnBdktrl0H91MqTuHmx984RhCICNBqfI7ZO4k
+AVhMf6TbYUY/aUlrJ9xR3SkFQlMlYAY9bxB/rNpIc1ekEr5444+jlARGtusIvDDV
+Dl2h9MXHqNggYSdUROvuXfnIo1MwUTAdBgNVHQ4EFgQUKkgkI/02fv+9G1PD/afM
+VJ29xaEwHwYDVR0jBBgwFoAUKkgkI/02fv+9G1PD/afMVJ29xaEwDwYDVR0TAQH/
+BAUwAwEB/zAKBggqhkjOPQQDBAOBjAAwgYgCQgD6de1JRP+F/sifVtD0ksElwdJk
+5oJYnVC+6L4dIWLhRUHzPclgUxWcPqIWhBsraJIdWTey2/c1B1jwgN/yDe7CbAJC
+AKYAKS/Cl2PNFc3wv9nfn1bymZn1gzHmmELlhIJAbJ+4mg18RD9/RYvodxQiwXjm
+56qbo9H0/EYrHQe0wSf1Qqe6
+-----END CERTIFICATE-----
diff --git a/tests/keys/merlincert.der b/tests/keys/merlincert.der
new file mode 100644
index 00000000..b1f5d146
--- /dev/null
+++ b/tests/keys/merlincert.der
Binary files differ
diff --git a/tests/keysstore/README b/tests/keysstore/README
new file mode 100644
index 00000000..a14c308b
--- /dev/null
+++ b/tests/keysstore/README
@@ -0,0 +1,9 @@
+Manual test of the keysstore feature
+----------------------------------------------
+
+mscng backend:
+
+- import tests/keys/rsakey-win.p12 (double-click on it)
+- verify that the import happened, using certmgr.msc
+- sign: win32/binaries/xmlsec.exe sign --crypto mscng --output out.xml tests/keysstore/keysstore.xml
+- verify: win32/binaries/xmlsec.exe verify --crypto mscng out.xml
diff --git a/tests/keysstore/keysstore.xml b/tests/keysstore/keysstore.xml
new file mode 100644
index 00000000..933ab3fc
--- /dev/null
+++ b/tests/keysstore/keysstore.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <SignedInfo>
+ <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+ <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+ <Reference URI="#object">
+ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+ <DigestValue></DigestValue>
+ </Reference>
+ </SignedInfo>
+ <SignatureValue>
+ </SignatureValue>
+ <KeyInfo>
+ <KeyName>TestRsaKey</KeyName>
+ </KeyInfo>
+ <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/nist-aesgcm/README.txt b/tests/nist-aesgcm/README.txt
new file mode 100644
index 00000000..ca0fd012
--- /dev/null
+++ b/tests/nist-aesgcm/README.txt
@@ -0,0 +1,29 @@
+The files in decrypt are generated from the NIST aesgcm test vectors available at:
+
+https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program/CAVP-TESTING-BLOCK-CIPHER-MODES
+
+All have been generated by taking the test vectors with IV length 96 bits, Tag length 128 bits and no AAD.
+
+The test vectors have been split into separate folders based on key length.
+
+The encrypted data is a concatenation of the IV, ciphertext and tag which is then base64 encoded.
+
+Keys are base64 encoded directly from the NIST files
+
+The corresponding plain text test vectors have been base64 encoded and can be found in the corresponding *.data files.
+
+The NIST tests vectors are a mix of pass/fail tests. A missing corresponding *.data file indicates a test that must fail.
+
+Files are named based on the lengths of the key, IV, plaintext, AAD and tag as follows:
+
+tests/nist-aesgcm/aes<key length in bits>/aes<key length in bits>-gcm-<IV length in bits>-<plaintext length in bits>-<AAD length in bits>-<tag length in bits>-<test vector number>.xml
+
+There are 15 test vectors for each plaintext length (104, 128, 256 and 408 bits)
+
+As mentioned above, only files with IV length=96, AAD length=0 and tag length=128 are included.
+
+The encryption tests were created with the XSLT transform:
+
+xsltproc -o <base filename>.tmpl create-enc-test.xslt <base-filename>.xml
+
+
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.data
new file mode 100644
index 00000000..e669fe77
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.data
@@ -0,0 +1 @@
+SPW0JrrKAwZFVMwrMA==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.tmpl
new file mode 100644
index 00000000..8f031d69
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.xml
new file mode 100644
index 00000000..f64efa07
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 3X4BQZhnK+Oflbadzbqec+rz047OsrBKjez5D0pHycYm1vssdl0gFVY=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.data
new file mode 100644
index 00000000..3c9d7734
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.data
@@ -0,0 +1 @@
+RqLlXI4mTfIRvREmhQ==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.tmpl
new file mode 100644
index 00000000..4a08cddf
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.xml
new file mode 100644
index 00000000..352d0a07
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ MzizXJ1XpdKBkOjJL0ZjTnS45MiYEqyDudq9UGdk5ouCp+cgqhjaCr4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.data
new file mode 100644
index 00000000..693cd73a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.data
@@ -0,0 +1 @@
+O5W5gQhu5zzE0MwUIg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.tmpl
new file mode 100644
index 00000000..1f07e630
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.xml
new file mode 100644
index 00000000..d3992511
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ UFU0fxi01a3QrlxBFC2CEMP7hHdM29BEel/TIdnNsBlS3IXwNHNsKn0=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-04.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-04.xml
new file mode 100644
index 00000000..1e3dea4e
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ nt8qqXDQFqyWLh/YqFtmw8teq5HVvci8DtwFTvwB86/SHZwkhIGfVpo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.data
new file mode 100644
index 00000000..8268d364
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.data
@@ -0,0 +1 @@
+UXVtI6srLE1GCeMTOg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.tmpl
new file mode 100644
index 00000000..6132a7f3
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.xml
new file mode 100644
index 00000000..6e4a5d08
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0sJwQLKKnDGvba0K4X337RsMNsa6scIdwQhkRBP4B1OmbSfMN9mQOr8=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-06.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-06.xml
new file mode 100644
index 00000000..73afd418
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ MeznuS3zHrE3g7I+v3dpClVcNoh49ZKeOZcaHzHVg41ETzKf9Hva4g0=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.data
new file mode 100644
index 00000000..692c7e60
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.data
@@ -0,0 +1 @@
+tCY9cJ+BYojs4Au/rg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.tmpl
new file mode 100644
index 00000000..b00460b2
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.xml
new file mode 100644
index 00000000..ac610415
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ IkfKC/uTfXCRxJlA9fcZDjuFrqT6pXtS6LTRUUKmirUljD0gYh9HBuo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-08.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-08.xml
new file mode 100644
index 00000000..ff535dcf
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ UAugpm87kZsMxD1dOOxiFHtgHRuE5ijGDtWoRWM1qssNtFL0xGDt76Y=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.data
new file mode 100644
index 00000000..a0cc9150
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.data
@@ -0,0 +1 @@
+n6Ov59Id/gBLVY/5QA==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.tmpl
new file mode 100644
index 00000000..efc495f4
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.xml
new file mode 100644
index 00000000..c3b5ddfe
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ TNkEnjs/SMhIohs8NE33BIXIrC/c9pGQ80zbWK0yEjvkMe9QYTyfiG8=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-10.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-10.xml
new file mode 100644
index 00000000..1e1e25d2
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ip6hlIUgTLHGcYGLZogalrLA6cgdMnDihYtLNauw2KSYt1kgrc9BHqg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-11.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-11.xml
new file mode 100644
index 00000000..2aa2c08f
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Rpbjlj2BBUg4ScEy+zuSWscO6PzGUzRM/JZKAzk7VBMZmW37nbglnUg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-12.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-12.xml
new file mode 100644
index 00000000..a4588f87
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ trYhPiGQNNXhqG9lkjSHTILnfrRkq+vPzl4VE8JBSFtdbcDUyFL5050=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-13.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-13.xml
new file mode 100644
index 00000000..abe29ec2
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 9MtTxD0gY0mwMz6oSqIAKHzTAUfD/G+H4C8S44J4SLIfFB5amgkZ5rA=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.data
new file mode 100644
index 00000000..345b9788
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.data
@@ -0,0 +1 @@
+EW2dY0v550bbiaqwxg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.tmpl
new file mode 100644
index 00000000..240e31cb
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.xml
new file mode 100644
index 00000000..5f1ff7e9
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0XkmM+1NVzoWtj/rC9xU0ib808WpsD+pYBpoZXdJ6nrbhg+HuRXlhlk=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-15.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-15.xml
new file mode 100644
index 00000000..fb98b243
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-104-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ JX3okZNcwwGv84JKkYufSl9Z1akyXZlMFg3XaKT40CUulDydbMnihmQ=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.data
new file mode 100644
index 00000000..2eeac7e5
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.data
@@ -0,0 +1 @@
+KChqMhKTJTw+CqJwSieAMg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.tmpl
new file mode 100644
index 00000000..0f3616ca
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.xml
new file mode 100644
index 00000000..2dc60c58
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ iyMpn94XQFPz1lK6Wjwc8Zhdu4vtgYA2/dWrQiPHqw+VK3CRzTJINQQ7XrU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.data
new file mode 100644
index 00000000..b46d3f62
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.data
@@ -0,0 +1 @@
+lWlaWxLyhwucxf3I8hipfQ==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.tmpl
new file mode 100644
index 00000000..050756f0
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.xml
new file mode 100644
index 00000000..e28d71af
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ F8TWFJPs3I8xcAsSR7t+I/e9/gWoCRrJDk+LLrcjxw6THZeF9A/Uqx1hLck=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-03.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-03.xml
new file mode 100644
index 00000000..4a12a709
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 52kl1TVeBYTOhxsrAhbImciNbjLJWMflU9qlvKFFMZiWMpyW3ykfZO++Djo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-04.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-04.xml
new file mode 100644
index 00000000..7b52e49a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0LT6fH8Qf5j2awGVq5V6zATBA02KzGF8CyD3jak8wi9ghugWAWYGua0Lppc=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.data
new file mode 100644
index 00000000..f0c12f05
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.data
@@ -0,0 +1 @@
+lkYQ+2WFy7sHD9mrEKemAA==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.tmpl
new file mode 100644
index 00000000..1598f524
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.xml
new file mode 100644
index 00000000..18a85bce
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Xo3CRu6DXcXyKdaYF4zjvVauJ/mBLpG5QsEwnsYzB1qLYI1flpcdK8HqKg4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-06.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-06.xml
new file mode 100644
index 00000000..51485fff
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ lRlMtLok6gR2ylrkSTRhrtpaDH0Y7fsRyoJ3x4ZWFaFIR0SpxV5ICHFHLoE=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.data
new file mode 100644
index 00000000..f39615d5
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.data
@@ -0,0 +1 @@
+nfrDjaWBGzxHEkORF/dSDg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.tmpl
new file mode 100644
index 00000000..130ae8ef
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.xml
new file mode 100644
index 00000000..d329d59d
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ py0zmtgpyWAdAKbvtESBq0mGOHP/oqN3qnt1nk1Yen07XrEYbS6szpu1HAQ=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-08.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-08.xml
new file mode 100644
index 00000000..ad54d1e3
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Zz1+mq7as2y7KvoO1VjyN7wEtByBVe9kNRHFLEgqVP8tknDXA3Xk2NtkZ0Q=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-09.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-09.xml
new file mode 100644
index 00000000..56ca1037
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ R+NscccMK7Zizd1qTTFog2sL5+fNe1SslSgUCBjhiWB4nPZQu0jRY/iB/lU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-10.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-10.xml
new file mode 100644
index 00000000..3f38deb6
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ q/S3eQP9KJRRbY/CPHUS3DW9jsgJVLr0kQWmel5imd6sZZT9Wc8HPvFP/e4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.data
new file mode 100644
index 00000000..a002bbfa
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.data
@@ -0,0 +1 @@
+0y5D6xqQtiaxibao61kruA==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.tmpl
new file mode 100644
index 00000000..740a4c9c
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.xml
new file mode 100644
index 00000000..3992f4f3
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ dv96qglb5BEfecdKqZjxcwB97QArPr4mTqfxM6cbpPI4W9W2FaI737ncsX8=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.data
new file mode 100644
index 00000000..cfe217f8
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.data
@@ -0,0 +1 @@
+RIMN0LyFkvSijsecHQ8rUw==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.tmpl
new file mode 100644
index 00000000..ea6303b4
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.xml
new file mode 100644
index 00000000..2edb9593
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Y8VPzY5kivS7D145ncAdmFzU9s/R6yIHdh7ASx2Nxhfo9Jt+kqP1SA0dIv8=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.data
new file mode 100644
index 00000000..977ac19a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.data
@@ -0,0 +1 @@
+r/9em+y2LIsFwm7/76PXsg==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.tmpl
new file mode 100644
index 00000000..c8bc540b
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.xml
new file mode 100644
index 00000000..acaae9bf
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ GIVJ9BumHtUumxTvwGrqDqDsaoRG/48/ciz9HGBewv4F1wZ+5TcdSE5c19w=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.data
new file mode 100644
index 00000000..e6f32b46
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.data
@@ -0,0 +1 @@
+WSZEXayne1WFe5vUyJfB7A==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.tmpl
new file mode 100644
index 00000000..9e6a0307
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.xml
new file mode 100644
index 00000000..64c84f3a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ vGC9W8poArUmzINh8viFEAW4v7OMw0iBM7AErn150ch0JEastF1NDNM4hvo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.data
new file mode 100644
index 00000000..a48181d6
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.data
@@ -0,0 +1 @@
+3Brbsxa+irzNh/+t/fx8oA==
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.tmpl
new file mode 100644
index 00000000..0d335847
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.xml
new file mode 100644
index 00000000..c120acf0
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-128-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ YV8l0TxcSsnWsBkyN1vKQ1gyx6vMzp64kIBydVfje6IfCu+Lxwtj95aOnto=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.data
new file mode 100644
index 00000000..5c1ef45f
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.data
@@ -0,0 +1 @@
+prdqBm5jOSyUQ+YCcs6uudJcmRsPLlXigE4WjAXqWRo=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.tmpl
new file mode 100644
index 00000000..c97743fc
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.xml
new file mode 100644
index 00000000..369d468f
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ htjqCrjkDcxIHNDiYhcdszGTKS2TC/Zkc0dlLB7zMxbX/sqZ1U8dtPz1E/jCgoCqXGx6i9Nm8owc
+/R9u
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-02.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-02.xml
new file mode 100644
index 00000000..62fbdce5
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ nCIAhHXnqQf3q8lmlqBuH9sAguvGRBMS3ZzW7W9/rHRfrMNotasqOVG9daZuhNZkSAaPZ4iUBCY6
+BHqI
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-03.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-03.xml
new file mode 100644
index 00000000..8b6969fb
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ MvOHdtmYQ+nXnWso+019jglY6nbZSJ8sa1MI11z5bI4bxqCKl4pl8MD1EK+0mkxq80A9+1fPH0vC
+Wxeo
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.data
new file mode 100644
index 00000000..3e8ece1d
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.data
@@ -0,0 +1 @@
+Re6KDzj5F4W/jKxL0FKEJJqANersDm4ZRuDqg6CsMnE=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.tmpl
new file mode 100644
index 00000000..245a2ae0
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.xml
new file mode 100644
index 00000000..b3eaa63e
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 4CnmrN2vYuqB9/OfFLTlMhPegL2ZVGjfKTprvyRShGw3WjcGc420XnxdW6aKijxGkyVvi1AWBVSC
+SFbm
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-05.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-05.xml
new file mode 100644
index 00000000..284ff33c
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Hf5qpz/7aA3/wQNnc/wMgqWRZfVXrDyaQ6eA7y17VdOiaWd62a0SNwa4WFT77b9rkIXgaVilCzKf
+gTNG
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-06.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-06.xml
new file mode 100644
index 00000000..88e4cc2c
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ SYrs9nLHPdgaqWbPAyvpyjLlPhMPJB16J7SVmm4rccmImc/cZoBqSQx/r8bDkYJiaYup0w4ynK1g
++z6y
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-07.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-07.xml
new file mode 100644
index 00000000..e30b81ee
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ iIhywmGzWWaSq5bDm7o8wj+R7q4JJp+UApZ7uLN2VSRh+qEDIHQehh06LnGVTn+7YrYiIW+30dLz
+Z+q+
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-08.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-08.xml
new file mode 100644
index 00000000..f4d36c12
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ C1w7mK6rZSXwy/97N7eVpt5ZT5fL1RBI+VjKpW6gTW/9QmgzZIVzI3WdBAYc419XewZh3PGFi5IG
+G013
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.data
new file mode 100644
index 00000000..1f68fa9e
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.data
@@ -0,0 +1 @@
+o0MvxSWEja0qS7pZcbtRugOT7o3WGYkSTGxFe5HCW4g=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.tmpl
new file mode 100644
index 00000000..24cc5170
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.xml
new file mode 100644
index 00000000..013a2c2b
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ySWLqmt3IPONj1p2RsKR4XkkhtmNWu+UPhHCFa04AwhhoUATAUs06tx3EpbvKOYZWNkriiwm36aa
+PDV3
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.data
new file mode 100644
index 00000000..02ea82b7
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.data
@@ -0,0 +1 @@
+yixLqJ2RH3TG2J7k86ePPJoOAAF9JiN3qjNKeCZBOX0=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.tmpl
new file mode 100644
index 00000000..c4a469d8
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.xml
new file mode 100644
index 00000000..e12e7201
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ve5aeBE1RvM9HLE9aPJd6iZ3tXoZgU7vtFyI9vUCjGEpptbj+U2lA3PpoeoABfgUhl5b0pwxDhsn
+YQZt
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.data
new file mode 100644
index 00000000..97396020
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.data
@@ -0,0 +1 @@
+OsRtu5P4AyNabfVQI6ylVEl2TpH2VRK7n/CxlHiPks8=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.tmpl
new file mode 100644
index 00000000..88789210
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.xml
new file mode 100644
index 00000000..9c46f76b
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ V4uWNJpMAjzhLqt7aDmb0epN++epHq2z1u4B6fMmfJfeK2q4VdKXkYy3AGVzZQhw0w43nWeFjfRO
++js8
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.data
new file mode 100644
index 00000000..d65912d2
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.data
@@ -0,0 +1 @@
+P29X21tMTqTlUou/SwponAwWmhRPglAwHr3OM8szZUc=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.tmpl
new file mode 100644
index 00000000..77ef9cf9
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.xml
new file mode 100644
index 00000000..42438742
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ rmYGebAbvRmClg7oN5HlYdN+8h3a8BmhFvVgmBe6/mwYdVcvXd3H9OByiswNMXg+dYahN7gbW0HR7liW
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.data
new file mode 100644
index 00000000..c36fcce4
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.data
@@ -0,0 +1 @@
+HRat8gOJMV9lXCIoShG0xfHRpFu/+m5H3Dd1EYXfNcA=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.tmpl
new file mode 100644
index 00000000..b09910e5
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.xml
new file mode 100644
index 00000000..135d2e82
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yMNS+cR0ccXqNgfg2hI6v3nA+HPSxetl97nEdT2WeIscpu+M4op0FVi6GLjE9zRLH8usuGtUDnQd
+QXG3
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.data
new file mode 100644
index 00000000..441f4022
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.data
@@ -0,0 +1 @@
+J295hNValvMlC7Kb2AN2rFS3N9/6bJnwZEjKyBS2gy4=
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.tmpl
new file mode 100644
index 00000000..957ca2ed
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.xml
new file mode 100644
index 00000000..a83f2d42
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ r+kmm9jgG8Woqm7lttod8k/kp17TdFv3H7GzuhGjgQoIO6bsHDn5efum/8er6jam2mVeeqfXBzv5
+NoZd
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-15.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-15.xml
new file mode 100644
index 00000000..57018f5b
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-256-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ /ykp+tJ5wfIW6E7eYM4L1wRed/hMZYI0MQD7fh0pnweu4jGJs49dT5PcRRmzGjUgM3H2rmwZADAa
+/zky
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-01.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-01.xml
new file mode 100644
index 00000000..526a0d16
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 6WCYw52aqDUiEZNVtCwlFVggVktBxSXGqo/0Njx8URkXdyubzVdLC+H2tMohU4ad3wxPdt+tOu8K
+ds4FZYL5RDMeObimaoFZHtFV19Mjcg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.data
new file mode 100644
index 00000000..3ba758e8
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.data
@@ -0,0 +1 @@
+PzuwZE6sh4uX2ZDSV/WzbheTSQ28E/6k7+mCLOu6dETM5N7lp/Xf3yhflnhXkoEiAMJ5
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.tmpl
new file mode 100644
index 00000000..3c5fcb49
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.xml
new file mode 100644
index 00000000..3b858532
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ itczpKm4MwaQI4xCu7W2cqR5r8orEa2wpMditpjdVlkI/uHRAfagHWMzLJG4XX8DrEikd4l9UStF
+cvkELLfqTXi9yxNm/LoC/czuV+H/RA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.data
new file mode 100644
index 00000000..22ea6117
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.data
@@ -0,0 +1 @@
+/Rsg1Y5R/pPRd9tRhBbmMiEt0e/7a1/PUb2UI0q5akVdjjyEygOybVjIhntqHMOQgo/7
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.tmpl
new file mode 100644
index 00000000..4413f088
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.xml
new file mode 100644
index 00000000..251f0bce
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ fZKA9Z3CuY8BlQmNMJgNJjQTjq1CwzR7mzrzL3j/7A12hrkkf473JYtyhZJ22dM+tnDq+z6pAMMt
+ub78z8HWy8pJznDT3bdS3DtDjyhFug==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.data
new file mode 100644
index 00000000..c52cf312
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.data
@@ -0,0 +1 @@
+3kIZnEd7ad4oVxADla77JzXIMoMxEJ1kfq5TXFQgCGnnqLyC9GH8bEdHSCl8NBvSISb+
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.tmpl
new file mode 100644
index 00000000..40c87f4f
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.xml
new file mode 100644
index 00000000..2afe1f27
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ +WUdQuv4Ro625Fgp+Slr7tPTtXP3LL3krYMuNOjvbPcXjo0ng//17INZ2vZ9+KcNj4bSwzn54exZ
+0jTk9hk4RqxGtFXp9IOo7t9u9LYb4Q==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-05.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-05.xml
new file mode 100644
index 00000000..32b2c32c
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ te5EVr7pmrhXEg0aChS8YjJsmvmWC4lgGNmMeS1uBFZDUAXWXmDVU7TqczrOfc/c7wx9hqbzBlyr
+gBKkyyy5j7Nik74YpornFg/ISMycyQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.data
new file mode 100644
index 00000000..d660ba75
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.data
@@ -0,0 +1 @@
+UXJ74GuV7QTsH0Ear1shTFjyF4LL6bYkyygimruPnY1nO5A8EuuRR8QMxY6BUl2G7dbG
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.tmpl
new file mode 100644
index 00000000..a9e95f99
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.xml
new file mode 100644
index 00000000..74f3a1ed
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ GL6V0yyQgpS6kI52oY38ZdDY6UhXdmI80KO/d9BUgu7mTpfL0Ighl4AGEQgRmEOaEeImw/uBmEkj
+Dx/KmonjD1KDSey7S+2X6f6M4WFhuw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-07.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-07.xml
new file mode 100644
index 00000000..97805a81
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ tPjIXA10OpmmzIfjSFhKYR375Gw6fL3O0WADKUUZPLjcDVUQgNFitHr32lPvTLGJb8AaXcuOON2X
+hLhugE7jZeSLo7FbdHi4hfjMtSOS8Q==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.data b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.data
new file mode 100644
index 00000000..7aa0f544
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.data
@@ -0,0 +1 @@
+OOFZGSS4w+OucJVXZ70zUlIj0wgyRdDauCv1Xy+aDPietnrH//VnkMChz9F9z9qyT6gh
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.tmpl b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.tmpl
new file mode 100644
index 00000000..86da9ed9
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.xml
new file mode 100644
index 00000000..59b4521d
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0/VPzV16hTd//3bVqEZMUbU4Iy7qr7PCj5J3N3a8BA6VcMsQQeppooVw8VvShKzdK/LnMtXjf8T3
+GpiB6V8yiKKuO81w1wwGUrQWIyh0cg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-09.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-09.xml
new file mode 100644
index 00000000..f54b8cec
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ kPqIpdSUFU1xGGcFSEBJ+MXUnO5U16TzGAG/Cz97Z8LBjllBF9QTI4+A5F5jIvOJqv53UavRW+xP
+8PYgmt0oo4KxSHncWdhVGC8qMkVpzw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-10.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-10.xml
new file mode 100644
index 00000000..0a1b0a7a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ o+dnUjYuE+599aIHXheJ4KJKcruoxfd1KEzDEkPWLvR023O/c0EL5Kv4DIYOFHCqmCRxGeVY8Tvc
+TpzYAq3tGnv8GvZMXgh0HxCABk+J0Q==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-11.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-11.xml
new file mode 100644
index 00000000..a909ba9a
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ M6QgPIqFvIMRfbuKGSEKIe8Aug4Xuo4dI+yn+PLkzbE8Lj+HqcoONhc2eW/TcgWY6CgyiaqwpK+v
+wTp8/wQ3aSJwNk9zerLzH0IaSPtrig==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-12.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-12.xml
new file mode 100644
index 00000000..ab3c26d7
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-12.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ W6yOtQMKgc8ngpdM+EB5Q95UP6vVxtLCF6JWe4lYR7MDHkb+9qILlEazldOnUWM+oU3EnDaAWmbr
+Rm4CjA7aFQ/qrtK6KuRZ+PDyj8LCeg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-13.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-13.xml
new file mode 100644
index 00000000..d3a3407d
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ n9N2q9CeZZmYavuWgTqNfEbQo1BERdurSKVGy+2WjFdGRfppb/qbXWLOOU7jWiBMYu340Ex+9iHt
+UZw7enMY8lnmIZPx7v28bsGs4wX3jw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-14.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-14.xml
new file mode 100644
index 00000000..98944f19
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ xUE23BUl7U9tzkugM/CU4nvm/fYrkBuYBHG15NGe170bjr9bPyJfPg4maeAsdGMPQ0clFYBr09N7
+myDyGHCu1ICxq4qPZh2QfH1FvY0ogw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-15.xml b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-15.xml
new file mode 100644
index 00000000..03b76522
--- /dev/null
+++ b/tests/nist-aesgcm/aes128/aes128-gcm-96-408-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ MTugkia+5pQhf1y8rxi+Dt/ht0/DJ9RHkJNHweiyLyTu0MVFrHby2NSPPGc7MAscLNiURVwiMuBS
+8Hjwr3H0lhg8xeIpN8FbeASdfKshgQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.data
new file mode 100644
index 00000000..e8c277af
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.data
@@ -0,0 +1 @@
+e6w7z5hKn1VvjX6f2Q==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.tmpl
new file mode 100644
index 00000000..aac7da18
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.xml
new file mode 100644
index 00000000..3be9b60a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 8Jy199O6gbs73ABr8TbyYugAx+8t3DPvu0waRgKWVXhGDWvGHl7oGSU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-02.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-02.xml
new file mode 100644
index 00000000..edf90520
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ gixl0XG0zPoA+GxiLgaHA0ITGBIJRb5GRf2AW/7+oBrjcTu0tTRJ/ss=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.data
new file mode 100644
index 00000000..02729a7b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.data
@@ -0,0 +1 @@
+li/5NXbi3N/5ROcdkQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.tmpl
new file mode 100644
index 00000000..4b8da466
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.xml
new file mode 100644
index 00000000..adda236e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ L1+eTQZsaT0uT2MWqoDjxE4fXlzuU6Rn+lpuHbW0O/OCANeaZJr3MRY=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-04.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-04.xml
new file mode 100644
index 00000000..da718c67
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0UjKA8OSR5fjulKx1Lk/lBB/qpyI3ZisIdm3Q/p4IfGlCfRhe9Dz6C4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-05.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-05.xml
new file mode 100644
index 00000000..1ca68387
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Gnq77Wct4mQJrI2zU5iJ9qlIdlU8h9Z3WUPTmkvs0zrhsiBjN8hFjSo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.data
new file mode 100644
index 00000000..6274dcd5
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.data
@@ -0,0 +1 @@
+in74306y4UhN8SGT2g==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.tmpl
new file mode 100644
index 00000000..1645d9ca
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.xml
new file mode 100644
index 00000000..32a5758c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ xxaKeE9ZJtrC0MO8R992hdi7WAmM5jQvDVZm2DFWFgLoJvC1ihgjO3w=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-07.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-07.xml
new file mode 100644
index 00000000..392563a4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ A1AnsqSBdI1KRXkV27zdigXqOlHWDp/dBdcTqFq6/1LhQkCNT44AXx0=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-08.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-08.xml
new file mode 100644
index 00000000..451648a4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ s2UpTXwjGZB43gC8OcpCAHSQtKtymwzfggsO9Lm02Ra9vtTlGdfgKzw=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-09.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-09.xml
new file mode 100644
index 00000000..7fb53c6b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ XLRoeHA5Ve5FeOW1mMrOdvTMOZkxovtjC6ce9jA1wuPk+tYHwx0q834=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.data
new file mode 100644
index 00000000..515295db
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.data
@@ -0,0 +1 @@
+azcAD0bJXqSnmNurAQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.tmpl
new file mode 100644
index 00000000..c4dd54ff
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.xml
new file mode 100644
index 00000000..6f749ea4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ OhkJ/vpNROkg+T0WrvXrJn6B2s4oWL0M3mGhh/44ci3OxvHQEwHjHU4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.data
new file mode 100644
index 00000000..696d0c92
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.data
@@ -0,0 +1 @@
+4cO+5nM9OIigvKU6lg==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.tmpl
new file mode 100644
index 00000000..b3935d01
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.xml
new file mode 100644
index 00000000..91564a84
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ U6NxMLAYBEetGM/UEvkItULi5+RFEvIW1IvcrEqqyBp7n6Wjr8J/c8w=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.data
new file mode 100644
index 00000000..eb83df3b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.data
@@ -0,0 +1 @@
+/jjdnkUClZVxHif3YQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.tmpl
new file mode 100644
index 00000000..fab3daca
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.xml
new file mode 100644
index 00000000..8dc4c608
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ q7H0lD0esXUQJAqa3QgyNOt8027BUdJWuc1afyv37ND/g+qufsjm6S8=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-13.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-13.xml
new file mode 100644
index 00000000..59671184
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ tzUUN+W2WwJ+ulNZovnQPpW8iuFUCdOhI/YeBgWAkuzjQbZVCNVD9Vo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-14.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-14.xml
new file mode 100644
index 00000000..2b00e11f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ hZhKE4M/7WzZCxy/69BDDvOJg6NRH+xDNpWbh4MzqgPRgUfbvkYgCgI=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.data
new file mode 100644
index 00000000..e42dcf2f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.data
@@ -0,0 +1 @@
+2ltL+ez0NlOGQcr0yw==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.tmpl
new file mode 100644
index 00000000..8e7e8329
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.xml
new file mode 100644
index 00000000..b505a22c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-104-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ LEbHHJj22YZWTcwDNP64RJtgUZ3VJD59MxOAUI9tzk/IVg3nStTGFJc=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.data
new file mode 100644
index 00000000..520de578
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.data
@@ -0,0 +1 @@
+ma5vR5swBDVP8YzYbAtu+w==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.tmpl
new file mode 100644
index 00000000..2007d974
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.xml
new file mode 100644
index 00000000..728c70cb
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ qkw4v1h/lPmf7nfVEyrpW9NZxEqu+mNIYyyvvRnXx9WAmtZkgRDyLycufXI=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.data
new file mode 100644
index 00000000..ab91a013
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.data
@@ -0,0 +1 @@
+fYG5SFFcl1MICG+pYPfMmg==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.tmpl
new file mode 100644
index 00000000..9eb9bc88
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.xml
new file mode 100644
index 00000000..4ade0716
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 2WD3S+knWAoun1fvbjcg52trS/Vnzprlf0qsn/J3VW/AqUtOp4ZGXKUUaqQ=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.data
new file mode 100644
index 00000000..a74a1111
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.data
@@ -0,0 +1 @@
+KKpGOT4bi4eEsDXzXR6p+g==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.tmpl
new file mode 100644
index 00000000..ef65dfd8
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.xml
new file mode 100644
index 00000000..7fcc87f8
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ HfFBymh1eu+A5BTsLzxW7utis5PFcdEmF3hl6Q+lYKNHTrN4lb67mQ1evxQ=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-04.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-04.xml
new file mode 100644
index 00000000..d168499d
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ SsRQ/xZj2njllv5rkh56qJ7znbbpJwch+5EKEGmCEsMhB166q0wb0nGbpbs=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-05.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-05.xml
new file mode 100644
index 00000000..1551c94d
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ vN44o8zMUd9YV9Be6QKv7PGmg1BKo2Pf021L4maA5E30AhLlZo8cuMbM8bI=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.data
new file mode 100644
index 00000000..e40fe98e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.data
@@ -0,0 +1 @@
+zhw5GwGDcZfpYm157shguw==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.tmpl
new file mode 100644
index 00000000..d9761fa2
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.xml
new file mode 100644
index 00000000..aaeee5c6
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ iP2JO0i7BVfDjj/DOiV9OPK6Cyi/Kzlckh11562Vv3NWRX+yZhNn0zHbBSw=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.data
new file mode 100644
index 00000000..d9828607
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.data
@@ -0,0 +1 @@
+nQLO7WcnBvWzktu5d+IJyQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.tmpl
new file mode 100644
index 00000000..8737058b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.xml
new file mode 100644
index 00000000..43a6ca76
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ PU66/ggAzZETRh+Q+9uk9AeWB/yBtutE0oboB6ao6JvWswU1TnXqO/+epVw=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-08.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-08.xml
new file mode 100644
index 00000000..60065b8c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ lB7tN06BoCmcMJ1FdUK0/M5WnBgCx3pEWvw99+ynxDANrzDFyyfkN4om+ac=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.data
new file mode 100644
index 00000000..150ee27a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.data
@@ -0,0 +1 @@
+FZrY9d080PYOa5JszyVXEA==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.tmpl
new file mode 100644
index 00000000..f1dd4b9a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.xml
new file mode 100644
index 00000000..61cb5128
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 8l23UY0IV8T/S/5a0OVMe+x+jaWLz1b+4E9thS4lUZ9Ah2kVUcee4DNyX/Y=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.data
new file mode 100644
index 00000000..f0b62046
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.data
@@ -0,0 +1 @@
+YEJq0PUmo4hbSLujGFzBNQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.tmpl
new file mode 100644
index 00000000..c2c994f9
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.xml
new file mode 100644
index 00000000..7352dbbb
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ BunrITt0HYCsKgxI/PBi7Mj4SfBR/nVLgyyAr48w/rwlwvH2iqx758WclOo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.data
new file mode 100644
index 00000000..6bf145bc
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.data
@@ -0,0 +1 @@
+QfT7y6mDTRWEcRXm0XCEoQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.tmpl
new file mode 100644
index 00000000..a994ee51
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.xml
new file mode 100644
index 00000000..5ac19936
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ o/Iwjpimj+B6w1wijI/pWVvh3ocPyBQpU+97KR47zLUBNGePrp8oMEYsbWs=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-12.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-12.xml
new file mode 100644
index 00000000..533edb93
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ UfdobxWSv6KN76Q3Sn3xdXAKfnKBYtdPgHa28OlNHJB+nNKwsYXLoQxo8XM=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-13.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-13.xml
new file mode 100644
index 00000000..14d8c2ea
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ +y8k/u78aSw3hzbUJWQcUm4PcVwuJu75tIBvdAGdNAGhJSWpdcXLYRokK10=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-14.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-14.xml
new file mode 100644
index 00000000..4972cfd8
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ WtHmOWPVh4Gorjj00J6GFKHNz6ZcwoHQioG99zaMcPnXpwRytIu6l4e7XtM=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.data
new file mode 100644
index 00000000..86d9f468
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.data
@@ -0,0 +1 @@
+lEnLqFMEbrDAAQQTSvoAIQ==
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.tmpl
new file mode 100644
index 00000000..7b24bacc
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.xml
new file mode 100644
index 00000000..a4133991
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-128-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 6wPu66QdfDIYRHEL2I4+1nCx7QiEL505MUbj2jdIsxcCvJqbw87ebhlde/U=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-01.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-01.xml
new file mode 100644
index 00000000..71c0844e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 89EOyoJPP4qOCH3PJzx4MkjJHqEGR0X7XCOpX/Y3Hf4ACVtOa2lxXafHOQkhS4dSbre+k93Crh1j
+B7f3
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-02.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-02.xml
new file mode 100644
index 00000000..70048db5
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 310vZIUX/ciqARenl2VKFpjHxh3xoLqXAAzl4wMV1fEUleMZlkbzKqRGcXUyfL3XPMMI2fA6T+pi
+87Oo
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-03.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-03.xml
new file mode 100644
index 00000000..d24b810b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 6u/ywA7//eZlZghUpk4X5IZHouwL1epm0hzh67om22trkBYYvIUR3Thrv+EEZ53zHLF76dBx326m
+9ER7
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-04.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-04.xml
new file mode 100644
index 00000000..07b9922c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ MOy/W7UXGMDjAMbUnseVb02ZFWSh6IxHFOgFj/mV++z5004UjuQN8Pyxlm5z7NEP4SCC7nFG747L
+nLNe
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-05.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-05.xml
new file mode 100644
index 00000000..4a517f57
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ fZ9k/wiPTj9N1yaNWaMho/TlfgIyIQ4eaZsV64J1uEToq3/w0VlNtZJMvDCQjV08MI7xW6Bj3yso
+VhgI
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.data
new file mode 100644
index 00000000..b7909a5c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.data
@@ -0,0 +1 @@
+ybqr8wS3vTgQxt8DW9NmkmswJceeRRcEd+N/1L1nA7I=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.tmpl
new file mode 100644
index 00000000..3ae28b49
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.xml
new file mode 100644
index 00000000..afbbee28
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ VX700fQoCEZGy036wzfhnBXSetPGEpZMEehgGVM/xnyrrmsBe/0b4Vr6G5RilKd1rMuN9/BX7jZA
+cA/I
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.data
new file mode 100644
index 00000000..b04ec05d
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.data
@@ -0,0 +1 @@
+NEHJu45DryFi1+J+1YhgI6/VZbWyYwyaTPnNbtx05sE=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.tmpl
new file mode 100644
index 00000000..90a1e588
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.xml
new file mode 100644
index 00000000..f434953d
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ QZGfmVdgf+4I5Ya6KuQyRrGotJFzVlqSm82OFypqqUUOMBYw3Hv86GpdpQiTPj/qH2lDf58Z+PQy
+CEyU
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-08.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-08.xml
new file mode 100644
index 00000000..3c755181
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ G4FmQYr2B8YjyJ1cPawYWERJfG9upGH5bwNbqr8NN2ZiC4TQctfaGWgQ6vtPETiA6G1cNq173LL1
+Ce0v
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.data
new file mode 100644
index 00000000..a770279f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.data
@@ -0,0 +1 @@
+SCFElLbFeRo69bedg0fhJkR7R2p7GtfQ19eTTYCsEwM=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.tmpl
new file mode 100644
index 00000000..b68951b4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.xml
new file mode 100644
index 00000000..378dff0b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ NxDeMh/+5/X/pBY0faIdaHgSm8NRFUWr5mfme1kiMAbisqhghyZre4b/STnDxLtYRZ8prsr4Td5t
+9piP
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-10.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-10.xml
new file mode 100644
index 00000000..70065a48
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 5rPbuUxWDf6/G7or2hQv2xKbBNmlR4TVFpKDvFj/y8NcalskMuvkJ8XIoOcUCTsKSVx89h4Wvas8
+4pEW
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.data
new file mode 100644
index 00000000..0a5e9a49
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.data
@@ -0,0 +1 @@
+xBlVkvPP3Z/v4xwJTi9OMq+nWmR5YtHHTz1o+ikpvqU=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.tmpl
new file mode 100644
index 00000000..f61fad1a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.xml
new file mode 100644
index 00000000..1c1f206c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ FpQWbODry6BmU6w/A0qGjWM0Pvz/Ll0b6lvdx4s76yBadVm10h5PFs0WKN0oPAIfuNe+mv5aDn+J
+7wb4
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.data
new file mode 100644
index 00000000..a3b8d401
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.data
@@ -0,0 +1 @@
+cNcgPPcYDmUOecIj06IvAV23FJ8/8d75KDTSxuceS9w=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.tmpl
new file mode 100644
index 00000000..5907e8ad
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.xml
new file mode 100644
index 00000000..72569c90
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-12.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ VXkoHw/E+LcJZbb2vVM1r4s9eFXe2cRiFHMdVQEkTlVf+FTOEQhRTnhyRmnuMZZOBbYXCe/4Qxl7
+pz+z
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-13.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-13.xml
new file mode 100644
index 00000000..c7b6980e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ q77IhO3Hz0qO8tHZeLVvDoOI+/icN3LHs76NZXb15xxvq0HxYWNSFIcqypm2w2o8OOswRsz5qBBd
+kp5d
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.data
new file mode 100644
index 00000000..faa5609e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.data
@@ -0,0 +1 @@
+lTymgyNSBjIr01zbjdfXWuxNAYXZexJHpep5+UoXXt0=
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.tmpl
new file mode 100644
index 00000000..0bb04135
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.xml
new file mode 100644
index 00000000..5b8a612f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ HPFXm/5VvQIYgxOFtH5BuVOslHEj0g9xsnVvMbCqUvXiTZUXZ+On92fxBtDxbuBGQjvq0nrZzgBx
+Hj+2
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-15.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-15.xml
new file mode 100644
index 00000000..d87d8546
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-256-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 4e1V25jnqsLUKh3Bd3GV30OXDcY4vkqGU9a+Yin9UMNgQE2HNm67Z9DvVmZQOLetpHHuI4b/qq14
+wKS+
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-01.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-01.xml
new file mode 100644
index 00000000..423d21c4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ F4F/KCNnlJYliGjide4L1vvHNdelxg/ieWyp8URxlVzcJgthU2ukdTWdrlIqPf+AlcsK1hkoq5Fh
+O8EEJFe0HSUJpzsPNHem43MLzD5TJQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.data
new file mode 100644
index 00000000..d7f122ca
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.data
@@ -0,0 +1 @@
+x+FnmZ1lNGIHAWNR6g2GIRDQYJYG252Q/Ki/IoBZt89Yk3il29sHMQ19CcsTgW3wBES/
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.tmpl
new file mode 100644
index 00000000..2731480c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.xml
new file mode 100644
index 00000000..01cb03db
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ SDdRsDfG3KH/bU/4r2kfE/ZFoU1C3mJz0WDKRPuKO+0k/4clfkY0RuBPMUMsw2wGA0Eq2rBjKDwU
+5O54qzCb+/7fqNk+FZRFdyO9ULz2Pg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.data
new file mode 100644
index 00000000..5e074881
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.data
@@ -0,0 +1 @@
+0O5xjavheFk0kUxsB7hNELGPfaie4yKjtb4C4K4Nku+hjZCK2/t97i574so20YUVc82Y
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.tmpl
new file mode 100644
index 00000000..33c84aa7
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.xml
new file mode 100644
index 00000000..dbe5db7e
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ J1//IRTRvWW4ZAYD0nZpODjLIhBbhKmCbzx1QxmPq+0Oc9Iaad/J9/lYcU52YRjfWCXBx5WN8pxx
+or8FCiKSuqIrsLGk8yW2lLRLD/HIlA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-04.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-04.xml
new file mode 100644
index 00000000..4a64266f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ LVMrK5g10dVAZ1ZjWZanO23OELu1z8CJYw9jbJD7qaquO1rKwFJe2SgWS/YU55uFqggsXjLqOLDU
+wPAu/vqMS9URwU+kjcqQvtiA20ZaNw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-05.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-05.xml
new file mode 100644
index 00000000..d1021f59
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ GLMcWHG7F67ElkRmnP+qQleRph5iSeCfAbDwjlOvwxcERI9BvzahFEOtTArXcIuLbJeM8ChWVzZe
+5cYZWXdbCkibhUKgM7BGjqTKzquX1w==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.data
new file mode 100644
index 00000000..6e279619
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.data
@@ -0,0 +1 @@
+RN4BSXO8xGATmXIX1fkhYgpjZslTCbGhI5gYRnGSbT0iFZIIflSNqns1Q3Jgxpin4j0D
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.tmpl
new file mode 100644
index 00000000..33f921d8
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.xml
new file mode 100644
index 00000000..3e3baf91
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ jIaUyqvaJAZCS5nvTGcBWnRZXtQjZBCkUoSWL2sgDMIftN0TDeKDMqP/JPARltP5UP/K8WXfMfybsjQlS58lKUHCqTCqV6FYyBQO7wJ5ew==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-07.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-07.xml
new file mode 100644
index 00000000..7065761f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yya75A8cbF+gXuDI5/LC7Cq2nyy9C+XUaobDBEErQlHUcicyznHDRinFIRT0BG3C9mGhbe2D1SXQ
+yiDaOVuLX0+H0/X/nLLGvRCji1NYGw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.data
new file mode 100644
index 00000000..d7eaee4c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.data
@@ -0,0 +1 @@
+mu2u6g+XLSqN7/ffx3cnic2lzG4B/fYRh0Je6aBvxxkJVjPLsNcNTCg0mRvDDVWzOJD+
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.tmpl
new file mode 100644
index 00000000..27c9321c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.xml
new file mode 100644
index 00000000..c0ff216f
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ffOiTFAnfn3oWlJVTghGqksaJH2ao1iVOSAdXoVDldApq0Ibnsgi5EdjD26iFUm4noj1ZhG4BKL+
+DwqgDpmQ8LDn+LITCRB4jKUa/D9oxA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.data
new file mode 100644
index 00000000..38e4d73c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.data
@@ -0,0 +1 @@
+v1sJnMN7LgcpTmMsqEEIviE3/VWuR0sxOiYeYz0vhOl3SAwm5KpMdVVw7Y3XHnI1Ie+F
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.tmpl
new file mode 100644
index 00000000..b42f4d7c
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.xml
new file mode 100644
index 00000000..53e23159
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ N5kET/4ruL1T+hvgMA2+GQNdiY0qxdYlTrmVlDibK7Ln/VxSYttX6aloDwW/RzjSmGNEciADtW/d
+h/lvSHwRFwZle5qDo7vRBYlQnwtbrw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.data
new file mode 100644
index 00000000..e8d6ef8b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.data
@@ -0,0 +1 @@
+x4u6K6cVnc6RQIxqNm39ZrcjIV6jnOLmM/RahHygMuJdgcZ1DTaCgXhxKSKdgZisvGRz
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.tmpl
new file mode 100644
index 00000000..d6654a5d
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.xml
new file mode 100644
index 00000000..56a2473b
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ xTG40KLdJF+PlvaOxbiZ6RR5pObbIzJWJNMk848oo6z0fZdAxK4FLKOqmpUZ48iX3M2Q5yMNgDp4
+YDYoFk/BYaFOVWeIHoH1U+9V02zKag==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.data
new file mode 100644
index 00000000..708457ea
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.data
@@ -0,0 +1 @@
+V0vkO1Mk3RvrEEyHHweOtLD4AZ9Z1/iAF/UX5/F85L8H8DyP7zVb0CeUqt7QjnNO/c4e
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.tmpl
new file mode 100644
index 00000000..6c3dec97
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.xml
new file mode 100644
index 00000000..39163756
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0tdI4g9eCHEWMMllBmJ455mS6VDUvho7YM2Wb3pECw3D7ItsAZWR+kMscogq3SW8jzF+YO1gr23c
+7GnOzS2ABjOVhdPzJHUjQkuOirNzXw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-12.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-12.xml
new file mode 100644
index 00000000..046eedb2
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-12.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ nVNSw6nOexkAwiAEFpkjb2EZeImRejo2L2l4zj5u7N/5OS5KLw6QQ2jJpHExhNVB7infrIzJpd0L
+gyeDgmgJuw1xi9QGPQp20vIsiG+vkA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.data
new file mode 100644
index 00000000..e80b2d7a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.data
@@ -0,0 +1 @@
+XtdTDCBy3whWeTKUZpNEGY3w2sjoIrdY9VglK0+YhglyX7HL9hYhijH2O3EpB9q2biA5
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.tmpl
new file mode 100644
index 00000000..55be23b3
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.xml
new file mode 100644
index 00000000..8fd94321
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ql3F6lzK8JTBj2E2gc+A3XWUhVflM6zeHM/InYgU5onZwfk3qDCzDglhqovdkLIZRxCH4N8b+s3X
+yi2nkA9s/Y/wvZt1LoXwdIGYcuYjng==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.data
new file mode 100644
index 00000000..8bbb6c53
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.data
@@ -0,0 +1 @@
+mdYUIs7+3hyTKMFyTq7EVrRkvUdmyElMh6R/wSYE2zNqeyqec7T8SN3SJSaWdKrYD/bB
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.tmpl
new file mode 100644
index 00000000..87ad721a
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.xml
new file mode 100644
index 00000000..76b6b7a4
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 3IWLf8kTBaAGQ7Nhu89z/ZEoWacr+nGAmD7nkfa0ejigx0btDfwfKJrGNfzseF3CSzp7PO7g04D7
+p+putZrgVJKrwTHZ5WtakLgfcyc4gw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.data b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.data
new file mode 100644
index 00000000..563a76f0
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.data
@@ -0,0 +1 @@
+8sxYrv17qvGYWMEdsUTTCE08tfBy+jBTdfdgycSQZGBsjjHNo0UW7RboRLYoWgy8b7Jk
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.tmpl b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.tmpl
new file mode 100644
index 00000000..223c0080
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.xml b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.xml
new file mode 100644
index 00000000..ec7fd6aa
--- /dev/null
+++ b/tests/nist-aesgcm/aes192/aes192-gcm-96-408-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes192-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ JMGkz2QZSuuI/p4Yb4rB5FqmzT6JneTKK+w1COdVlSPCaIuCMiyu54nrybRH7YyuLxT1/mtx7+3y
+zieOBJnphORGdd/n/ePdHjJ0oil/mQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-01.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-01.xml
new file mode 100644
index 00000000..f56c3bb2
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ y1k0TSsGxK5XzQ6kZquTXJNVXnhrd1Y3o9hzOsu1ZNivqpnXyi4vkqk=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.data
new file mode 100644
index 00000000..79584421
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.data
@@ -0,0 +1 @@
+W4cUEzXyvsrBpVngXw==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.tmpl
new file mode 100644
index 00000000..27b0876b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.xml
new file mode 100644
index 00000000..d9972d8b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ xbYN2j8zOxFG6dp8Q69J7Brjc4ogdVA01m+Atu8tiDClXrY2gKjf+eA=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.data
new file mode 100644
index 00000000..3ca70c62
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.data
@@ -0,0 +1 @@
+Kn4FYSGRyLzi9SncqQ==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.tmpl
new file mode 100644
index 00000000..23237024
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.xml
new file mode 100644
index 00000000..2c0c79fc
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ BWrpoaaeOK9gOST+MwE6SNnqDfKRHVgycVuPnMIjA+l5zRUkGH6fcP4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-04.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-04.xml
new file mode 100644
index 00000000..d03470ad
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ o153Qd12UKkTMMxR6AtulP1ybecDFmEVqo6lxvGYx3RUPnzVQoacJVY=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-05.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-05.xml
new file mode 100644
index 00000000..8626c707
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 9cXh+RCUpWXadXIQVtHWwSzB3xM48ir2VOypusnxmdOie0gGAitzDJk=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-06.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-06.xml
new file mode 100644
index 00000000..da84dfe2
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ UwiNr5kaOQln3oiSquEtI9aYwAJdnpCfcfjFIPr0Xy6x73qkHJgj1EU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-07.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-07.xml
new file mode 100644
index 00000000..ca09a525
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ jFIILi6+H6q+uAxBNTNA4orIJJI9nRVPLNYyBCBRjWzbuB1jXZdewdI=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.data
new file mode 100644
index 00000000..fc8901d4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.data
@@ -0,0 +1 @@
+5H1GAaplKNwQrpgp0A==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.tmpl
new file mode 100644
index 00000000..e26c7005
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.xml
new file mode 100644
index 00000000..41ed3a0e
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 6VZ+WUwdFg1GNnqhKRc9lhpx0bzf2c0Y1zBYWBrgnLxst7rTobRZJvo=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-09.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-09.xml
new file mode 100644
index 00000000..70e88898
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ hccldo6ptbMgyYQq0lCO+TNsc/5s6Cv3CUsfNRG4cx6L2ZcSoxxW2VU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-10.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-10.xml
new file mode 100644
index 00000000..123091cf
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ xE0Ny9zdM8QUhb7xLjNmpmeIojXb1fqpaabKRCIIPQ/zu+mnAd12Bvs=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-11.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-11.xml
new file mode 100644
index 00000000..a4b7afc3
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ TPWJKLtxjffrbhj6Hdc1PtzGgLXORrFqq/gMAmIRRGyotULfKsWqnAg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.data
new file mode 100644
index 00000000..6184c7bd
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.data
@@ -0,0 +1 @@
+aX/lIOyR9VNnMuPvrQ==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.tmpl
new file mode 100644
index 00000000..9aebbc12
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.xml
new file mode 100644
index 00000000..c6bc8c42
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ONVYv1b59RA66JPJR/os4hw48kd0KYC2q6PmbLWqmcTmxX/vQESA0zg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.data
new file mode 100644
index 00000000..d2037b5a
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.data
@@ -0,0 +1 @@
+V5GAvnzc0UQRf8RdnA==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.tmpl
new file mode 100644
index 00000000..d5b70935
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.xml
new file mode 100644
index 00000000..02761281
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ HKmSSMrbgY4NUIDwDhYcnKKTfN7tIE3P0/iyzoxBOGkWYq1Ug0m04xI=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-14.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-14.xml
new file mode 100644
index 00000000..d6240f37
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ hmAjwCKNtZkaec+8lXhJyyXAGuApAkQJGv15k/aDghGewUbqNNPlheU=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.data
new file mode 100644
index 00000000..3cb216d4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.data
@@ -0,0 +1 @@
+ZElvV2weS8rRkqe5KA==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.tmpl
new file mode 100644
index 00000000..98c3642f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.xml
new file mode 100644
index 00000000..720d492c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-104-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 8dWHX5aYIxO2OK+BgXJeT7oJwoJ3DoBdQW5clao4AJhxOdg3DTwLuVM=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.data
new file mode 100644
index 00000000..5af897d9
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.data
@@ -0,0 +1 @@
+d4m0HLPuVIgUygs4jBCzQw==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.tmpl
new file mode 100644
index 00000000..f96dff3f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.xml
new file mode 100644
index 00000000..928f37f8
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-01.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ RzNg4K0kiJlZhYmV0seBEKx+jxB8DfBXC9fJDMJqN5ttmO8oUurYzoOoM6c=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.data
new file mode 100644
index 00000000..5fb2617b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.data
@@ -0,0 +1 @@
+aXr/LWt35e1iMncOQAwerQ==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.tmpl
new file mode 100644
index 00000000..2d296e22
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.xml
new file mode 100644
index 00000000..479e6890
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-02.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 7+JlbYeMWG5BxTnE4N5kMCrC0EBI1lqH0q0J/jPL2NL7ijoD4wwesbU8HZk=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-03.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-03.xml
new file mode 100644
index 00000000..186b7aa3
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-03.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ g1CQrtlVLb3UUnfin2YH1o4izPIZKNsJhr4SbvMmF/Z8V0/Z9E73b/iAq58=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-04.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-04.xml
new file mode 100644
index 00000000..2893b4aa
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-04.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ FCTvbRWWfAVQnlDyhJL+nlNRDZbZwqoA5JZxEjNlbda4l2MxO0/QEF9QYxA=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.data
new file mode 100644
index 00000000..79e28cd5
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.data
@@ -0,0 +1 @@
+wKSWddCYcoo4gxAIvdxkow==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.tmpl
new file mode 100644
index 00000000..65f3cdce
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.xml
new file mode 100644
index 00000000..82fb953c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-05.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Xa65Nl3pwydMc6PHjNOpHxZFZd1Ys2pQRJGBFUHsSzY49s9m79Rq3XPRRJg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.data
new file mode 100644
index 00000000..59285042
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.data
@@ -0,0 +1 @@
+JbMQ4UTbT02HS6d2aJAsPg==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.tmpl
new file mode 100644
index 00000000..c942de86
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.xml
new file mode 100644
index 00000000..4adc409f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-06.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 6IEF+efDXvvi9YmohCU/McuNL5e4X4PTRtB/RyeIZAun6+aXe8hLpRbEfmc=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-07.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-07.xml
new file mode 100644
index 00000000..34b5bc2b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-07.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ZWynvSy4Krej1rJojZUw06xlkkDd2LdxVc/C92AAkk+yn30liIZjcbEx710=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.data
new file mode 100644
index 00000000..3a9f9c53
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.data
@@ -0,0 +1 @@
+S/3ryv6SsJ3+xIBSNOsnKg==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.tmpl
new file mode 100644
index 00000000..6ff5cf6d
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.xml
new file mode 100644
index 00000000..41eae9e5
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-08.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ gSvv+Jj3hQvN13T52JrsURXOxie4/kjinp0cS8/fNk1OExy+GXWpBJlbSBQ=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-09.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-09.xml
new file mode 100644
index 00000000..19cf9b85
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-09.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 4GuSAjedi7N0rjnCvDq/kxsoFGz0OO7lW0kXYBTKfoNOf0Yb0/QditsyVc4=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.data
new file mode 100644
index 00000000..2fb47d9b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.data
@@ -0,0 +1 @@
+1M8IkHSqgjgxVWMNRx8cbA==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.tmpl
new file mode 100644
index 00000000..3d94bc1b
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.xml
new file mode 100644
index 00000000..d47eca47
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-10.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ ueP4zEYX8RGvA4zVrsXs+XC4uZIxkykxVicYxOWzz8PK+9RJ/CsL2Zu+fcg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.data
new file mode 100644
index 00000000..d0f695d4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.data
@@ -0,0 +1 @@
+xxx47rEdOl8nBwa5t+v70A==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.tmpl
new file mode 100644
index 00000000..8142139c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.xml
new file mode 100644
index 00000000..6f5fc7ac
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-11.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Zmwz2aZMpifVyzEGZYAjwAjkC/hNhWGeHYaXW1kwS8E0yAjjQsE7hPdZNgM=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-12.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-12.xml
new file mode 100644
index 00000000..a78c31d0
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-12.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ abqrOczRPstioANshwPT1Pvcp49R5FHxO3Zi+QWxXC8EG6rmG8Spmjx0YN0=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.data
new file mode 100644
index 00000000..c3508729
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.data
@@ -0,0 +1 @@
+6hO4/ZTD1V845AustzZ+tw==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.tmpl
new file mode 100644
index 00000000..48e1314f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.xml
new file mode 100644
index 00000000..031c1b35
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-13.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ FH6pZyAqD/ZI70X7MYbQiJfpJWZdKQEKYccdZ6ck8a2EsGNzSeWR9VOKrfg=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.data
new file mode 100644
index 00000000..2816f6cf
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.data
@@ -0,0 +1 @@
+YkavjDWBQhXMY+jXclc5hw==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.tmpl
new file mode 100644
index 00000000..badd06ae
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.xml
new file mode 100644
index 00000000..62acf731
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-14.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ lJSfZOIRLCSlFTsHLAOyA1XniVzY7GEweJvgUXzP0LGxQYOqZZSo+5t0iJ0=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.data
new file mode 100644
index 00000000..721cdad6
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.data
@@ -0,0 +1 @@
+c3/O3b9ya3/3+/PmkipwHw==
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.tmpl
new file mode 100644
index 00000000..e8fd11a0
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.xml
new file mode 100644
index 00000000..830f6f60
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-128-0-128-15.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ NrK6k8ChUlXGTnfWOTIPZR18J/99GRa5vCgCa52ErQjjA/7JKVyUMF5Ba+s=
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.data
new file mode 100644
index 00000000..b4995b6c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.data
@@ -0,0 +1 @@
+JUMVh+ns/8fDf41tUqm8MxBlHUb7DjutJybI8ttlN0k=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.tmpl
new file mode 100644
index 00000000..8a8b5ce4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.xml
new file mode 100644
index 00000000..7dc38039
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yvq9lnLKbHmi+9wihOXyP5Vkj6JHyyju9Tq+yUfb8FrJU3NGGBEVg4QL2YB5ZRyHX3lBeT1Cu9Cv
+HM58
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.data
new file mode 100644
index 00000000..a758fb46
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.data
@@ -0,0 +1 @@
+ettcyBrcw7dWHQCXLDE77nS5AiyMA13jhvR2yO+hX2I=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.tmpl
new file mode 100644
index 00000000..519483fb
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.xml
new file mode 100644
index 00000000..ea10b2e2
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ PJ5alStQCa/T3R6s67jCM0lqW933CCH7iRTsiqljPB/LwGeUj8LYLo++L7tVB0dm66BZ7uKvLbMA
+Kc9T
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.data
new file mode 100644
index 00000000..6c9dd5f4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.data
@@ -0,0 +1 @@
+UJQr8ccWjlAjm8mLjYlCO+K/BCwrEMOiaVPb33h7tgM=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.tmpl
new file mode 100644
index 00000000..b05d40f6
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.xml
new file mode 100644
index 00000000..c4adc5ff
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ TPOsnm3Eu1nqkCPAirD8tlgL+2AUjdDvqdY3Y68N2OdrvZnxGfiqqgDdRir/QNI+sZfdFs8MRDP3
+EJqH
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-04.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-04.xml
new file mode 100644
index 00000000..f0266230
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ +gmdV73OxbJe4uINxwkAxWqu3yr3Rug005r37tU7hrHoMtn3K8817PgUQoJE0/N5ygxK+nGxR7yE
+1JFD
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.data
new file mode 100644
index 00000000..2ee1857e
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.data
@@ -0,0 +1 @@
+z3/HvIGDCGWApQ54JboHSISeOYDVAeZo+x038FIlB6A=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.tmpl
new file mode 100644
index 00000000..6486282c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.xml
new file mode 100644
index 00000000..5204ce6f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ OX3m5aJku9Wd/i1cKSaCs+MXKh9hDGUBcGvpTqhjhnEkZVcS/D94gPZAATB2fl1Kh4ogBQfYMoH8
+iaZx
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.data
new file mode 100644
index 00000000..d198ffe3
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.data
@@ -0,0 +1 @@
+MAUzOFhzBOC47RUXq6wCc4fQQ6D+nY6ljm7r0uEtv8g=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.tmpl
new file mode 100644
index 00000000..022a758f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.xml
new file mode 100644
index 00000000..f741cd59
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yU/3PQqK+Z2Bl++DxCLFjSAF2Y6UcCgAfdUdOd5K9WM+ThLWdjHL3bNkEpp0P0EXfyZXTTWEfw0g
+CYc4
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-07.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-07.xml
new file mode 100644
index 00000000..3ef1561f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ i3OotoOROu366FrNlFICJ/OtIPhpc3DoWe9ZIe9b1fmr+35ypR0Er/i+eX8iDJc8pHBkelz17XKR
+Pz9o
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-08.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-08.xml
new file mode 100644
index 00000000..4ab7ef8c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ brbdnGyfTGdpqbVA3G8oPrFChRvG3PNw4hcK68KIsr6L1aLUQXuJc2YgEPxA+zXXstXEVCRr7Gfv
+1ZNd
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-09.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-09.xml
new file mode 100644
index 00000000..915fa56d
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 0w/lFAhRT2Sp7QuwjjnVA3OvhCMoDA8ThygaYKGQ8zZuJrgI81nRxzsPmche4sEI2jI1KfxcfOSt
+WLia
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-10.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-10.xml
new file mode 100644
index 00000000..e157dccd
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 4p+yHqvK4+46yRnuUcW5x8fG5GbXwTXIDZ1M65Kh/pLzBXOd/3jweFQsPkLpqxCno1l4UcXR261c
+Evpp
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-11.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-11.xml
new file mode 100644
index 00000000..abe31fa4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ n/IuHNIzN1wgLR1YMQ1RRHupZqNPuDH9A9LVXzryW7I8pc6ByWxokvYFo5TwyGpMtPpgWPLqxbTi
+8Je6
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.data
new file mode 100644
index 00000000..d6296abc
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.data
@@ -0,0 +1 @@
+USkLlZRnAIAWYaVEuBqGgW7gRzjOUb73VZs0+Qv5bYk=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.tmpl
new file mode 100644
index 00000000..97d62066
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.xml
new file mode 100644
index 00000000..0a15beff
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-12.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ muDLuyYdRIIhhfpGWV5ytJezdIGBVlq311t43+yfqycfX5hU+TfG0BYMha4FLqIZlioOt3qxDllW
+Rf5w
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-13.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-13.xml
new file mode 100644
index 00000000..fab54db0
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yPF87v7YLryZg72EOiUsuPyAuJ9s1DjkYC18zdZBXyYiIT3gAvCDwjLgq/KgB/FhUTtm8dYH1Pjv
+8+SZ
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.data
new file mode 100644
index 00000000..b711d602
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.data
@@ -0,0 +1 @@
+nXK0c+euh/GJcvy440BNdg+9MQEUe6QDbUXgdhRPnjQ=
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.tmpl
new file mode 100644
index 00000000..4ff47ffe
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.xml
new file mode 100644
index 00000000..13af548e
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ XpboKIEMzAl/RriPOEMieGP5UNKk8DZqWKjNWjHRA651Hvq6NO9MxNsapCSGkBtrGYU/ltYBsfAo
+qPuy
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-15.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-15.xml
new file mode 100644
index 00000000..21c0ecbc
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-256-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ PA1zPJB8u57oSuB3Abvok0VwM3Hz/dDHNR19JH8Hp3nHNPUDExFSveT+YvsQQnb8Lu1uJK8Go0Yy
+WM+B
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.data
new file mode 100644
index 00000000..b36dbbd5
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.data
@@ -0,0 +1 @@
+1gLAa5R6vgbPaqLFwVYuKQYq1iINqbycJdZqYL2FqA1PvMH7SRm2VmvjWvmBmrqDa4tH
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.tmpl
new file mode 100644
index 00000000..fbe78691
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.xml
new file mode 100644
index 00000000..eb3c9654
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-01.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-1</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ DjlkRmVVgoOPJ/cvsNJUq+Q721Y+rWaRksHlfpqFxR26DxyFAdHOkic/HOfhQNz6yUdX+rsSjKrR
+aRLOrQYH/9CwLJLb/Pvp1Y9/+eb1Bg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-02.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-02.xml
new file mode 100644
index 00000000..0861f4b5
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-02.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-2</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ L+aoFdSGUYH63l+sEWhELvZGVu9ld/tCwZGchKroVjiOTbmUW7jJuEErvmRYvEAERNXSvyYw+DRo
+9m+eRueQt19hb9Gj1lY7YriZ5aflIg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-03.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-03.xml
new file mode 100644
index 00000000..d0e24f31
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-03.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-3</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ UYKD/JRJdKJVPm3dyIz0gkJpdlhrDz7cw92qsuyMyfQNGafKpw3jsvLMfglbedG5F/1St2l7rV3M
+bWaJk4xlWz69HzGLv4aQ0AoiM0YaGA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.data
new file mode 100644
index 00000000..9c26cb21
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.data
@@ -0,0 +1 @@
+bpwkwXKujoHmnnl6i9n43k5eQ8y97sWg0OwaezUnOE4GEpKQxfYfovkK6LA6lAKusLbO
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.tmpl
new file mode 100644
index 00000000..7efd873a
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.xml
new file mode 100644
index 00000000..fdac36e8
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-04.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-4</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ p/Xds5uMYrULWowMDW3N8IIPVG1U9UdvSbvxz6+uO1x8sIdcgmdXZQhk+Z107kBzZR7tDbr1eJ0h
+HBvlV5hDMe/Gnarm9/AGf9bpab2SQA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.data
new file mode 100644
index 00000000..29760054
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.data
@@ -0,0 +1 @@
+6ekRR6eF2v4DEo9efKYRIwTf+2arnrm7fukBVGEBGjRcaf+PpCjFXPAvp6iJlgpfMCPW
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.tmpl
new file mode 100644
index 00000000..28b59a26
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.xml
new file mode 100644
index 00000000..81c36d6e
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-05.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-5</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ yW9iCqC4+oyZ0n01hkP3cNfHcGodoxlK+30woEMPOFRzxvag6Sy8L7iBf1Q5hcfqasQQVejaw1HL
+cOCYBpCcOHsUUZPL22W45x0xCjarvg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-06.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-06.xml
new file mode 100644
index 00000000..344bdea9
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-06.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-6</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Qc51yBYL4+Nb6cP8DvinOGOdf1xqfBmCM1SltVZuTGTac//lbygrSeACsDhGVnu7HiWUNfs1xoRA
+tEaB1KogTlDTMkkAVoazuNfiYAlQcg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.data
new file mode 100644
index 00000000..65432f70
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.data
@@ -0,0 +1 @@
+aBI/GtNfHgrNmYuNxV8BtzgmrfJUDvKs9ti7pEOc2sViq1AVd+pqtkxJrfrcwDe6I/rP
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.tmpl
new file mode 100644
index 00000000..c1fee82c
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.xml
new file mode 100644
index 00000000..3642d079
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-07.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-7</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ TmFYNrIEKUV3Us11CAx6hXqa9nYwYvJkf1h795xxlzH+pln7whJk6UXRg85Zeuc10NaNM73KV2L5
+XdlgZpLU9T9bMb+KS2gmVvNesGCIOA==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-08.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-08.xml
new file mode 100644
index 00000000..5ff26c72
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-08.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-8</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ RAY3aF/u5gRUZXnUyZrVMamjd4PbhEJRmGhHGVjfTC4pkKYmfAQVk3nu2/usjYwmiTNIW9LL3UzX
+PCkjt70C+YL6OWAA8HVVIE+q4eNFiQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.data
new file mode 100644
index 00000000..20790588
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.data
@@ -0,0 +1 @@
+spXpG4iM53LCqZpzmQL2zEcL4mw2huHUSDYzCU0LzfMmaW2mWs4H73zOR4Lz7rjxe08r
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.tmpl
new file mode 100644
index 00000000..4e3c8109
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.xml
new file mode 100644
index 00000000..69c625b4
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-09.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-9</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ hyQB1TjNPJXq0pQ9Ayee8tHgNmJO9+oxrkQ24pUwJ/CDrDWleMnGrrmnJHN1qyRwrEdsRmrAJwOq
+u1XynjySRS3O9AvITwsNDoGyAyD7rg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.data
new file mode 100644
index 00000000..8cc7280f
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.data
@@ -0,0 +1 @@
+pve0x9NbAJlmzW8vQMBEQgiJZ/HW510M0ubJVIdDVmp0PBo35obbB7CyTiRyU2wbPIR4
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.tmpl
new file mode 100644
index 00000000..2fcb90f8
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.xml
new file mode 100644
index 00000000..19110fb1
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-10.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-10</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ Oc0qPA1ftBRZoGj7GQKqK8oXoGqxv1TX94dl4u2obO0J5/TRaj8/pouwH75AdtTDoQ6M2QxpqHiX
+j8RMJkq7168F676d2W2s4qOkwlZLBg==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-11.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-11.xml
new file mode 100644
index 00000000..2c646b2d
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-11.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-11</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ T9le0WNZsVeBYmrFr6AZ59f0ufY+LN2oI2u0qKqhMPEbVtmg06/snjDYoV4kgGENVikrLktLMovh
+goPtQCjSHcm6LGNv3Frf6cbNhy0myQ==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.data
new file mode 100644
index 00000000..3ab7aa86
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.data
@@ -0,0 +1 @@
+O27oUasdgo/bLeNCeYCS6kvmuQ1O4VkE3mFX5WERcLvynNaZ75fOAnaGGsHIgKsCURiA
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.tmpl
new file mode 100644
index 00000000..9eb90fc2
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.xml
new file mode 100644
index 00000000..1b4fe456
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-12.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-12</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ cNlGorgzfyrgys9H/IqSkF1ep0gv3PGCyjsgHAqsblyNjK5LL0Nh2RKPmLieRvwaYdfYuvShCPIH
+R0vkv6/FcB7xt9GPTKiI6/iStSc1Ig==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.data
new file mode 100644
index 00000000..cee88118
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.data
@@ -0,0 +1 @@
+Eg4saQaT5PdaaTpAg1+G84dsWeIJ4efAYyzIf/TmE0pa4V6/Tw4nt6MXhzbKesF7MfVK
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.tmpl
new file mode 100644
index 00000000..6a6092a3
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.xml
new file mode 100644
index 00000000..60c81ecc
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-13.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-13</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ 42C23EwtATuYhY+F/ShS3MLb071xOPhMdxvfn21nf9sU0GdIAbYTpP2O80+pl+lLNHZfetkOdDIK
+inDHRakqtv5vcAa7qn1f77NnFwW//w==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.data
new file mode 100644
index 00000000..2ed0c9ed
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.data
@@ -0,0 +1 @@
+I8mBJFarrcdgCGys88gFIIIzoTixHLCT4GKk29xTYp9Fy0vlG3dg5bs77qzNUCbBJ2Pi
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.tmpl
new file mode 100644
index 00000000..2f24455a
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.xml
new file mode 100644
index 00000000..eb0a5e3d
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-14.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-14</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ B9oyh9h8d7qCaRMDcsA6duw3NJ/tK4hQ6Mh4ibRJNNrG8LZhyEA8YnAXCG+hA0XLzKAmtiR9Gjqq
+jMu7asMpNSBSPia5PD4L29SUyiuV3w==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.data b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.data
new file mode 100644
index 00000000..a786ffe1
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.data
@@ -0,0 +1 @@
+4+kb4tZRbnUewaZGni//ACrff0jryMSuHMtevV05rwXfIVyA1b0NGHaUSilS5bSjG4QA
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.tmpl b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.tmpl
new file mode 100644
index 00000000..b154e926
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.tmpl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <enc:CipherValue xmlns:enc="http://www.w3.org/2001/04/xmlenc#"/>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.xml b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.xml
new file mode 100644
index 00000000..954a4ac0
--- /dev/null
+++ b/tests/nist-aesgcm/aes256/aes256-gcm-96-408-0-128-15.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
+<EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-15</KeyName>
+</KeyInfo>
+<CipherData>
+ <CipherValue>
+ oPbUa1dkOun0WFbfAjJUdG8KPgPttg4WCO/dSjgARQbXIC4HEC4Oq9pOfdldmbS16R/EpixHgDTo
+YX3xfJXpcP5wsng8U41J7ld/n+UDRw==
+ </CipherValue>
+</CipherData>
+</EncryptedData>
diff --git a/tests/nist-aesgcm/create-enc-test.xslt b/tests/nist-aesgcm/create-enc-test.xslt
new file mode 100644
index 00000000..d43ba2ed
--- /dev/null
+++ b/tests/nist-aesgcm/create-enc-test.xslt
@@ -0,0 +1,14 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
+ <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
+
+ <!-- Identity template : copy all text nodes, elements and attributes -->
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()" />
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- When matching CipherValue: do nothing -->
+ <xsl:template match="enc:CipherValue"><enc:CipherValue/></xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/nist-aesgcm/keys-aes128-gcm.xml b/tests/nist-aesgcm/keys-aes128-gcm.xml
new file mode 100644
index 00000000..f6077b0c
--- /dev/null
+++ b/tests/nist-aesgcm/keys-aes128-gcm.xml
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Keys xmlns="http://www.aleksey.com/xmlsec/2002">
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">OHIYskbBqCV3SLVpgOUMlA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">KU3kY3IeNZhjiHyCBSSz1A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">KOrX/SF54NEqptXYjFjC3A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">fXtsmIE3uNRwxXv2dKCchw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">FpQCn8bIXa2HCf1FaOv5nA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">5G6xH6pcP2437lEFRFFECQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Z4hAq9cZ9ViOEDqc4YlWcA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">jc0EX1aFzwcvGpVx/ZM88Q==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">q0LAu3daWODFqoGy3D4iDQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Tj5zIv4Lrq7KKvpvEPwJpw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">xjEZroV9usKOH50lRYnCWA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">A8YHG9Y2NZYWHzSgOVZ/uw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">H/EcMvyDfZ8tCAmrZbUw4A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">PeKQSBtZzcSNMoyzrDnNlg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-104-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">YYWOwQRBknTuDiSHHN/0dA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">6YtyqYgahMprduD0Pmhkeg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">MyQGNs0yNhZfGlU7dz5yjg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">UWTfhW8enKwEp5uAjcW+OQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">sRkaZyzFVJazxyjWpn3grg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">yn256Xz6BWuA3NBPRiKGQA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">IGIJ5vLRayaNvsBZckMUBQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">vHIhh6Nymk0Ckvpz1EcWBQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">BjHJWVtct/n5SupJQBJfGQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ciu5n4Mh7rqmHdAIb9Y+Xg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Mn+fEiF+VPFLwLOBZqUH7A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">t9Lr8YdWK9S+8Mv+vdfN9A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">aVZxK3OSs1lRMvYGVhwL3w==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">s84sRt3zkFn2g87vBcCNOA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">I+z1bzyd3HbnIHhzgkMh+g==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-128-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">PPmIKwhQDAhKs48mwPPnMA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">v9QUpiEpWKYHoPXTq0hHHQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">w6oEAOo/UQf76KoBHhORsw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">CrdkYNGHC2yYk4O2FfOHag==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">8C8ENjIng9Np1VLw1jhUdA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">aTJGrDGMy6uMyFLNKEFbdQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">h2enqL6DN03HWwiRxP/+xw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">fTQGXKmYKmSwYDpsCAvPTw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">j3b+h8TOdq1/XlhYAw7mTg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">m4JZhwJVqkp+uw5f/s5Dlg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">oA6Od0lNphnpeKbQW/hkRA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">RA0jk8YLvtnoBHItHsrAfw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ihh34LweediKE2hKvCFlOQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">v/25SUErwf/Teai9XRxhjg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">KLUJfw8whgtYfVJoNlzXfQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-256-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">yPe8iDEhzLWsZ4pWdSNNFA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">88TAWMfwlloDKPDwEaEo4A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">k64RQFK3mF1AmjmkDfjH7g==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">LmcF/EhilnrzrqB4X22nWQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">w2v8Yq4rSWnb4jtzMuzP5A==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">oCt5B74sKl+MQBJ8J7YJzQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">08T5XuD/k/Z9/XxrZXhqcQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">olJvU1DELgdyBj7BVfHh1Q==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">1MZT/ZUYAOvpxKQ4BvKUzQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">2SWoD1hO3c5yPaXixtwiJQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">3LuVZdLwf5SpX3mCco9GJA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">g46OwdpL5gaAwvegPAUJdQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">xi9GShRs394bI5mb/CdxXA==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">OisqHyr9cxZI/GDC1HdUIg==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">GnfUMuo1VbVs5zUJ+Q5ORw==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes128-gcm-96-408-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Yxk7bmba7bnVZmd8pNOxKQ==</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+</Keys>
diff --git a/tests/nist-aesgcm/keys-aes192-gcm.xml b/tests/nist-aesgcm/keys-aes192-gcm.xml
new file mode 100644
index 00000000..113ca0ee
--- /dev/null
+++ b/tests/nist-aesgcm/keys-aes192-gcm.xml
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Keys xmlns="http://www.aleksey.com/xmlsec/2002">
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">aS3Tb5M2Er88xInWeiPhJNm2UyeOL/HH</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">h0kwLf3okmLttn025/V3ni1OtHMe1I8z</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">t6Ow+r1Oe1gClrfIg5pBOh9UQY3U3G/g</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">IRRc1sVcOPZH6DVuPR3RUhKKzWdVKQtl</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">j8LXHzL98VjNiY1QWgBUYrJNC432fYXb</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">RAhXmx/zzPO1pr4swbtYFvRE4i1OIrkt</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">5rtHh4FMCLqTBaA7yhXqK71JtrxISEVI</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">iHH6J8soQ1SvuCgxpjhP8gV7pk2Cyj5i</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">oDbAw0SEsN74a6x1ZgKI+Z0ZS292ECJ4</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">jv1q+Svq2Ng+wjrxDLA2LaflYIFQvFMb</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">QUjZLRnW8w0Vm/3DtWmJd1JL+o+I8lJG</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">eRjdjtaueLCJ+BynIfQaBt91niF/6bJB</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">nz8r0Kl//KlH2rCosqyZBNdT14wdRWIa</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">4g9LZ9avSFMtiVfwUw9yDwZubQLGw0Vj</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-104-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">UKJ5xr+nqR/dlPWQAb7EdmJY4fAEk5yH</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">enxbaoqatayuNKn25B8ZqXH5wzACPA8M</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">J5d1Hvbdgox5RClUP41pDp/mGBOawVEP</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">hDrg7yN2Nt+CsDB/uQZO4S/atamOg4vW</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">imJKDbDfIKd4IRAZNT7KhDKcJCnReNsG</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">+fbItjlL/c76QZc6IZ91Dsay2fKhzGu5</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">o2Kik7IJYFr0HF4YoQqiMtH4wJhwoIwR</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">36Eqf4nRl3S+7391z/erbMsu0lHGaxPt</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">aFb6bbBmPFlbX9uAJIF1mTAYgho/d/mp</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">OLyINWi7G8wFvPyCrYPx/bXyBsUnKQmP</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">rwz5NYL20DF7Om6EsBMN7/8suafhyWV9</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">bUbkX6Iew/Kfqm93Zq27gkqyJ72GHdAa</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">TAhmrWeT++Nv0l00bsaD2uxSrqhhOG9a</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">pgUXclF3mEXP7AG+U6y1upLg7gQkSiEG</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">S1eUyNmOCvx5AEJ/71jXVRulyHv/Qw2j</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-128-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">8hc8NzNh++JywZxuJJo/l2941M5I4ivv</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">fyb3dhMft3r96/wmkB4+7E8LgzMHQYur</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">yhpnr0ZRNh9smA+90iD9+PYuvDsqVc8B</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">/ChHR4+c0umhoN3xv4k8cXSO52uLXxc7</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">G5IzLDUFrH/cA7ZGT2vFPHZ49G0UOCI/</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ga8UDrkRl1Y8Kts1dZ5HF71SB4I++fHX</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">1H5AmU2tOWKmWXMA1JOl++M/S4KxuY0C</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">B3zu+a4r9Hm+zA2paOJpJfpFFK2fiNRr</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">zwvvLPINBLwg0lSa5ZdaKPniehOIMLGM</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">3Nc7K3s9NwYAkqu3vyo7w/PSsULbHPp1</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">vKO9/nURF7XycnjnQYgzXC73cWUHRzql</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">k1+CZPcTL1zi4v9B4awVnDKguFcBcvnx</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">1vMVvH71UhH/gd0fabAsG0l32KY7X+TQ</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">0ptc8BPHV5newNXVCYcGspxu+sk6u42x</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">8eODDN6XpoQZbqnaG5ADjr/Dl7SZZ0Kw</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-256-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">RzeQxfN8GgvKMDdiTz3GXOU6t2IB5sfg</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">EXxgfgG63La+BTQMqRuoAx8w198gbHDf</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">3g2TA40hnn+X/AsoiYS/z+SHis9Z8vWZ</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">wXx/UL3c9nB+pQP9eKgo9W1jeyUB9RBl</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Ixd4VEGSh2teGa2nn5wG+3atQfbkDZFy</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">0Iar6aeSPXTk6BgqCzk6F8UaMwZW1QIZ</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">cXEIGfUO3rjG8XlydCNYu3gusntuYKSY</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">avm+JwUUnWmVcy88ghd3zo5gyI1SEoxd</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Ls/02RuXlxu/Yuhe9fzTAyEoOGug36vk</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">/is4Wx4+OgtEK861jPHilylCGi0gYYBT</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">nuBl7jR/h0SMXi6+WPATp39ExfQUdMeY</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">P5LKJ1Frzd4g2nOLGH2BYRT7eFnmlmtf</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">iWgOAWEEa66eMD22DdN4ppdf2HDe4yWt</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">wZF3hCrINjEj/2V9Q5XSs3v9lHVbGfEA</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">YJcsO9VNsRVcPfOoaVnT3peZkqFYp3st</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes192-gcm-96-408-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">3Oy9RqRHKCzRYvqt6+0n+VjTDkNjtFw1</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+</Keys>
diff --git a/tests/nist-aesgcm/keys-aes256-gcm.xml b/tests/nist-aesgcm/keys-aes256-gcm.xml
new file mode 100644
index 00000000..60340f48
--- /dev/null
+++ b/tests/nist-aesgcm/keys-aes256-gcm.xml
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Keys xmlns="http://www.aleksey.com/xmlsec/2002">
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">izfEuM9jRwSSAFmGatlsSenaUCxj/KSjp6Tc7HTLBhA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">px2sE3ejv11/sbXja+5w0uAd4qhKHBAJunRI9/JhMdw=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">3B9kaBAUviIbAHk7vPWlvGdblo63o6PVqll470+kXsw=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">DVkYWjScFEiYoXtvKXkh8AyPuRprV6XMmuQmroVq5ZU=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">u7OJBqFprWaeLSmKSGNaVXcP/RByxexjTOXSDHtA3tA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">St7gPib/YhrzQzfaKuvwSyeetov/+vLrpFR4ww3Ip9I=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">pffJYljGCx/KJf397SMd6XPKDtinvk4iOO08GG4z1Bg=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">+DrMK9l+vnFnkNICoxZ8+nOP9rRNYWLijz//mhenB6w=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">VNiLdGAMDdl9ioh7xaKGhiggM8PGqOXF6l7GPXQnQMY=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">hQ9j8KQF2zH/x7AUtHCbUiBPD63th57jd0oYWI7TFSA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">GUEaYfF723JLhrEP1jfA5nDnfefHJKAB8CIjRQCRxIE=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">s5QGHfc3lHph60+JGuSIsiqPQDIAOJ9HyykvHqm2lXw=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">H2+uhXmLe0piVTYB/9FB8+/cxwnWUcPuxH1cYOvNUvg=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">vqH/BzVlAFO9ouU00ZgaTIjpVh0tEj6fYM6ye6yeBL4=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-104-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">TZIn6COUCu+btWjrpQl9agaFduOzYOBBrv6MOmkVweg=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">TI6/4UROwbLVA8aYZlmvLJT6/pRfcsHoSGpaz+24oPg=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">OTTzY/2fdxNSxMegYGgu0DwoZCI6FXOzr5l+Krq9YKs=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">yZd2ji0U49OCWWZ6ZkkHned760VDWJdx5QaObNfNCxQ=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">8Fhx+m/O1tiPtosPLNiz/2KYkBw4eZvmvjPn1hk6GOY=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">D4kA2VWSwgecRHIEMh2L+eDdsIvVaNUb1QP9eBPbGT8=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">f8Zv2zzdqUajd18AEmjjXlMUPTG8W/i5WgB5GqWaJyw=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">F1nKwgJKPd1eVhylqbkcPE5kxyI4G9MPPyaFH68Wx+g=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ozqXz3iMELi/q1glzE1J591YbvoFObXMwL8LAF7FkoQ=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">melkl/In4emfejDzsX5iImXBVXX3wHWDMUL6idctPnc=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">11VU1Zd4JCvN8UsM7RQtGlMKO02u4cbzekTCr5lNU3s=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">EyeitKPSprVKeOVeuyE/CBkjOsE5xj8m4O7ohyN63WU=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">hNISqkURDtPoH2wEqAx+orOPPmbbX+YaCIQRzHd7Cqs=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">XfqFdLcMedOfowutuAlVygqoDEUelgpkt7rscRBSd9I=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">DigDsD7SK2RJyydhoP7YMWMp+UjWZEkDvKVdToyueWs=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-128-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">UVL5IzDeGOgWyDa2OGAu09WrysghZzx2tOukxXT+y8o=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">w9mYJfIYH0gIrNIGjqx0QaZb1CjxTSqrQ/78ASkJETk=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">XDvRmG08gHsMOs6BHmGNuuFpPwcUXygtR02qrgtqF3Q=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">yNBuZnYwILixThYWOWbE5cwgBOI8QgCnm6ODjVKWr5w=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ptpCr8xbhvmJkQ99J/KTYqTkoHq5twkNWCDL+X+vByk=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">SfrspIlc2iPSg71i0pPSeaWLdI61BQ1aA0MZXroEHhE=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">v+rlBy/7xeGRifMm/EpBi2y/GRQc9RBFUC3BPBy63cE=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">C4c3dFzsEGxDJ5pZirGi6kf2ikfgum33AMYtmJOQ5QA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">h0n3tQYPKdevgFi7yym/zB6sX8Zejty5IGC3fm4r5x0=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ripmKSrFlLIFlDu6f0F511gyswV34v0wLQ17yHTvQNw=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">f8YTldJZOSIqOi7xNGmA0Qjmxl15iM4/3KVcnxn5/OQ=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">VnE2GB9XFRCM1v1JNobxnp8lmdT/kv6i1mMWCX/DiV8=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">nSy4bZK3Jdo45xuCbL4cmQh9g4/sI39kGs2+qNpLgvU=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">ZOfPSBk/JP2SbhdMAswXH+JtyPg9Z3t/TcG0Fv2Fgn8=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">Rnegs6QtcxzRiXZg0MBkg4duHXcrV9pOaqalSINjIKM=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-256-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">qL+D+gCtrhEjHLnb4ujjLNw2FBjwtLjzM74KzH8UmYA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-1</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">RDPbX+BmlgvdTh1NQYtkHBS/zvnVdOKdzQmVNShQ8es=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-2</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">KK6RHuaFhy2QbeEtdpY1HfjvIjSnSpXvpOoVsyczj+A=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-3</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">OEMiA1OLUKBh/AOQQmMf2bAQdCVGvTmTTZzJxEwYwsc=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-4</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">+bcP0GVmi5/E7n4iLxxK4n4Kbje1UefV+1jupApZ+6M=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-5</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">JrYv4T2iiqZ6+aPlrZFRWRpw7sav/7J5Uy762gS78nI=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-6</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">9JGqPs9QuSrbkox2TJghPCgoOcKYy4doY0DYqa0vbDs=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-7</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">eF5CeuS0e/lAzYw0X5xPBaZOERaYB0j+PuJP/z074Q0=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-8</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">LvAQlyZFjAY14FZvRGTeEZWo8tjRRhuygnR9xnV5oTY=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-9</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">qHaX164bDez48ZSxB1PlnotF3rywq59Tr09YUIe5Mi0=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-10</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">+sa5X4zckXO9GQK51AtESxFtvefuiGJuq3i0LGzrIK8=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-11</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">LGvzPSeKqyVRUJotMZ5FmFCl0UEhTNhecQWxoRU2720=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-12</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">W3e6+NW/5HR+PMPW9A+YMNc6ZtOa/CSzm4vXB0WEfCQ=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-13</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">HrCLkJJo9K9Av7g/Gk6TkGUksTGLHSd+tEECB/7JKB0=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-14</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">eC7IbcISLw7oVcvAiucthhW+ftbCijmIQuARjMneSvA=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
+ <KeyName>key-aes256-gcm-96-408-0-128-15</KeyName>
+ <KeyValue>
+ <AESKeyValue xmlns="http://www.aleksey.com/xmlsec/2002">CWYm3F47xAK8lSMOBuA9lmfIqhschIqXiuRg9xQ3Vp0=</AESKeyValue>
+ </KeyValue>
+</KeyInfo>
+</Keys>
diff --git a/tests/oss-fuzz/README.md b/tests/oss-fuzz/README.md
new file mode 100644
index 00000000..01b278d1
--- /dev/null
+++ b/tests/oss-fuzz/README.md
@@ -0,0 +1,15 @@
+Usually, software teams do functional testing (which is great) but not security testing of their code. For example:
+
+```
+func_add(int x, int y) { return x+y; }
+```
+may have a unit test like so:
+
+```
+ASSERT((func_add(4,5)==9))
+```
+However, corner cases are usually not tested so that `x=INT_MAX; y=1` shows a problem in the implementation/desired output.
+
+Fuzz testing is routinely used to generate such corner cases and feed them to program APIs. oss-fuzz is one such fuzz testing framework that is fully automated and targeted at open-source software (oss) and supported by Google. An enrolled project is continually fuzzed and bug reports are sent to maintainers as and when they are generated.
+
+To enrol a new project into oss-fuzz, the codebase must contain test harnesses that make use of the libFuzzer API. This folder hosts oss-fuzz test harnesses for xmlsec that are picked up by oss-fuzz and built. The build script resides in the oss-fuzz repo under the `projects/xmlsec` folder.
diff --git a/tests/oss-fuzz/config/xmlsec_fuzzer.options b/tests/oss-fuzz/config/xmlsec_fuzzer.options
new file mode 100644
index 00000000..6335e163
--- /dev/null
+++ b/tests/oss-fuzz/config/xmlsec_fuzzer.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+dict = xml.dict
diff --git a/tests/oss-fuzz/xmlsec_target.c b/tests/oss-fuzz/xmlsec_target.c
new file mode 100644
index 00000000..0d03a580
--- /dev/null
+++ b/tests/oss-fuzz/xmlsec_target.c
@@ -0,0 +1,18 @@
+#include <xmlsec/buffer.h>
+#include <xmlsec/parser.h>
+
+void ignore (void* ctx, const char* msg, ...) {
+ // Error handler to avoid spam of error messages from libxml parser.
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ xmlSetGenericErrorFunc(NULL, &ignore);
+ xmlSecBufferPtr buf = xmlSecBufferCreate(size);
+ xmlSecBufferSetData(buf, data, size);
+ xmlDocPtr doc = xmlSecParseMemory(xmlSecBufferGetData(buf),
+ xmlSecBufferGetSize(buf), 0);
+
+ if (doc != NULL) xmlFreeDoc(doc);
+ xmlSecBufferDestroy(buf);
+ return 0;
+}
diff --git a/tests/testDSig.sh b/tests/testDSig.sh
index fa4836b8..f2014464 100755
--- a/tests/testDSig.sh
+++ b/tests/testDSig.sh
@@ -3,14 +3,35 @@
# This script needs to be called from testrun.sh script
#
+# Setup URL to files mapping for offline testing, if tests are run against online
+# then some tests might fail.
+if [ -z "$XMLSEC_TEST_ONLINE" ]; then
+ url_map_xml_stylesheet_2005="--url-map:http://www.w3.org/TR/xml-stylesheet $topfolder/external-data/xml-stylesheet-2005"
+ url_map_xml_stylesheet_b64_2005="--url-map:http://www.w3.org/Signature/2002/04/xml-stylesheet.b64 $topfolder/external-data/xml-stylesheet-2005.b64"
+ url_map_xml_stylesheet_2018="--url-map:http://www.w3.org/TR/xml-stylesheet $topfolder/external-data/xml-stylesheet-2018"
+ url_map_rfc3161="--url-map:http://www.ietf.org/rfc/rfc3161.txt $topfolder/external-data/rfc3161.txt"
+else
+ url_map_xml_stylesheet_2005=""
+ url_map_xml_stylesheet_b64_2005=""
+ url_map_xml_stylesheet_2018=""
+ url_map_rfc3161=""
+fi
+
##########################################################################
##########################################################################
##########################################################################
-echo "--- testDSig started for xmlsec-$crypto library ($timestamp)"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- testDSig started for xmlsec-$crypto library ($timestamp)"
+fi
echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
-echo "--- log file is $logfile"
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- log file is $logfile"
+fi
echo "--- testDSig started for xmlsec-$crypto library ($timestamp)" >> $logfile
echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH" >> $logfile
+
##########################################################################
##########################################################################
@@ -103,6 +124,14 @@ execDSigTest $res_success \
# aleksey-xmldsig-01
#
##########################################################################
+execDSigTest $res_success \
+ "" \
+ "aleksey-xmldsig-01/signature-two-keynames" \
+ "sha1 rsa-sha1" \
+ "rsa x509" \
+ "$priv_key_option:key2 $topfolder/keys/rsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2018" \
+ "$priv_key_option:key2 $topfolder/keys/rsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2018" \
+ "$priv_key_option:key2 $topfolder/keys/rsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2018"
execDSigTest $res_success \
"" \
@@ -302,6 +331,19 @@ execDSigTest $res_success \
"$priv_key_option $topfolder/keys/rsakey$priv_key_suffix.$priv_key_format --pwd secret123" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+if [ "z$crypto" = "zopenssl" -a "z$priv_key_suffix" != "z-win" ] ; then
+ # At least openssl supports --privkey-der next to --pkcs12 on non-Windows,
+ # so test that as well.
+ execDSigTest $res_success \
+ "" \
+ "aleksey-xmldsig-01/enveloping-sha256-rsa-sha256-der" \
+ "sha256 rsa-sha256" \
+ "rsa x509" \
+ "--pubkey-cert-$cert_format $topfolder/keys/rsacert.$cert_format" \
+ "--privkey-$cert_format $topfolder/keys/rsakey$priv_key_suffix.$cert_format" \
+ "--pubkey-cert-$cert_format $topfolder/keys/rsacert.$cert_format"
+fi
+
execDSigTest $res_success \
"aleksey-xmldsig-01" \
"enveloping-sha256-rsa-sha256-relationship" \
@@ -351,29 +393,49 @@ execDSigTest $res_success \
"" \
"aleksey-xmldsig-01/enveloping-sha1-ecdsa-sha1" \
"sha1 ecdsa-sha1" \
- "rsa x509" \
+ "ecdsa x509" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
- "$priv_key_option $topfolder/keys/ecdsa-secp256k1-key.$priv_key_format --pwd secret123" \
+ "$priv_key_option $topfolder/keys/ecdsa-secp256r1-key.$priv_key_format --pwd secret123" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
execDSigTest $res_success \
"" \
"aleksey-xmldsig-01/enveloping-sha256-ecdsa-sha256" \
"sha256 ecdsa-sha256" \
- "rsa x509" \
+ "ecdsa x509" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
- "$priv_key_option $topfolder/keys/ecdsa-secp256k1-key.$priv_key_format --pwd secret123" \
+ "$priv_key_option $topfolder/keys/ecdsa-secp256r1-key.$priv_key_format --pwd secret123" \
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest $res_success \
+ "" \
+ "aleksey-xmldsig-01/enveloping-sha384-ecdsa-sha384" \
+ "sha384 ecdsa-sha384" \
+ "ecdsa x509" \
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+ "$priv_key_option $topfolder/keys/ecdsa-secp256r1-key.$priv_key_format --pwd secret123" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
execDSigTest $res_success \
"" \
"aleksey-xmldsig-01/enveloping-sha512-ecdsa-sha512" \
"sha512 ecdsa-sha512" \
- "rsa x509" \
+ "ecdsa x509" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
- "$priv_key_option $topfolder/keys/ecdsa-secp256k1-key.$priv_key_format --pwd secret123" \
+ "$priv_key_option $topfolder/keys/ecdsa-secp256r1-key.$priv_key_format --pwd secret123" \
"--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+# MSCNG doesn't support signatures with removed leading zeros (e.g. from Java)
+# https://github.com/lsh123/xmlsec/issues/228
+if [ "z$crypto" != "zmscng" ] ; then
+execDSigTest $res_success \
+ "" \
+ "aleksey-xmldsig-01/enveloped-ecdsa-java-bug" \
+ "sha512 ecdsa-sha512" \
+ "ecdsa x509" \
+ "--trusted-$cert_format $topfolder/keys/enveloped-ecdsa-java-bug-cert.$cert_format --enabled-key-data x509"
+fi
+
#
# To generate expired cert run the following command
# > xmlsec1 sign --pkcs12 tests/keys/expiredkey.p12 --pwd secret123 --output out.xml ./tests/aleksey-xmldsig-01/enveloping-expired-cert.tmpl
@@ -477,81 +539,81 @@ execDSigTest $res_success \
"merlin-xmldsig-twenty-three/signature-external-b64-dsa" \
"base64 sha1 dsa-sha1" \
"dsa" \
- " " \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123" \
- " "
+ " $url_map_xml_stylesheet_b64_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_b64_2005" \
+ " $url_map_xml_stylesheet_b64_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-external-dsa" \
"sha1 dsa-sha1" \
"dsa" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123" \
- " "
+ "$url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005" \
+ " $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-keyname" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option:test-dsa $topfolder/keys/dsakey.$priv_key_format --pwd secret123" \
- "$priv_key_option:test-dsa $topfolder/keys/dsakey.$priv_key_format --pwd secret123"
+ "--pubkey-cert-$cert_format:Lugh $topfolder/merlin-xmldsig-twenty-three/certs/lugh-cert.$cert_format $url_map_xml_stylesheet_2005" \
+ "$priv_key_option:test-dsa $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option:test-dsa $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-x509-crt" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123"\
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"\
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-x509-sn" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123"\
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format --untrusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/badb.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"\
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-x509-is" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123"\
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format --untrusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/macha.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"\
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-x509-ski" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123"\
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format --untrusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/nemain.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"\
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature-retrievalmethod-rawx509crt" \
"sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123"\
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --trusted-$cert_format $topfolder/keys/ca2cert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format --untrusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/nemain.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005"\
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --trusted-$cert_format $topfolder/keys/ca2cert.$cert_format $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmldsig-twenty-three/signature" \
- "base64 xpath enveloped-signature c14n-with-comments sha1 dsa-sha1" \
+ "base64 xpath xslt enveloped-signature c14n-with-comments sha1 dsa-sha1" \
"dsa x509" \
- "" \
- "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123" \
- "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --untrusted-$cert_format $topfolder/keys/ca2cert.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/merlin.$cert_format --verification-time 2005-01-01+10:00:00 $url_map_xml_stylesheet_2005 $url_map_xml_stylesheet_b64_2005" \
+ "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret123 $url_map_xml_stylesheet_2005 $url_map_xml_stylesheet_b64_2005" \
+ "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --untrusted-$cert_format $topfolder/keys/ca2cert.$cert_format $url_map_xml_stylesheet_2005 $url_map_xml_stylesheet_b64_2005"
##########################################################################
@@ -568,44 +630,44 @@ execDSigTest $res_success \
"merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes" \
"ripemd160 hmac-ripemd160 kw-tripledes" \
"hmac des" \
- "" \
- "--session-key hmac-192 --keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
- "--keys-file $topfolder/merlin-xmlenc-five/keys.xml"
+ "--keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005" \
+ "--session-key hmac-192 --keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005" \
+ "--keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128" \
"sha256 hmac-sha256 kw-aes128" \
"hmac aes" \
- ""
+ "--keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192" \
"sha384 hmac-sha384 kw-aes192" \
"hmac aes" \
- ""
+ "--keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256" \
"sha512 hmac-sha512 kw-aes256" \
"hmac aes" \
- ""
+ "--keys-file $topfolder/merlin-xmlenc-five/keys.xml $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5" \
"sha1 hmac-sha256 rsa-1_5" \
"hmac rsa" \
- ""
+ "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret $url_map_xml_stylesheet_2005"
execDSigTest $res_success \
"" \
"merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p" \
"sha1 hmac-sha256 rsa-oaep-mgf1p" \
"hmac rsa" \
- ""
+ "$priv_key_option $topfolder/merlin-xmlenc-five/rsapriv.$priv_key_format --pwd secret $url_map_xml_stylesheet_2005"
@@ -673,14 +735,14 @@ execDSigTest $res_success \
"signature-big" \
"base64 xslt xpath sha1 rsa-sha1" \
"rsa x509" \
- "--pubkey-cert-$cert_format certs/rsa-cert.$cert_format"
+ "--pubkey-cert-$cert_format certs/rsa-cert.$cert_format $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-dsa-detached" \
"sha1 dsa-sha1" \
"dsa x509" \
- "--trusted-$cert_format certs/dsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/dsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
@@ -701,7 +763,7 @@ execDSigTest $res_success \
"signature-dsa-manifest" \
"sha1 dsa-sha1" \
"dsa x509" \
- "--trusted-$cert_format certs/dsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/dsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
@@ -715,21 +777,21 @@ execDSigTest $res_success \
"signature-hmac-sha1-40-c14n-comments-detached" \
"c14n-with-comments sha1 hmac-sha1" \
"hmac" \
- "--hmackey certs/hmackey.bin"
+ "--hmackey certs/hmackey.bin $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-hmac-sha1-40-exclusive-c14n-comments-detached" \
"exc-c14n-with-comments sha1 hmac-sha1" \
"hmac" \
- "--hmackey certs/hmackey.bin"
+ "--hmackey certs/hmackey.bin $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-hmac-sha1-exclusive-c14n-comments-detached" \
"exc-c14n-with-comments sha1 hmac-sha1" \
"hmac" \
- "--hmackey certs/hmackey.bin"
+ "--hmackey certs/hmackey.bin $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
@@ -743,98 +805,98 @@ execDSigTest $res_success \
"signature-rsa-detached-b64-transform" \
"base64 sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-detached" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-detached-xpath-transform" \
"xpath sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-detached-xslt-transform-retrieval-method" \
"xslt sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-detached-xslt-transform" \
"xslt sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-enveloped" \
"enveloped-signature sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-enveloping" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest-x509-data-cert-chain" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest-x509-data-cert" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest-x509-data-issuer-serial" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest-x509-data-ski" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest-x509-data-subject-name" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --untrusted-$cert_format certs/rsa-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-manifest" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00 $url_map_rfc3161"
execDSigTest $res_success \
"phaos-xmldsig-three" \
"signature-rsa-xpath-transform-enveloped" \
"enveloped-signature xpath sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --X509-skip-strict-checks --verification-time 2009-01-01+10:00:00"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format --verification-time 2009-01-01+10:00:00"
##########################################################################
@@ -878,7 +940,7 @@ execDSigTest $res_fail \
"merlin-xmldsig-twenty-three/signature-x509-crt-crl" \
"sha1 rsa-sha1" \
"rsa x509" \
- "--X509-skip-strict-checks --trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format"
+ "--trusted-$cert_format $topfolder/merlin-xmldsig-twenty-three/certs/ca.$cert_format $url_map_xml_stylesheet_2018"
execDSigTest $res_fail \
"" \
@@ -899,7 +961,7 @@ execDSigTest $res_fail \
"signature-rsa-detached-xslt-transform-bad-retrieval-method" \
"xslt sha1 rsa-sha1" \
"rsa x509" \
- "--trusted-$cert_format certs/rsa-ca-cert.$cert_format"
+ "--trusted-$cert_format certs/rsa-ca-cert.$cert_format $url_map_rfc3161"
execDSigTest $res_fail \
"phaos-xmldsig-three" \
@@ -922,10 +984,41 @@ execDSigTest $res_fail \
"rsa x509" \
"--trusted-$cert_format certs/rsa-ca-cert.$cert_format"
+# 'Verify existing signature' MUST fail here, as --trusted-... is not passed.
+# If this passes, that's a bug. Note that we need to cleanup NSS certs DB
+# since it automaticall stores trusted certs
+if [ "z$crypto" = "znss" ] ;
+then
+ certutil -D -n "$NSS_TEST_CERT_NICKNAME" -d "$crypto_config"
+ if [ $? -ne 0 ]; then
+ echo "--- FAILED TO DELETE TRUSTED TEST CERTIFICATE FROM NSS CERT DB. THE NEXT TEST MIGHT FAIL" >> $logfile
+ echo "--- FAILED TO DELETE TRUSTED TEST CERTIFICATE FROM NSS CERT DB. THE NEXT TEST MIGHT FAIL"
+ fi
+fi
+
+execDSigTest $res_fail \
+ "aleksey-xmldsig-01" \
+ "enveloping-sha256-rsa-sha256-verify" \
+ "sha256 rsa-sha256" \
+ "rsa x509" \
+ "--enabled-key-data x509"
+
+# This is the same, but due to --insecure it must pass.
+# If this fails, that means avoiding the certificate verification doesn't
+# happen correctly.
+execDSigTest $res_success \
+ "aleksey-xmldsig-01" \
+ "enveloping-sha256-rsa-sha256-verify" \
+ "sha256 rsa-sha256" \
+ "rsa x509" \
+ "--enabled-key-data x509 --insecure"
+
##########################################################################
##########################################################################
##########################################################################
echo "--- testDSig finished" >> $logfile
echo "--- testDSig finished"
-echo "--- detailed log is written to $logfile"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- detailed log is written to $logfile"
+fi
diff --git a/tests/testEnc.sh b/tests/testEnc.sh
index 9970e33b..8b26790c 100755
--- a/tests/testEnc.sh
+++ b/tests/testEnc.sh
@@ -6,11 +6,17 @@
##########################################################################
##########################################################################
##########################################################################
-echo "--- testEnc started for xmlsec-$crypto library ($timestamp)"
-echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
-echo "--- log file is $logfile"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- testEnc started for xmlsec-$crypto library ($timestamp)"
+fi
+echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- log file is $logfile"
+fi
echo "--- testEnc started for xmlsec-$crypto library ($timestamp)" >> $logfile
echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH" >> $logfile
##########################################################################
##########################################################################
@@ -101,6 +107,14 @@ execEncTest $res_success \
"--keys-file $keysfile --session-key des-192 --binary-data $topfolder/aleksey-xmlenc-01/enc-des3cbc-aes192-keyname.data" \
"--keys-file $keysfile"
+execEncTest $res_success \
+ "" \
+ "aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params" \
+ "aes256-cbc rsa-oaep-mgf1p" \
+ "$priv_key_option:my-rsa-key $topfolder/keys/largersakey.$priv_key_format --pwd secret123" \
+ "$priv_key_option:my-rsa-key $topfolder/keys/largersakey.$priv_key_format --pwd secret123 --session-key aes-256 --enabled-key-data key-name --xml-data $topfolder/aleksey-xmlenc-01/enc-aes256-kt-rsa_oaep_sha1-params.data --node-name http://example.org/paymentv2:CreditCard" \
+ "$priv_key_option:my-rsa-key $topfolder/keys/largersakey.$priv_key_format --pwd secret123"
+
##########################################################################
#
# merlin-xmlenc-five
@@ -361,6 +375,54 @@ execEncTest $res_success \
#01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha256.xml
#01-phaos-xmlenc-3/enc-element-3des-kt-rsa_oaep_sha512.xml
+
+echo "--------- AES-GCM tests include both positive and negative tests ----------"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- detailed log is written to $logfile"
+fi
+##########################################################################
+#
+# AES-GCM
+#
+# IV length=96, AAD length=0 and tag length=128
+##########################################################################
+aesgcm_key_lengths="128 192 256"
+aesgcm_plaintext_lengths="104 128 256 408"
+aesgcm_vectors="01 02 03 04 05 06 07 08 09 10 11 12 13 14 15"
+for aesgcm_k_l in $aesgcm_key_lengths ; do
+ for aesgcm_pt_l in $aesgcm_plaintext_lengths ; do
+ for aesgcm_v in $aesgcm_vectors ; do
+ base_test_name="nist-aesgcm/aes${aesgcm_k_l}/aes${aesgcm_k_l}-gcm-96-${aesgcm_pt_l}-0-128-${aesgcm_v}"
+ # If the corresponding *.data file is missing then we expect the test to fail
+ if [ -f "$topfolder/$base_test_name.xml" -a ! -f "$topfolder/$base_test_name.data" ] ; then
+ execEncTest "$res_fail" \
+ "" \
+ "$base_test_name" \
+ "aes${aesgcm_k_l}-gcm" \
+ "--keys-file $topfolder/nist-aesgcm/keys-aes${aesgcm_k_l}-gcm.xml" \
+ "" \
+ ""
+ else
+ # generate binary file out of base64
+ DECODE="-d"
+ if [ "`uname`" = "Darwin" ]; then
+ DECODE="-D"
+ fi
+ cat "$topfolder/$base_test_name.data" | base64 $DECODE > $tmpfile.3
+ execEncTest "$res_success" \
+ "" \
+ "$base_test_name" \
+ "aes${aesgcm_k_l}-gcm" \
+ "--keys-file $topfolder/nist-aesgcm/keys-aes${aesgcm_k_l}-gcm.xml" \
+ "--keys-file $topfolder/nist-aesgcm/keys-aes${aesgcm_k_l}-gcm.xml --binary-data $tmpfile.3" \
+ "--keys-file $topfolder/nist-aesgcm/keys-aes${aesgcm_k_l}-gcm.xml" \
+ "base64"
+ fi
+ done
+ done
+done
+
+
##########################################################################
#
# test dynamicencryption
@@ -383,7 +445,9 @@ fi
##########################################################################
##########################################################################
echo "--------- Negative Testing: Following tests MUST FAIL ----------"
-echo "--- detailed log is written to $logfile"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- detailed log is written to $logfile"
+fi
execEncTest $res_fail \
"" \
"01-phaos-xmlenc-3/bad-alg-enc-element-aes128-kw-3des" \
@@ -409,5 +473,7 @@ rm -rf $tmpfile
##########################################################################
echo "--- testEnc finished" >> $logfile
echo "--- testEnc finished"
-echo "--- detailed log is written to $logfile"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- detailed log is written to $logfile"
+fi
diff --git a/tests/testKeys.sh b/tests/testKeys.sh
index 1bf7dc23..8424e8d6 100755
--- a/tests/testKeys.sh
+++ b/tests/testKeys.sh
@@ -6,11 +6,17 @@
##########################################################################
##########################################################################
##########################################################################
-echo "--- testKeys started for xmlsec-$crypto library ($timestamp) ---"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- testKeys started for xmlsec-$crypto library ($timestamp) ---"
+fi
echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
-echo "--- log file is $logfile"
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- log file is $logfile"
+fi
echo "--- testKeys started for xmlsec-$crypto library ($timestamp) ---" >> $logfile
echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
+echo "--- LTDL_LIBRARY_PATH=$LTDL_LIBRARY_PATH" >> $logfile
# cleanup crypto config folder
mkdir -p $crypto_config
@@ -66,4 +72,6 @@ execKeysTest $res_success \
##########################################################################
echo "--- testKeys finished ---" >> $logfile
echo "--- testKeys finished ---"
-echo "--- detailed log is written to $logfile ---"
+if [ -z "$XMLSEC_TEST_REPRODUCIBLE" ]; then
+ echo "--- detailed log is written to $logfile ---"
+fi
diff --git a/tests/testrun.sh b/tests/testrun.sh
index 9e944230..fe0334c7 100755
--- a/tests/testrun.sh
+++ b/tests/testrun.sh
@@ -28,9 +28,13 @@ testname=`basename $testfile`
if [ "z$OS_ARCH" = "zCygwin" ] ; then
tmpfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.tmp`
logfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.log`
+ curlogfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.cur.log`
+ failedlogfile=`cygpath -wa $TMPFOLDER/$testname.$timestamp-$$.failed.log`
else
tmpfile=$TMPFOLDER/$testname.$timestamp-$$.tmp
logfile=$TMPFOLDER/$testname.$timestamp-$$.log
+ curlogfile=$TMPFOLDER/$testname.$timestamp-$$.cur.log
+ failedlogfile=$TMPFOLDER/$testname.$timestamp-$$.failed.log
fi
nssdbfolder=$topfolder/nssdb
@@ -75,6 +79,13 @@ else
pub_key_format="der"
fi
+#
+# Need to force persistence for mscrypto and mscng
+#
+if [ "z$crypto" = "zmscrypto" -o "z$crypto" = "zmscng" ] ; then
+ priv_key_option="--pkcs12-persist $priv_key_option"
+fi
+
# On Windows, one needs to specify Crypto Service Provider (CSP)
# in the pkcs12 file to ensure it is loaded correctly to be used
# with SHA2 algorithms. Worse, the CSP is different for XP and older
@@ -106,33 +117,56 @@ else
diff_param=-u
fi
+NSS_TEST_CERT_NICKNAME="NSS Certificate DB:Aleksey Sanin - XML Security Library (http://www.aleksey.com/xmlsec)"
+
+
#
# Check the command result and print it to stdout
#
res_success="success"
res_fail="fail"
+count_success=0
+count_fail=0
+count_skip=0
printRes() {
expected_res="$1"
actual_res="$2"
# convert status to string
if [ $actual_res = 0 ]; then
- actual_res=$res_success
+ actual_res_str=$res_success
else
- actual_res=$res_fail
+ actual_res_str=$res_fail
fi
# check
- if [ "z$expected_res" = "z$actual_res" ] ; then
+ if [ "z$expected_res" = "z$actual_res_str" ] ; then
+ count_success=`expr $count_success + 1`
+ actual_res="0"
echo " OK"
else
+ count_fail=`expr $count_fail + 1`
+ actual_res="1"
echo " Fail"
fi
# memlog
if [ -f .memdump ] ; then
- cat .memdump >> $logfile
+ cat .memdump >> $curlogfile
+ fi
+
+ return "$actual_res"
+}
+
+printCheckStatus() {
+ check_res="$1"
+ if [ $check_res = 0 ]; then
+ echo " OK"
+ else
+ count_skip=`expr $count_skip + 1`
+ echo " Skip"
fi
+ return "$check_res"
}
#
@@ -143,6 +177,7 @@ execKeysTest() {
req_key_data="$2"
key_name="$3"
alg_name="$4"
+ failures=0
if [ -n "$XMLSEC_TEST_NAME" -a "$XMLSEC_TEST_NAME" != "$key_name" ]; then
return
@@ -158,18 +193,21 @@ execKeysTest() {
cd $old_pwd
return
fi
+
+ # starting test
echo "Test: $alg_name ($expected_res)"
+ echo "Test: $alg_name ($expected_res)" > $curlogfile
# check key data
if [ -n "$req_key_data" ] ; then
printf " Checking required key data "
- echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $logfile
- $xmlsec_app check-key-data $xmlsec_params $req_key_data >> $logfile 2>> $logfile
+ echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $curlogfile
+ $xmlsec_app check-key-data $xmlsec_params $req_key_data >> $curlogfile 2>> $curlogfile
+ printCheckStatus $?
res=$?
- if [ $res = 0 ]; then
- echo " OK"
- else
- echo " Skip"
+ if [ $res != 0 ]; then
+ cat $curlogfile >> $logfile
+ cd $old_pwd
return
fi
fi
@@ -180,9 +218,18 @@ execKeysTest() {
if [ -f $keysfile ] ; then
params="$params --keys-file $keysfile"
fi
- echo "$VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile" >> $logfile
- $VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile >> $logfile 2>> $logfile
+ echo "$VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile" >> $curlogfile
+ $VALGRIND $xmlsec_app keys $params $xmlsec_params $keysfile >> $curlogfile 2>> $curlogfile
printRes $expected_res $?
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
+
+ # save logs
+ cat $curlogfile >> $logfile
+ if [ $failures != 0 ] ; then
+ cat $curlogfile >> $failedlogfile
+ fi
# cleanup
cd $old_pwd
@@ -201,6 +248,7 @@ execDSigTest() {
params1="$6"
params2="$7"
params3="$8"
+ failures=0
if [ -n "$XMLSEC_TEST_NAME" -a "$XMLSEC_TEST_NAME" != "$filename" ]; then
return
@@ -216,42 +264,43 @@ execDSigTest() {
cd $old_pwd
return
fi
+
+ # starting test
if [ -n "$folder" ] ; then
cd $topfolder/$folder
full_file=$filename
echo $folder/$filename
- echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" >> $logfile
+ echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" > $curlogfile
else
full_file=$topfolder/$filename
echo $filename
- echo "Test: $folder/$filename ($expected_res)" >> $logfile
+ echo "Test: $folder/$filename ($expected_res)" > $curlogfile
fi
# check transforms
if [ -n "$req_transforms" ] ; then
printf " Checking required transforms "
- echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
- $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
+ echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $curlogfile
+ $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $curlogfile 2>> $curlogfile
+ printCheckStatus $?
res=$?
- if [ $res = 0 ]; then
- echo " OK"
- else
- echo " Skip"
- cd $old_pwd
+ if [ $res != 0 ]; then
+ cat $curlogfile >> $logfile
+ cd $old_pwd
return
fi
fi
# check key data
if [ -n "$req_key_data" ] ; then
- printf " Checking required key data "
- echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $logfile
- $xmlsec_app check-key-data $xmlsec_params $req_key_data >> $logfile 2>> $logfile
+ printf " Checking required key data "
+ echo "$xmlsec_app check-key-data $xmlsec_params $req_key_data" >> $curlogfile
+ $xmlsec_app check-key-data $xmlsec_params $req_key_data >> $curlogfile 2>> $curlogfile
+ printCheckStatus $?
res=$?
- if [ $res = 0 ]; then
- echo " OK"
- else
- echo "Skip"
+ if [ $res != 0 ]; then
+ cat $curlogfile >> $logfile
+ cd $old_pwd
return
fi
fi
@@ -259,23 +308,38 @@ execDSigTest() {
# run tests
if [ -n "$params1" ] ; then
printf " Verify existing signature "
- echo "$VALGRIND $xmlsec_app verify $xmlsec_params $params1 $full_file.xml" >> $logfile
- $VALGRIND $xmlsec_app verify $xmlsec_params $params1 $full_file.xml >> $logfile 2>> $logfile
+ echo "$VALGRIND $xmlsec_app verify --X509-skip-strict-checks $xmlsec_params $params1 $full_file.xml" >> $curlogfile
+ $VALGRIND $xmlsec_app verify --X509-skip-strict-checks $xmlsec_params $params1 $full_file.xml >> $curlogfile 2>> $curlogfile
printRes $expected_res $?
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
fi
if [ -n "$params2" -a -z "$PERF_TEST" ] ; then
printf " Create new signature "
- echo "$VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $logfile
- $VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $logfile 2>> $logfile
- printRes $expected_res $?
+ echo "$VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $curlogfile
+ $VALGRIND $xmlsec_app sign $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $curlogfile 2>> $curlogfile
+ printRes $res_success $?
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
fi
if [ -n "$params3" -a -z "$PERF_TEST" ] ; then
printf " Verify new signature "
- echo "$VALGRIND $xmlsec_app verify $xmlsec_params $params3 $tmpfile" >> $logfile
- $VALGRIND $xmlsec_app verify $xmlsec_params $params3 $tmpfile >> $logfile 2>> $logfile
- printRes $expected_res $?
+ echo "$VALGRIND $xmlsec_app verify --X509-skip-strict-checks $xmlsec_params $params3 $tmpfile" >> $curlogfile
+ $VALGRIND $xmlsec_app verify --X509-skip-strict-checks $xmlsec_params $params3 $tmpfile >> $curlogfile 2>> $curlogfile
+ printRes $res_success $?
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
+ fi
+
+ # save logs
+ cat $curlogfile >> $logfile
+ if [ $failures != 0 ] ; then
+ cat $curlogfile >> $failedlogfile
fi
# cleanup
@@ -294,6 +358,8 @@ execEncTest() {
params1="$5"
params2="$6"
params3="$7"
+ outputTransform="$8"
+ failures=0
if [ -n "$XMLSEC_TEST_NAME" -a "$XMLSEC_TEST_NAME" != "$filename" ]; then
return
@@ -309,27 +375,29 @@ execEncTest() {
cd $old_pwd
return
fi
+
+ # starting test
if [ -n "$folder" ] ; then
cd $topfolder/$folder
full_file=$filename
echo $folder/$filename
- echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" >> $logfile
+ echo "Test: $folder/$filename in folder " `pwd` " ($expected_res)" > $curlogfile
else
full_file=$topfolder/$filename
echo $filename
- echo "Test: $folder/$filename ($expected_res)" >> $logfile
+ echo "Test: $folder/$filename ($expected_res)" > $curlogfile
fi
# check transforms
if [ -n "$req_transforms" ] ; then
printf " Checking required transforms "
- echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $logfile
- $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $logfile 2>> $logfile
+ echo "$xmlsec_app check-transforms $xmlsec_params $req_transforms" >> $curlogfile
+ $xmlsec_app check-transforms $xmlsec_params $req_transforms >> $curlogfile 2>> $curlogfile
+ printCheckStatus $?
res=$?
- if [ $res = 0 ]; then
- echo " OK"
- else
- echo " Skip"
+ if [ $res != 0 ]; then
+ cat $curlogfile >> $logfile
+ cd $old_pwd
return
fi
fi
@@ -338,42 +406,66 @@ execEncTest() {
if [ -n "$params1" ] ; then
rm -f $tmpfile
printf " Decrypt existing document "
- echo "$VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 $full_file.xml" >> $logfile
- $VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 $full_file.xml > $tmpfile 2>> $logfile
+ echo "$VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 $full_file.xml" >> $curlogfile
+ $VALGRIND $xmlsec_app decrypt $xmlsec_params $params1 --output $tmpfile $full_file.xml >> $curlogfile 2>> $curlogfile
res=$?
- if [ $res = 0 ]; then
- diff $diff_param $full_file.data $tmpfile >> $logfile 2>> $logfile
+ echo "=== TEST RESULT: $res; expected: $expected_res" >> $curlogfile
+ if [ $res = 0 -a "$expected_res" = "$res_success" ]; then
+ if [ "z$outputTransform" != "z" ] ; then
+ cat $tmpfile | $outputTransform > $tmpfile.2
+ mv $tmpfile.2 $tmpfile
+ fi
+ diff $diff_param $full_file.data $tmpfile >> $curlogfile 2>> $curlogfile
printRes $expected_res $?
else
printRes $expected_res $res
fi
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
fi
if [ -n "$params2" -a -z "$PERF_TEST" ] ; then
rm -f $tmpfile
printf " Encrypt document "
- echo "$VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $logfile
- $VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $logfile 2>> $logfile
- printRes $expected_res $?
+ echo "$VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl" >> $curlogfile
+ $VALGRIND $xmlsec_app encrypt $xmlsec_params $params2 --output $tmpfile $full_file.tmpl >> $curlogfile 2>> $curlogfile
+ printRes $res_success $?
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
+ fi
fi
if [ -n "$params3" -a -z "$PERF_TEST" ] ; then
rm -f $tmpfile.2
printf " Decrypt new document "
- echo "$VALGRIND $xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile" >> $logfile
- $VALGRIND $xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile >> $logfile 2>> $logfile
+ echo "$VALGRIND $xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile" >> $curlogfile
+ $VALGRIND $xmlsec_app decrypt $xmlsec_params $params3 --output $tmpfile.2 $tmpfile >> $curlogfile 2>> $curlogfile
res=$?
if [ $res = 0 ]; then
- diff $diff_param $full_file.data $tmpfile.2 >> $logfile 2>> $logfile
- printRes $expected_res $?
+ if [ "z$outputTransform" != "z" ] ; then
+ cat $tmpfile.2 | $outputTransform > $tmpfile
+ mv $tmpfile $tmpfile.2
+ fi
+ diff $diff_param $full_file.data $tmpfile.2 >> $curlogfile 2>> $curlogfile
+ printRes $res_success $?
else
- printRes $expected_res $res
+ printRes $res_success $res
+ fi
+ if [ $? != 0 ]; then
+ failures=`expr $failures + 1`
fi
fi
+ # save logs
+ cat $curlogfile >> $logfile
+ if [ $failures != 0 ] ; then
+ cat $curlogfile >> $failedlogfile
+ fi
+
# cleanup
cd $old_pwd
- rm -f $tmpfile $tmpfile.2
+ rm -f $tmpfile $tmpfile.2
}
# prepare
@@ -382,6 +474,17 @@ rm -rf $tmpfile $tmpfile.2 tmpfile.3
# run tests
source "$testfile"
+# print results
+echo "--- TOTAL OK: $count_success; TOTAL FAILED: $count_fail; TOTAL SKIPPED: $count_skip" >> $logfile
+echo "--- TOTAL OK: $count_success; TOTAL FAILED: $count_fail; TOTAL SKIPPED: $count_skip"
+
+# print log file if failed
+if [ $count_fail != 0 ] ; then
+ cat $failedlogfile
+fi
+
# cleanup
-rm -rf $tmpfile $tmpfile.2 tmpfile.3
+rm -rf $tmpfile $tmpfile.2 tmpfile.3 $curlogfile
+
+exit $count_fail
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index e3d5262e..9c9673bf 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -1,6 +1,6 @@
# Makefile for xmlsec, specific for Windows, MSVC and NMAKE.
#
-# Take a look at the beginning and modify the variables to suit your
+# Take a look at the beginning and modify the variables to suit your
# environment. Having done that, you can do a
#
# nmake [all] to build the xmlsec and the accompanying utilities.
@@ -33,12 +33,12 @@ AUTOCONF = .\configure.txt
#UNICODE = 1
#DEBUG = 0
#WITH_CRYPTO=openssl
-#WITH_CRYPTO=openssl
#WITH_DEFAULT_CRYPTO=openssl
#WITH_OPENSSL=1
#WITH_OPENSSL_VERSION=
#WITH_NSS=0
#WITH_MSCRYPTO=0
+#WITH_MSCNG=0
#WITH_LIBXSLT=1
#STATIC = 0
#WITH_DL = 1
@@ -46,9 +46,9 @@ AUTOCONF = .\configure.txt
#BINPREFIX = $(PREFIX)\bin
#INCPREFIX = $(PREFIX)\include
#LIBPREFIX = $(PREFIX)\lib
-#SOPREFIX = $(PREFIX)\lib
+#SOPREFIX = $(PREFIX)\bin
#INCLUDE = $(INCLUDE);$(INCPREFIX)
-#LIB = $(LIB);$(LIBPREFIX)
+#LIB = $(LIB);$(LIBPREFIX)
# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------
@@ -67,6 +67,7 @@ XMLSEC_NAME = xmlsec
XMLSEC_BASENAME = lib$(XMLSEC_NAME)
XMLSEC_SO = $(XMLSEC_BASENAME).dll
XMLSEC_SO_MANIFEST = $(XMLSEC_BASENAME).dll.manifest
+XMLSEC_PDB = $(XMLSEC_BASENAME).pdb
XMLSEC_IMP = $(XMLSEC_BASENAME).lib
XMLSEC_A = $(XMLSEC_BASENAME)_a.lib
@@ -74,6 +75,7 @@ XMLSEC_OPENSSL_NAME = $(XMLSEC_NAME)-openssl
XMLSEC_OPENSSL_BASENAME = lib$(XMLSEC_OPENSSL_NAME)
XMLSEC_OPENSSL_SO = $(XMLSEC_OPENSSL_BASENAME).dll
XMLSEC_OPENSSL_SO_MANIFEST = $(XMLSEC_OPENSSL_BASENAME).dll.manifest
+XMLSEC_OPENSSL_PDB = $(XMLSEC_OPENSSL_BASENAME).pdb
XMLSEC_OPENSSL_IMP = $(XMLSEC_OPENSSL_BASENAME).lib
XMLSEC_OPENSSL_A = $(XMLSEC_OPENSSL_BASENAME)_a.lib
@@ -81,6 +83,7 @@ XMLSEC_NSS_NAME = $(XMLSEC_NAME)-nss
XMLSEC_NSS_BASENAME = lib$(XMLSEC_NSS_NAME)
XMLSEC_NSS_SO = $(XMLSEC_NSS_BASENAME).dll
XMLSEC_NSS_SO_MANIFEST = $(XMLSEC_NSS_BASENAME).dll.manifest
+XMLSEC_NSS_PDB = $(XMLSEC_NSS_BASENAME).pdb
XMLSEC_NSS_IMP = $(XMLSEC_NSS_BASENAME).lib
XMLSEC_NSS_A = $(XMLSEC_NSS_BASENAME)_a.lib
@@ -88,9 +91,18 @@ XMLSEC_MSCRYPTO_NAME = $(XMLSEC_NAME)-mscrypto
XMLSEC_MSCRYPTO_BASENAME= lib$(XMLSEC_MSCRYPTO_NAME)
XMLSEC_MSCRYPTO_SO = $(XMLSEC_MSCRYPTO_BASENAME).dll
XMLSEC_MSCRYPTO_SO_MANIFEST = $(XMLSEC_MSCRYPTO_BASENAME).dll.manifest
+XMLSEC_MSCRYPTO_PDB = $(XMLSEC_MSCRYPTO_BASENAME).pdb
XMLSEC_MSCRYPTO_IMP = $(XMLSEC_MSCRYPTO_BASENAME).lib
XMLSEC_MSCRYPTO_A = $(XMLSEC_MSCRYPTO_BASENAME)_a.lib
+XMLSEC_MSCNG_NAME = $(XMLSEC_NAME)-mscng
+XMLSEC_MSCNG_BASENAME= lib$(XMLSEC_MSCNG_NAME)
+XMLSEC_MSCNG_SO = $(XMLSEC_MSCNG_BASENAME).dll
+XMLSEC_MSCNG_SO_MANIFEST = $(XMLSEC_MSCNG_BASENAME).dll.manifest
+XMLSEC_MSCNG_PDB = $(XMLSEC_MSCNG_BASENAME).pdb
+XMLSEC_MSCNG_IMP = $(XMLSEC_MSCNG_BASENAME).lib
+XMLSEC_MSCNG_A = $(XMLSEC_MSCNG_BASENAME)_a.lib
+
#
# Places where intermediate files produced by the compiler go
#
@@ -109,13 +121,16 @@ XMLSEC_NSS_INTDIR_A = $(XMLSEC_BASENAME)_nss_a.int
XMLSEC_MSCRYPTO_INTDIR = $(XMLSEC_BASENAME)_mscrypto.int
XMLSEC_MSCRYPTO_INTDIR_A= $(XMLSEC_BASENAME)_mscrypto_a.int
+XMLSEC_MSCNG_INTDIR = $(XMLSEC_BASENAME)_mscng.int
+XMLSEC_MSCNG_INTDIR_A= $(XMLSEC_BASENAME)_mscng_a.int
+
#
# Source folders
#
XMLSEC_OPENSSL_SRCDIR = $(XMLSEC_SRCDIR)\openssl
XMLSEC_NSS_SRCDIR = $(XMLSEC_SRCDIR)\nss
XMLSEC_MSCRYPTO_SRCDIR = $(XMLSEC_SRCDIR)\mscrypto
-
+XMLSEC_MSCNG_SRCDIR = $(XMLSEC_SRCDIR)\mscng
#
# Object files for libraries and apps.
@@ -159,7 +174,7 @@ XMLSEC_OBJS = \
$(XMLSEC_INTDIR)\xmlsec.obj \
$(XMLSEC_INTDIR)\xmltree.obj \
$(XMLSEC_INTDIR)\xpath.obj \
- $(XMLSEC_INTDIR)\xslt.obj
+ $(XMLSEC_INTDIR)\xslt.obj
XMLSEC_OBJS_A = \
$(XMLSEC_INTDIR_A)\app.obj\
$(XMLSEC_INTDIR_A)\base64.obj\
@@ -190,7 +205,7 @@ XMLSEC_OBJS_A = \
$(XMLSEC_INTDIR_A)\xmlsec.obj \
$(XMLSEC_INTDIR_A)\xmltree.obj \
$(XMLSEC_INTDIR_A)\xpath.obj \
- $(XMLSEC_INTDIR_A)\xslt.obj
+ $(XMLSEC_INTDIR_A)\xslt.obj
XMLSEC_OPENSSL_OBJS = \
$(XMLSEC_OPENSSL_INTDIR)\app.obj\
@@ -199,6 +214,7 @@ XMLSEC_OPENSSL_OBJS = \
$(XMLSEC_OPENSSL_INTDIR)\crypto.obj \
$(XMLSEC_OPENSSL_INTDIR)\digests.obj \
$(XMLSEC_OPENSSL_INTDIR)\evp.obj \
+ $(XMLSEC_OPENSSL_INTDIR)\evp_signatures.obj \
$(XMLSEC_OPENSSL_INTDIR)\hmac.obj \
$(XMLSEC_OPENSSL_INTDIR)\kt_rsa.obj \
$(XMLSEC_OPENSSL_INTDIR)\kw_aes.obj \
@@ -207,7 +223,7 @@ XMLSEC_OPENSSL_OBJS = \
$(XMLSEC_OPENSSL_INTDIR)\strings.obj \
$(XMLSEC_OPENSSL_INTDIR)\symkeys.obj \
$(XMLSEC_OPENSSL_INTDIR)\x509.obj \
- $(XMLSEC_OPENSSL_INTDIR)\x509vfy.obj
+ $(XMLSEC_OPENSSL_INTDIR)\x509vfy.obj
XMLSEC_OPENSSL_OBJS_A = \
$(XMLSEC_OPENSSL_INTDIR_A)\app.obj\
$(XMLSEC_OPENSSL_INTDIR_A)\bn.obj \
@@ -215,6 +231,7 @@ XMLSEC_OPENSSL_OBJS_A = \
$(XMLSEC_OPENSSL_INTDIR_A)\crypto.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\digests.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\evp.obj \
+ $(XMLSEC_OPENSSL_INTDIR_A)\evp_signatures.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\hmac.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\kt_rsa.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\kw_aes.obj \
@@ -223,7 +240,7 @@ XMLSEC_OPENSSL_OBJS_A = \
$(XMLSEC_OPENSSL_INTDIR_A)\strings.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\symkeys.obj \
$(XMLSEC_OPENSSL_INTDIR_A)\x509.obj \
- $(XMLSEC_OPENSSL_INTDIR_A)\x509vfy.obj
+ $(XMLSEC_OPENSSL_INTDIR_A)\x509vfy.obj
XMLSEC_NSS_OBJS = \
$(XMLSEC_NSS_INTDIR)\app.obj\
@@ -293,6 +310,39 @@ XMLSEC_MSCRYPTO_OBJS_A = \
$(XMLSEC_MSCRYPTO_INTDIR_A)\x509.obj \
$(XMLSEC_MSCRYPTO_INTDIR_A)\x509vfy.obj
+XMLSEC_MSCNG_OBJS = \
+ $(XMLSEC_MSCNG_INTDIR)\app.obj\
+ $(XMLSEC_MSCNG_INTDIR)\certkeys.obj \
+ $(XMLSEC_MSCNG_INTDIR)\crypto.obj\
+ $(XMLSEC_MSCNG_INTDIR)\ciphers.obj \
+ $(XMLSEC_MSCNG_INTDIR)\digests.obj\
+ $(XMLSEC_MSCNG_INTDIR)\hmac.obj \
+ $(XMLSEC_MSCNG_INTDIR)\symkeys.obj \
+ $(XMLSEC_MSCNG_INTDIR)\kt_rsa.obj \
+ $(XMLSEC_MSCNG_INTDIR)\kw_aes.obj \
+ $(XMLSEC_MSCNG_INTDIR)\kw_des.obj \
+ $(XMLSEC_MSCNG_INTDIR)\strings.obj\
+ $(XMLSEC_MSCNG_INTDIR)\signatures.obj\
+ $(XMLSEC_MSCNG_INTDIR)\keysstore.obj \
+ $(XMLSEC_MSCNG_INTDIR)\x509.obj\
+ $(XMLSEC_MSCNG_INTDIR)\x509vfy.obj
+XMLSEC_MSCNG_OBJS_A = \
+ $(XMLSEC_MSCNG_INTDIR_A)\app.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\certkeys.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\crypto.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\ciphers.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\digests.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\hmac.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\symkeys.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\kt_rsa.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\kw_aes.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\kw_des.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\strings.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\signatures.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\keysstore.obj \
+ $(XMLSEC_MSCNG_INTDIR_A)\x509.obj\
+ $(XMLSEC_MSCNG_INTDIR_A)\x509vfy.obj
+
#
# The preprocessor and its options.
#
@@ -302,15 +352,29 @@ CPPFLAGS = /nologo
#
# The compiler and its options.
#
-CC = cl.exe
-CFLAGS = /nologo /D "WIN32" /D "_WINDOWS"
-CFLAGS = $(CFLAGS) /D "_MBCS" /D "_REENTRANT" /W1
+CFLAGS = $(CFLAGS) /nologo /D "WIN32" /D "_WINDOWS" /D inline=__inline
+# C4130: '!=': logical operation on address of string constant:
+# this generates a false warning inside macros
+# C4127: conditional expression is constant
+# this generates a false warning inside asserts
+# C4152: nonstandard extension, function/data pointer conversion in expression
+# this generates a false warning for XMLSEC_PTR_TO_FUNC
+CFLAGS = $(CFLAGS) /D "_MBCS" /D "_REENTRANT" /W4 /wd4130
+CFLAGS = $(CFLAGS) /wd4127 /wd4152
+
+!if "$(WERROR)" == "1"
+CFLAGS = $(CFLAGS) /WX
+!endif
+
CFLAGS = $(CFLAGS) /I$(BASEDIR) /I$(BASEDIR)\include
CFLAGS = $(CFLAGS) /I$(INCPREFIX)
-CFLAGS = $(CFLAGS) /D PACKAGE=\"$(XMLSEC_NAME)\"
+CFLAGS = $(CFLAGS) /D PACKAGE=\"$(XMLSEC_NAME)\"
CFLAGS = $(CFLAGS) /D "HAVE_STDIO_H" /D "HAVE_STDLIB_H"
CFLAGS = $(CFLAGS) /D "HAVE_STRING_H" /D "HAVE_CTYPE_H"
CFLAGS = $(CFLAGS) /D "HAVE_MALLOC_H" /D "HAVE_MEMORY_H"
+CFLAGS = $(CFLAGS) /D "XMLSEC_NO_GOST" /D "XMLSEC_NO_GOST2012"
+CFLAGS = $(CFLAGS) /D "XMLSEC_NO_SIZE_T"
+
!if "$(UNICODE)" == "1"
CFLAGS = $(CFLAGS) /D "UNICODE" /D "_UNICODE"
@@ -318,60 +382,60 @@ CFLAGS = $(CFLAGS) /D "UNICODE" /D "_UNICODE"
# Optimisation and debug symbols.
!if "$(DEBUG)" == "1"
-CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7 /MDd
+CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Zi
!else
-CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 /MD
+CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 /Zi
!endif
+CFLAGS = $(CFLAGS) $(CRUNTIME)
+
# configurable options
!if "$(WITH_LIBXSLT)" == "1"
-!else
+!else
CFLAGS = $(CFLAGS) /DXMLSEC_NO_XSLT=1
!endif
!if "$(WITH_NT4)" == "1"
CFLAGS = $(CFLAGS) /DXMLSEC_MSCRYPTO_NT4=1
-!else
+!else
!endif
-APP_CFLAGS = /D "XMLSEC_DEFAULT_CRYPTO=\"$(XMLSEC_DEFAULT_CRYPTO)\""
+CFLAGS = $(CFLAGS) /D "XMLSEC_DEFAULT_CRYPTO=\"$(XMLSEC_DEFAULT_CRYPTO)\""
!if "$(WITH_DL)" == "1"
CFLAGS = $(CFLAGS) /D "XMLSEC_DL_WIN32"
APP_CFLAGS = $(APP_CFLAGS) /D "XMLSEC_CRYPTO_DYNAMIC_LOADING"
!else
CFLAGS = $(CFLAGS) /D "XMLSEC_NO_CRYPTO_DYNAMIC_LOADING"
-APP_CFLAGS = $(APP_CFLAGS) $(XMLSEC_CRYPTO_CFLAGS)
+APP_CFLAGS = $(APP_CFLAGS) $(XMLSEC_CRYPTO_CFLAGS)
# this disables TEMPLATE tests and helps with missing algorithms (hmac) in mscrypto
APP_CFLAGS = $(APP_CFLAGS) /D "XMLSEC_NO_TMPL_TEST"
!endif
-!if "$(WITH_OPENSSL_VERSION)" == ""
XMLSEC_OPENSSL_CFLAGS = /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_DEFAULT_CRYPTO=\"openssl\""
-!else
-XMLSEC_OPENSSL_CFLAGS = /D "$(WITH_OPENSSL_VERSION)" /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_DEFAULT_CRYPTO=\"openssl\""
-!endif
XMLSEC_NSS_CFLAGS = /D "XMLSEC_CRYPTO_NSS" /D "XMLSEC_DEFAULT_CRYPTO=\"nss\""
XMLSEC_MSCRYPTO_CFLAGS = /D "XMLSEC_CRYPTO_MSCRYPTO" /D "XMLSEC_DEFAULT_CRYPTO=\"mscrypto\""
+XMLSEC_MSCNG_CFLAGS = /D "XMLSEC_CRYPTO_MSCNG" /D "XMLSEC_DEFAULT_CRYPTO=\"mscng\""
#
# The linker and its options.
#
-LD = link.exe
-LDFLAGS = /nologo
+LD = link.exe
+LDFLAGS = /nologo /debug
LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX)
-LIBS =
+LIBS =
# Optimisation and debug symbols.
!if "$(DEBUG)" == "1"
-LDFLAGS = $(LDFLAGS) /DEBUG
+LDFLAGS = $(LDFLAGS)
!else
-LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
+LDFLAGS = $(LDFLAGS) /opt:ref,icf
!endif
-SOLIBS = $(LIBS) libxml2.lib
-ALIBS = $(LIBS) libxml2_a.lib
+SOLIBS = $(LIBS) libxml2.lib ws2_32.lib
+ALIBS = $(LIBS) libxml2_a.lib ws2_32.lib
!if "$(WITH_ICONV)" == "1"
+CFLAGS = $(CFLAGS) /D "LIBXML_ICONV_ENABLED"
SOLIBS = $(SOLIBS) iconv.lib
ALIBS = $(ALIBS) iconv_a.lib
!endif
@@ -391,26 +455,34 @@ APP_LIBS = $(SOLIBS) $(XMLSEC_CRYPTO_SOLIBS)
!else
!endif
-XMLSEC_OPENSSL_SOLIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
-XMLSEC_OPENSSL_ALIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib
+!if "$(WITH_OPENSSL_VERSION)" == "XMLSEC_OPENSSL_110"
+XMLSEC_OPENSSL_SOLIBS = libcrypto.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib ws2_32.lib
+XMLSEC_OPENSSL_ALIBS = libcrypto.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib ws2_32.lib
+!else
+XMLSEC_OPENSSL_SOLIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
+XMLSEC_OPENSSL_ALIBS = libeay32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
+!endif
-XMLSEC_NSS_SOLIBS = smime3.lib ssl3.lib nss3.lib libnspr4.lib libplds4.lib libplc4.lib kernel32.lib user32.lib gdi32.lib
-XMLSEC_NSS_ALIBS = smime3.lib ssl3.lib nss3.lib libnspr4_s.lib libplds4_s.lib libplc4_s.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_NSS_SOLIBS = smime3.lib ssl3.lib nss3.lib libnspr4.lib libplds4.lib libplc4.lib kernel32.lib user32.lib gdi32.lib
+XMLSEC_NSS_ALIBS = smime3.lib ssl3.lib nss3.lib libnspr4_s.lib libplds4_s.lib libplc4_s.lib kernel32.lib user32.lib gdi32.lib
XMLSEC_MSCRYPTO_SOLIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
XMLSEC_MSCRYPTO_ALIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib
+XMLSEC_MSCNG_SOLIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib Bcrypt.lib Ncrypt.lib
+XMLSEC_MSCNG_ALIBS = kernel32.lib user32.lib gdi32.lib Crypt32.lib Advapi32.lib Bcrypt.lib Ncrypt.lib
+
# The archiver and its options.
AR = link.exe /lib
ARFLAGS = /nologo
-
#
# xmlsec-<default-crypto> options
#
-!if "$(WITH_DEFAULT_CRYPTO)" == "openssl"
+!if "$(WITH_DEFAULT_CRYPTO)" == "openssl"
XMLSEC_DEFAULT_CRYPTO = "openssl"
+XMLSEC_DEFAULT_CRYPTO_A = "openssla"
XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_OPENSSL_CFLAGS)
XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_OPENSSL_SOLIBS)
XMLSEC_CRYPTO_ALIBS = $(XMLSEC_OPENSSL_ALIBS)
@@ -421,6 +493,7 @@ XMLSEC_CRYPTO_A = $(XMLSEC_OPENSSL_A)
!if "$(WITH_DEFAULT_CRYPTO)" == "nss"
XMLSEC_DEFAULT_CRYPTO = "nss"
+XMLSEC_DEFAULT_CRYPTO_A = "nssa"
XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_NSS_CFLAGS)
XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_NSS_SOLIBS)
XMLSEC_CRYPTO_ALIBS = $(XMLSEC_NSS_ALIBS)
@@ -431,6 +504,7 @@ XMLSEC_CRYPTO_A = $(XMLSEC_NSS_A)
!if "$(WITH_DEFAULT_CRYPTO)" == "mscrypto"
XMLSEC_DEFAULT_CRYPTO = "mscrypto"
+XMLSEC_DEFAULT_CRYPTO_A = "mscryptoa"
XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_MSCRYPTO_CFLAGS)
XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_MSCRYPTO_SOLIBS)
XMLSEC_CRYPTO_ALIBS = $(XMLSEC_MSCRYPTO_ALIBS)
@@ -439,45 +513,62 @@ XMLSEC_CRYPTO_IMP = $(XMLSEC_MSCRYPTO_IMP)
XMLSEC_CRYPTO_A = $(XMLSEC_MSCRYPTO_A)
!endif
+!if "$(WITH_DEFAULT_CRYPTO)" == "mscng"
+XMLSEC_DEFAULT_CRYPTO = "mscng"
+XMLSEC_DEFAULT_CRYPTO_A = "mscnga"
+XMLSEC_CRYPTO_CFLAGS = $(XMLSEC_MSCNG_CFLAGS)
+XMLSEC_CRYPTO_SOLIBS = $(XMLSEC_MSCNG_SOLIBS)
+XMLSEC_CRYPTO_ALIBS = $(XMLSEC_MSCNG_ALIBS)
+XMLSEC_CRYPTO_SO = $(XMLSEC_MSCNG_SO)
+XMLSEC_CRYPTO_IMP = $(XMLSEC_MSCNG_IMP)
+XMLSEC_CRYPTO_A = $(XMLSEC_MSCNG_A)
+!endif
+
#
# Build rules
#
-all : xmlsec xmlseca $(WITH_CRYPTO) apps
+all : xmlsec xmlseca $(WITH_CRYPTO) apps
-xmlsec : $(XMLSEC_APPS_INTDIR) $(BINDIR)\$(XMLSEC_SO) $(WITH_DEFAULT_CRYPTO)
+xmlsec : $(XMLSEC_APPS_INTDIR) $(BINDIR)\$(XMLSEC_SO) $(XMLSEC_DEFAULT_CRYPTO)
-xmlseca : $(XMLSEC_APPS_INTDIR_A) $(BINDIR)\$(XMLSEC_A) $(WITH_DEFAULT_CRYPTO)
+xmlseca : $(XMLSEC_APPS_INTDIR_A) $(BINDIR)\$(XMLSEC_A) $(XMLSEC_DEFAULT_CRYPTO_A)
-openssl: $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(BINDIR)\$(XMLSEC_OPENSSL_A)
+openssla: $(BINDIR)\$(XMLSEC_OPENSSL_A)
+openssl: $(BINDIR)\$(XMLSEC_OPENSSL_SO) openssla
-nss: $(BINDIR)\$(XMLSEC_NSS_SO) $(BINDIR)\$(XMLSEC_NSS_A)
+nssa: $(BINDIR)\$(XMLSEC_NSS_A)
+nss: $(BINDIR)\$(XMLSEC_NSS_SO) nssa
+mscryptoa: $(BINDIR)\$(XMLSEC_MSCRYPTO_A)
mscrypto: $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) $(BINDIR)\$(XMLSEC_MSCRYPTO_A)
+mscnga: $(BINDIR)\$(XMLSEC_MSCNG_A)
+mscng: $(BINDIR)\$(XMLSEC_MSCNG_SO) $(BINDIR)\$(XMLSEC_MSCNG_A)
+
apps : $(BINDIR)\$(APP_NAME)
check : check-keys check-dsig check-enc
check-keys : $(BINDIR)\$(APP_NAME)
cd ..
- if not exist win32\tmp mkdir win32\tmp
- set TMPFOLDER=win32/tmp
- sh ./tests/testrun.sh ./tests/testKeys.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ if not exist %MAKEDIR%\tmp mkdir %MAKEDIR%\tmp
+ set TMPFOLDER=%MAKEDIR%\tmp
+ sh ./tests/testrun.sh ./tests/testKeys.sh "$(WITH_DEFAULT_CRYPTO)" ./tests win32/$(BINDIR)/$(APP_NAME) der
cd win32
-check-dsig : $(BINDIR)\$(APP_NAME)
+check-dsig : $(BINDIR)\$(APP_NAME)
cd ..
- if not exist win32\tmp mkdir win32\tmp
- set TMPFOLDER=win32/tmp
- sh ./tests/testrun.sh ./tests/testDSig.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ if not exist %MAKEDIR%\tmp mkdir %MAKEDIR%\tmp
+ set TMPFOLDER=%MAKEDIR%\tmp
+ sh ./tests/testrun.sh ./tests/testDSig.sh "$(WITH_DEFAULT_CRYPTO)" ./tests win32/$(BINDIR)/$(APP_NAME) der
cd win32
check-enc : $(BINDIR)\$(APP_NAME)
cd ..
- if not exist win32\tmp mkdir win32\tmp
- set TMPFOLDER=win32/tmp
- sh ./tests/testrun.sh ./tests/testEnc.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
+ if not exist %MAKEDIR%\tmp mkdir %MAKEDIR%\tmp
+ set TMPFOLDER=%MAKEDIR%\tmp
+ sh ./tests/testrun.sh ./tests/testEnc.sh "$(WITH_DEFAULT_CRYPTO)" ./tests win32/$(BINDIR)/$(APP_NAME) der
cd win32
clean :
@@ -489,6 +580,8 @@ clean :
if exist $(XMLSEC_NSS_INTDIR_A) rmdir /S /Q $(XMLSEC_NSS_INTDIR_A)
if exist $(XMLSEC_MSCRYPTO_INTDIR) rmdir /S /Q $(XMLSEC_MSCRYPTO_INTDIR)
if exist $(XMLSEC_MSCRYPTO_INTDIR_A) rmdir /S /Q $(XMLSEC_MSCRYPTO_INTDIR_A)
+ if exist $(XMLSEC_MSCNG_INTDIR) rmdir /S /Q $(XMLSEC_MSCNG_INTDIR)
+ if exist $(XMLSEC_MSCNG_INTDIR_A) rmdir /S /Q $(XMLSEC_MSCNG_INTDIR_A)
if exist $(XMLSEC_APPS_INTDIR) rmdir /S /Q $(XMLSEC_APPS_INTDIR)
if exist $(XMLSEC_APPS_INTDIR_A) rmdir /S /Q $(XMLSEC_APPS_INTDIR_A)
if exist $(BINDIR) rmdir /S /Q $(BINDIR)
@@ -502,26 +595,37 @@ install : all
if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\openssl mkdir $(INCPREFIX)\$(XMLSEC_NAME)\openssl
if exist $(BINDIR)\$(XMLSEC_NSS_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\nss mkdir $(INCPREFIX)\$(XMLSEC_NAME)\nss
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto mkdir $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_SO) if not exist $(INCPREFIX)\$(XMLSEC_NAME)\mscng mkdir $(INCPREFIX)\$(XMLSEC_NAME)\mscng
if exist $(BASEDIR)\include\$(XMLSEC_NAME) copy $(BASEDIR)\include\$(XMLSEC_NAME)\*.h $(INCPREFIX)\$(XMLSEC_NAME)
if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\openssl\*.h $(INCPREFIX)\$(XMLSEC_NAME)\openssl
if exist $(BINDIR)\$(XMLSEC_NSS_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\nss\*.h $(INCPREFIX)\$(XMLSEC_NAME)\nss
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\mscrypto\*.h $(INCPREFIX)\$(XMLSEC_NAME)\mscrypto
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_SO) copy $(BASEDIR)\include\$(XMLSEC_NAME)\mscng\*.h $(INCPREFIX)\$(XMLSEC_NAME)\mscng
if exist $(BINDIR)\$(XMLSEC_SO) copy $(BINDIR)\$(XMLSEC_SO) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_PDB) copy $(BINDIR)\$(XMLSEC_PDB) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_A) copy $(BINDIR)\$(XMLSEC_A) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_IMP) copy $(BINDIR)\$(XMLSEC_IMP) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO) copy $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_OPENSSL_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_OPENSSL_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_OPENSSL_PDB) copy $(BINDIR)\$(XMLSEC_OPENSSL_PDB) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_OPENSSL_A) copy $(BINDIR)\$(XMLSEC_OPENSSL_A) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_OPENSSL_IMP) copy $(BINDIR)\$(XMLSEC_OPENSSL_IMP) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_NSS_SO) copy $(BINDIR)\$(XMLSEC_NSS_SO) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_NSS_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_NSS_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_NSS_PDB) copy $(BINDIR)\$(XMLSEC_NSS_PDB) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_NSS_A) copy $(BINDIR)\$(XMLSEC_NSS_A) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_NSS_IMP) copy $(BINDIR)\$(XMLSEC_NSS_IMP) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_PDB) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_PDB) $(SOPREFIX)
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_A) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_A) $(LIBPREFIX)
if exist $(BINDIR)\$(XMLSEC_MSCRYPTO_IMP) copy $(BINDIR)\$(XMLSEC_MSCRYPTO_IMP) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_SO) copy $(BINDIR)\$(XMLSEC_MSCNG_SO) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_SO_MANIFEST) copy $(BINDIR)\$(XMLSEC_MSCNG_SO_MANIFEST) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_PDB) copy $(BINDIR)\$(XMLSEC_MSCNG_PDB) $(SOPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_A) copy $(BINDIR)\$(XMLSEC_MSCNG_A) $(LIBPREFIX)
+ if exist $(BINDIR)\$(XMLSEC_MSCNG_IMP) copy $(BINDIR)\$(XMLSEC_MSCNG_IMP) $(LIBPREFIX)
if exist $(BINDIR)\$(APP_NAME) copy $(BINDIR)\$(APP_NAME) $(BINPREFIX)
if exist $(BINDIR)\$(APP_NAME_MANIFEST) copy $(BINDIR)\$(APP_NAME_MANIFEST) $(BINPREFIX)
@@ -529,20 +633,29 @@ uninstall :
if exist $(INCPREFIX)\$(XMLSEC_NAME) rmdir /S /Q $(INCPREFIX)\$(XMLSEC_NAME)
if exist $(SOPREFIX)\$(XMLSEC_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_SO)
if exist $(SOPREFIX)\$(XMLSEC_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_PDB) del /F /S /Q $(SOPREFIX)\$(XMLSEC_PDB)
if exist $(LIBPREFIX)\$(XMLSEC_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_A)
if exist $(LIBPREFIX)\$(XMLSEC_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_IMP)
if exist $(SOPREFIX)\$(XMLSEC_OPENSSL_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_OPENSSL_SO)
if exist $(SOPREFIX)\$(XMLSEC_OPENSSL_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_OPENSSL_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_OPENSSL_PDB) del /F /S /Q $(SOPREFIX)\$(XMLSEC_OPENSSL_PDB)
if exist $(LIBPREFIX)\$(XMLSEC_OPENSSL_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_OPENSSL_A)
if exist $(LIBPREFIX)\$(XMLSEC_OPENSSL_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_OPENSSL_IMP)
if exist $(SOPREFIX)\$(XMLSEC_NSS_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_NSS_SO)
if exist $(SOPREFIX)\$(XMLSEC_NSS_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_NSS_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_NSS_PDB) del /F /S /Q $(SOPREFIX)\$(XMLSEC_NSS_PDB)
if exist $(LIBPREFIX)\$(XMLSEC_NSS_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_NSS_A)
if exist $(LIBPREFIX)\$(XMLSEC_NSS_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_NSS_IMP)
if exist $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO)
if exist $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCRYPTO_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCRYPTO_PDB) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCRYPTO_PDB)
if exist $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_A)
if exist $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCRYPTO_IMP)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCNG_SO) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCNG_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCNG_SO_MANIFEST) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCNG_SO)
+ if exist $(SOPREFIX)\$(XMLSEC_MSCNG_PDB) del /F /S /Q $(SOPREFIX)\$(XMLSEC_MSCNG_PDB)
+ if exist $(LIBPREFIX)\$(XMLSEC_MSCNG_A) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCNG_A)
+ if exist $(LIBPREFIX)\$(XMLSEC_MSCNG_IMP) del /F /S /Q $(LIBPREFIX)\$(XMLSEC_MSCNG_IMP)
if exist $(BINPREFIX)\$(APP_NAME) del /F /S /Q $(BINPREFIX)\$(APP_NAME)
if exist $(BINPREFIX)\$(APP_NAME_MANIFEST) del /F /S /Q $(BINPREFIX)\$(APP_NAME_MANIFEST)
@@ -584,6 +697,11 @@ $(XMLSEC_MSCRYPTO_INTDIR) :
$(XMLSEC_MSCRYPTO_INTDIR_A) :
if not exist $(XMLSEC_MSCRYPTO_INTDIR_A) mkdir $(XMLSEC_MSCRYPTO_INTDIR_A)
+$(XMLSEC_MSCNG_INTDIR) :
+ if not exist $(XMLSEC_MSCNG_INTDIR) mkdir $(XMLSEC_MSCNG_INTDIR)
+$(XMLSEC_MSCNG_INTDIR_A) :
+ if not exist $(XMLSEC_MSCNG_INTDIR_A) mkdir $(XMLSEC_MSCNG_INTDIR_A)
+
# An implicit rule for xmlsec compilation.
{$(APPS_SRCDIR)}.c{$(XMLSEC_APPS_INTDIR)}.obj::
$(CC) $(CFLAGS) $(APP_CFLAGS) /Fo$(XMLSEC_APPS_INTDIR)\ /c $<
@@ -606,6 +724,11 @@ $(XMLSEC_MSCRYPTO_INTDIR_A) :
{$(XMLSEC_MSCRYPTO_SRCDIR)}.c{$(XMLSEC_MSCRYPTO_INTDIR)}.obj::
$(CC) $(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR)\ /c $<
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_MSCNG_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_MSCNG_CFLAGS) /Fo$(XMLSEC_MSCNG_INTDIR)\ /c $<
+{$(XMLSEC_MSCNG_SRCDIR)}.c{$(XMLSEC_MSCNG_INTDIR)}.obj::
+ $(CC) $(CFLAGS) $(XMLSEC_MSCNG_CFLAGS) /Fo$(XMLSEC_MSCNG_INTDIR)\ /c $<
+
# An implicit rule for static xmlsec compilation.
{$(APPS_SRCDIR)}.c{$(XMLSEC_APPS_INTDIR_A)}.obj::
$(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
@@ -636,6 +759,13 @@ $(XMLSEC_MSCRYPTO_INTDIR_A) :
$(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
$(CFLAGS) $(XMLSEC_MSCRYPTO_CFLAGS) /Fo$(XMLSEC_MSCRYPTO_INTDIR_A)\ /c $<
+{$(XMLSEC_SRCDIR)}.c{$(XMLSEC_MSCNG_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_MSCNG_CFLAGS) /Fo$(XMLSEC_MSCNG_INTDIR_A)\ /c $<
+{$(XMLSEC_MSCNG_SRCDIR)}.c{$(XMLSEC_MSCNG_INTDIR_A)}.obj::
+ $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC" \
+ $(CFLAGS) $(XMLSEC_MSCNG_CFLAGS) /Fo$(XMLSEC_MSCNG_INTDIR_A)\ /c $<
+
# Compiles xmlsec source. Uses the implicit rule for commands.
$(XMLSEC_OBJS) : $(XMLSEC_INTDIR)
$(XMLSEC_OBJS_A) : $(XMLSEC_INTDIR_A)
@@ -649,6 +779,9 @@ $(XMLSEC_NSS_OBJS_A) : $(XMLSEC_NSS_INTDIR_A)
$(XMLSEC_MSCRYPTO_OBJS) : $(XMLSEC_MSCRYPTO_INTDIR)
$(XMLSEC_MSCRYPTO_OBJS_A) : $(XMLSEC_MSCRYPTO_INTDIR_A)
+$(XMLSEC_MSCNG_OBJS) : $(XMLSEC_MSCNG_INTDIR)
+$(XMLSEC_MSCNG_OBJS_A) : $(XMLSEC_MSCNG_INTDIR_A)
+
# Creates the shared objects and archives.
$(BINDIR)\$(XMLSEC_SO) : $(BINDIR) $(XMLSEC_OBJS)
$(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
@@ -678,6 +811,13 @@ $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) : $(BINDIR) $(XMLSEC_MSCRYPTO_OBJS)
$(BINDIR)\$(XMLSEC_MSCRYPTO_A) : $(BINDIR) $(XMLSEC_MSCRYPTO_OBJS_A)
$(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_MSCRYPTO_A) $(XMLSEC_MSCRYPTO_OBJS_A)
+$(BINDIR)\$(XMLSEC_MSCNG_SO) : $(BINDIR) $(XMLSEC_MSCNG_OBJS)
+ $(LD) $(LDFLAGS) /DLL /VERSION:$(XMLSEC_VERSION_MAJOR).$(XMLSEC_VERSION_MINOR) \
+ /IMPLIB:$(BINDIR)\$(XMLSEC_MSCNG_IMP) /OUT:$(BINDIR)\$(XMLSEC_MSCNG_SO) \
+ $(XMLSEC_MSCNG_OBJS) $(XMLSEC_IMP) $(SOLIBS) $(XMLSEC_MSCNG_SOLIBS)
+$(BINDIR)\$(XMLSEC_MSCNG_A) : $(BINDIR) $(XMLSEC_MSCNG_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XMLSEC_MSCNG_A) $(XMLSEC_MSCNG_OBJS_A)
+
# An implicit rule for xmlsec command line tool
$(BINDIR)\xmlseca.exe: $(BINDIR) $(XMLSEC_APPS_OBJS_A)
$(LD) $(LDFLAGS) /OUT:$@ $(XMLSEC_A) $(XMLSEC_CRYPTO_A) $(APP_LIBS) $(XMLSEC_APPS_OBJS_A)
diff --git a/win32/README.txt b/win32/README.txt
index 7040e050..ddb9edf3 100644
--- a/win32/README.txt
+++ b/win32/README.txt
@@ -127,7 +127,7 @@ you need to add one of the following global defines:
#define XMLSEC_CRYPTO_NSS
Also you'll need to define all configuration parameters used during XML Security
-Library compilation (XMLSEC_OPENSSL_100, XMLSEC_NO_AES, XMLSEC_NO_X509,...).
+Library compilation (XMLSEC_NO_AES, XMLSEC_NO_X509,...).
2.1 Additional Global Defines for static linking.
------------- ------------- ------------- ------
diff --git a/win32/configure.js b/win32/configure.js
index 7bbba19e..854a46af 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -1,5 +1,5 @@
/* Configure script for xmlsec, specific for Windows with Scripting Host.
- *
+ *
* This script will configure the libxmlsec build process and create necessary files.
* Run it with an 'help', or an invalid option and it will tell you what options
* it accepts.
@@ -30,7 +30,11 @@ var versionFile = ".\\configure.txt";
var optsFileIn = baseDir + "\\config.h.in";
var optsFile = baseDir + "\\config.h";
-/* Version strings for the binary distribution. Will be filled later
+/* Input and output files regarding the xmlsec version. */
+var versionHeaderIn = baseDir + "\\include\\xmlsec\\version.h.in";
+var versionHeader = baseDir + "\\include\\xmlsec\\version.h";
+
+/* Version strings for the binary distribution. Will be filled later
in the code. */
var verMajorXmlSec;
var verMinorXmlSec;
@@ -43,6 +47,7 @@ var withOpenSSL = 0;
var withOpenSSLVersion = "";
var withNss = 0;
var withMSCrypto = 0;
+var withMSCng = 0;
var withLibXSLT = 1;
var withIconv = 1;
var withNT4 = 1;
@@ -50,15 +55,20 @@ var withNT4 = 1;
/* Win32 build options. */
var buildUnicode = 1;
var buildDebug = 0;
+var buildWerror = 0;
+var buildCc = "cl.exe";
+var buildCflags = "";
var buildStatic = 1;
var buildWithDLSupport = 1;
var buildPrefix = ".";
var buildBinPrefix = "$(PREFIX)\\bin";
var buildIncPrefix = "$(PREFIX)\\include";
var buildLibPrefix = "$(PREFIX)\\lib";
-var buildSoPrefix = "$(PREFIX)\\lib";
+var buildSoPrefix = "$(PREFIX)\\bin";
var buildInclude = ".";
var buildLib = ".";
+var cruntime = "/MD";
+
/* Local stuff */
var error = 0;
@@ -97,14 +107,17 @@ function usage()
txt += "either 'yes' or 'no'.\n\n";
txt += "XmlSec Library options, default value given in parentheses:\n\n";
txt += " crypto: Crypto engines list, first is default: \"openssl\",\n";
- txt += " \"openssl=096\", \"openssl=097\", \"openssl=098\", \n";
- txt += " \"nss\", \"mscrypto\" (\"" + withCrypto + "\");\n"
- txt += " xslt: LibXSLT is used (" + (withLibXSLT? "yes" : "no") + ")\n";
- txt += " iconv: Use the iconv library (" + (withIconv? "yes" : "no") + ")\n";
- txt += " nt4: Enable NT 4.0 support (" + (withNT4? "yes" : "no") + ")\n";
+ txt += " \"openssl=100\", \"openssl=110\", \n";
+ txt += " \"nss\", \"mscrypto\", \"mscng\" (\"" + withCrypto + "\");\n"
+ txt += " xslt: LibXSLT is used (" + (withLibXSLT? "yes" : "no") + ")\n";
+ txt += " iconv: Use the iconv library (" + (withIconv? "yes" : "no") + ")\n";
+ txt += " nt4: Enable NT 4.0 support (" + (withNT4? "yes" : "no") + ")\n";
txt += "\nWin32 build options, default value given in parentheses:\n\n";
txt += " unicode: Build Unicode version (" + (buildUnicode? "yes" : "no") + ")\n";
txt += " debug: Build unoptimised debug executables (" + (buildDebug? "yes" : "no") + ")\n";
+ txt += " werror: Build with warnings as errors(" + (buildWerror? "yes" : "no") + ")\n";
+ txt += " cc: Build with the specified compiler(" + buildCc + ")\n";
+ txt += " cflags: Build with the specified compiler flags('" + buildCflags + "')\n";
txt += " static: Link libxmlsec statically to xmlsec (" + (buildStatic? "yes" : "no") + ")\n";
txt += " with-dl: Enable dynamic loading of xmlsec-crypto libraries (" + (buildWithDLSupport? "yes" : "no") + ")\n";
txt += " prefix: Base directory for the installation (" + buildPrefix + ")\n";
@@ -114,7 +127,7 @@ function usage()
txt += " (" + buildIncPrefix + ")\n";
txt += " libdir: Directory where static and import libraries should be\n";
txt += " installed (" + buildLibPrefix + ")\n";
- txt += " sodir: Directory where shared libraries should be installed\n";
+ txt += " sodir: Directory where shared libraries should be installed\n";
txt += " (" + buildSoPrefix + ")\n";
txt += " include: Additional search path for the compiler, particularily\n";
txt += " where libxml headers can be found (" + buildInclude + ")\n";
@@ -149,24 +162,28 @@ function discoverVersion()
} else if(s.search(/^XMLSEC_VERSION_SUBMINOR/) != -1) {
vf.WriteLine(s);
verMicroXmlSec = s.substring(s.indexOf("=") + 1, s.length)
- }
+ }
}
cf.Close();
vf.WriteLine("BASEDIR=" + baseDir);
vf.WriteLine("XMLSEC_SRCDIR=" + srcDir);
vf.WriteLine("APPS_SRCDIR=" + srcDirApps);
vf.WriteLine("BINDIR=" + binDir);
- vf.WriteLine("WITH_CRYPTO=" + withCrypto);
- vf.WriteLine("WITH_DEFAULT_CRYPTO=" + withDefaultCrypto);
- vf.WriteLine("WITH_OPENSSL=" + withOpenSSL);
- vf.WriteLine("WITH_OPENSSL_VERSION=XMLSEC_OPENSSL_" + withOpenSSLVersion);
- vf.WriteLine("WITH_NSS=" + withNss);
- vf.WriteLine("WITH_MSCRYPTO=" + withMSCrypto);
+ vf.WriteLine("WITH_CRYPTO=" + withCrypto);
+ vf.WriteLine("WITH_DEFAULT_CRYPTO=" + withDefaultCrypto);
+ vf.WriteLine("WITH_OPENSSL=" + withOpenSSL);
+ vf.WriteLine("WITH_OPENSSL_VERSION=XMLSEC_OPENSSL_" + withOpenSSLVersion);
+ vf.WriteLine("WITH_NSS=" + withNss);
+ vf.WriteLine("WITH_MSCRYPTO=" + withMSCrypto);
+ vf.WriteLine("WITH_MSCNG=" + withMSCng);
vf.WriteLine("WITH_LIBXSLT=" + (withLibXSLT ? "1" : "0"));
vf.WriteLine("WITH_ICONV=" + (withIconv ? "1" : "0"));
vf.WriteLine("WITH_NT4=" + (withNT4 ? "1" : "0"));
vf.WriteLine("UNICODE=" + (buildUnicode? "1" : "0"));
vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
+ vf.WriteLine("WERROR=" + (buildWerror? "1" : "0"));
+ vf.WriteLine("CC=" + buildCc);
+ vf.WriteLine("CFLAGS=" + buildCflags);
vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
vf.WriteLine("WITH_DL=" + (buildWithDLSupport ? "1" : "0"));
vf.WriteLine("PREFIX=" + buildPrefix);
@@ -176,6 +193,7 @@ function discoverVersion()
vf.WriteLine("SOPREFIX=" + buildSoPrefix);
vf.WriteLine("INCLUDE=$(INCLUDE);" + buildInclude);
vf.WriteLine("LIB=$(LIB);" + buildLib);
+ vf.WriteLine("CRUNTIME=" + cruntime);
vf.Close();
}
@@ -191,10 +209,10 @@ function configureXmlSec()
ln = ofi.ReadLine();
s = new String(ln);
if (s.search(/\@VERSION\@/) != -1) {
- of.WriteLine(s.replace(/\@VERSION\@/,
+ of.WriteLine(s.replace(/\@VERSION\@/,
verMajorXmlSec + "." + verMinorXmlSec + "." + verMicroXmlSec));
} else if (s.search(/\@XMLSECVERSION_NUMBER\@/) != -1) {
- of.WriteLine(s.replace(/\@XMLSECVERSION_NUMBER\@/,
+ of.WriteLine(s.replace(/\@XMLSECVERSION_NUMBER\@/,
verMajorXmlSec*10000 + verMinorXmlSec*100 + verMicroXmlSec*1));
} else
of.WriteLine(ln);
@@ -203,6 +221,43 @@ function configureXmlSec()
of.Close();
}
+/* This one will generate version.h from version.h.in. */
+function configureXmlSecVersion()
+{
+ var fso, ofi, of, ln, s;
+ fso = new ActiveXObject("Scripting.FileSystemObject");
+ if (fso.FileExists(versionHeader)) {
+ // version.h is already generated, nothing to do.
+ return;
+ }
+
+ ofi = fso.OpenTextFile(versionHeaderIn, 1);
+ of = fso.CreateTextFile(versionHeader, true);
+ while (ofi.AtEndOfStream != true) {
+ ln = ofi.ReadLine();
+ s = new String(ln);
+ if (s.search(/\@XMLSEC_VERSION_MAJOR\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSEC_VERSION_MAJOR\@/,
+ verMajorXmlSec));
+ } else if (s.search(/\@XMLSEC_VERSION_MINOR\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSEC_VERSION_MINOR\@/,
+ verMinorXmlSec));
+ } else if (s.search(/\@XMLSEC_VERSION_SUBMINOR\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSEC_VERSION_SUBMINOR\@/,
+ verMicroXmlSec));
+ } else if (s.search(/\@XMLSEC_VERSION\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSEC_VERSION\@/,
+ verMajorXmlSec + "." + verMinorXmlSec + "." + verMicroXmlSec));
+ } else if (s.search(/\@XMLSEC_VERSION_INFO\@/) != -1) {
+ of.WriteLine(s.replace(/\@XMLSEC_VERSION_INFO\@/,
+ (parseInt(verMajorXmlSec) + parseInt(verMinorXmlSec)) + ":" + verMicroXmlSec + ":" + verMinorXmlSec));
+ } else
+ of.WriteLine(ln);
+ }
+ ofi.Close();
+ of.Close();
+}
+
/* Creates the readme file for the binary distribution of 'bname', for the
version 'ver' in the file 'file'. This one is called from the Makefile when
generating a binary distribution. The parameters are passed by make. */
@@ -226,7 +281,7 @@ function genReadme(bname, ver, file)
f.WriteLine("environment variable.");
f.WriteLine(" If you want to make programmes in C which use " + bname + ", you'll");
f.WriteLine("likely know how to use the contents of this package. If you don't, please");
- f.WriteLine("refer to your compiler's documentation.");
+ f.WriteLine("refer to your compiler's documentation.");
f.WriteBlankLines(1);
f.WriteLine(" If there is something you cannot keep for yourself, such as a problem,");
f.WriteLine("a cheer of joy, a comment or a suggestion, feel free to contact me using");
@@ -261,6 +316,12 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
buildUnicode = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "debug")
buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "werror")
+ buildWerror = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "cc")
+ buildCc = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "cflags")
+ buildCflags = arg.substring(opt.length + 1, arg.length);
else if (opt == "static")
buildStatic = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "with-dl")
@@ -281,6 +342,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
buildInclude = arg.substring(opt.length + 1, arg.length);
else if (opt == "lib")
buildLib = arg.substring(opt.length + 1, arg.length);
+ else if (opt == "cruntime")
+ cruntime = arg.substring(opt.length + 1, arg.length);
else
error = 1;
} else if (i == 0) {
@@ -304,18 +367,14 @@ if (error != 0) {
// Discover crypto support
var crlist, j, curcrypto;
-crlist = withCrypto.split(",");
+crlist = withCrypto.split(",");
withCrypto = "";
withDefaultCrypto = "";
-for (j = 0; j < crlist.length; j++) {
+for (j = 0; j < crlist.length; j++) {
if (crlist[j] == "openssl") {
curcrypto="openssl";
withOpenSSL = 1;
- withOpenSSLVersion = "100"; /* default */
- } else if (crlist[j] == "openssl=098") {
- curcrypto="openssl";
- withOpenSSL = 1;
- withOpenSSLVersion = "098";
+ withOpenSSLVersion = "110"; /* default */
} else if (crlist[j] == "openssl=100") {
curcrypto="openssl";
withOpenSSL = 1;
@@ -330,6 +389,9 @@ for (j = 0; j < crlist.length; j++) {
} else if (crlist[j] == "mscrypto") {
curcrypto="mscrypto";
withMSCrypto = 1;
+ } else if (crlist[j] == "mscng") {
+ curcrypto="mscng";
+ withMSCng = 1;
} else {
WScript.Echo("Unknown crypto engine \"" + crlist[j] + "\" is found. Aborting.");
WScript.Quit(error);
@@ -353,6 +415,8 @@ WScript.Echo(baseName + " version: " + verMajorXmlSec + "." + verMinorXmlSec + "
// Configure libxmlsec.
configureXmlSec();
+// Generate version.h.
+configureXmlSecVersion();
if (error != 0) {
WScript.Echo("Configuration failed, aborting.");
WScript.Quit(error);
@@ -373,14 +437,19 @@ txtOut += " Use OpenSSL: " + boolToStr(withOpenSSL) + "\n";
txtOut += "Use OpenSSL Version: " + withOpenSSLVersion + "\n";
txtOut += " Use NSS: " + boolToStr(withNss) + "\n";
txtOut += " Use MSCrypto: " + boolToStr(withMSCrypto) + "\n";
+txtOut += " Use MSCng: " + boolToStr(withMSCng) + "\n";
txtOut += " Use LibXSLT: " + boolToStr(withLibXSLT) + "\n";
txtOut += " Use iconv: " + boolToStr(withIconv) + "\n";
txtOut += " NT 4.0 support: " + boolToStr(withNT4) + "\n";
txtOut += "\n";
txtOut += "Win32 build configuration\n";
txtOut += "-------------------------\n";
+txtOut += " C-Runtime option: " + cruntime + "\n";
txtOut += " Unicode: " + boolToStr(buildUnicode) + "\n";
txtOut += " Debug symbols: " + boolToStr(buildDebug) + "\n";
+txtOut += "Warnings as errors: " + boolToStr(buildWerror) + "\n";
+txtOut += " C compiler: " + buildCc + "\n";
+txtOut += " C compiler flags: " + buildCflags + "\n";
txtOut += " Static xmlsec: " + boolToStr(buildStatic) + "\n";
txtOut += " Enable DL support: " + boolToStr(buildWithDLSupport) + "\n";
txtOut += " Install prefix: " + buildPrefix + "\n";
diff --git a/win32/mycfg.bat b/win32/mycfg.bat
index 17617b0c..5e4819c8 100644
--- a/win32/mycfg.bat
+++ b/win32/mycfg.bat
@@ -8,14 +8,16 @@ REM
REM Aleksey Sanin <aleksey@aleksey.com>
REM
-SET PREFIX=C:\cygwin\home\local
-SET XMLSEC_INCLUDE=%PREFIX%\include;%PREFIX%\include\mozilla;%PREFIX%\include\mozilla\nspr;%PREFIX%\include\mozilla\nss;%MSSDK_INCLUDE%
+SET PREFIX=C:\local
+SET XMLSEC_CRYPTO=openssl
+SET XMLSEC_INCLUDE=%PREFIX%\include;%MSSDK_INCLUDE%
SET XMLSEC_LIB=%PREFIX%\lib;%MSSDK_LIB%
-SET XMLSEC_OPTIONS=static=no iconv=no debug=yes xslt=yes crypto=mscrypto,openssl unicode=yes
+SET XMLSEC_OPTIONS=static=yes iconv=no debug=yes xslt=yes crypto=%XMLSEC_CRYPTO% unicode=yes
del /F Makefile configure.txt
-cscript configure.js prefix=%PREFIX% %XMLSEC_OPTIONS% include=%XMLSEC_INCLUDE% lib=%XMLSEC_LIB%
+cscript configure.js prefix=%PREFIX% %XMLSEC_OPTIONS% include=%XMLSEC_INCLUDE% lib=%XMLSEC_LIB%
mkdir binaries
copy %PREFIX%\bin\*.dll binaries
copy %PREFIX%\lib\*.dll binaries
+
diff --git a/xmlsec-gcrypt.pc.in b/xmlsec-gcrypt.pc.in
index 95627d55..79f8ce42 100644
--- a/xmlsec-gcrypt.pc.in
+++ b/xmlsec-gcrypt.pc.in
@@ -8,4 +8,5 @@ Version: @VERSION@
Description: XML Security Library implements XML Signature and XML Encryption standards
Requires: libxml-2.0 >= @LIBXML_MIN_VERSION@ @LIBXSLT_PC_FILE_COND@
Cflags: @XMLSEC_GCRYPT_CFLAGS@
+Cflags.private: -DXMLSEC_STATIC
Libs: @XMLSEC_GCRYPT_LIBS@
diff --git a/xmlsec-gnutls.pc.in b/xmlsec-gnutls.pc.in
index ababfa00..712e1a44 100644
--- a/xmlsec-gnutls.pc.in
+++ b/xmlsec-gnutls.pc.in
@@ -8,4 +8,5 @@ Version: @VERSION@
Description: XML Security Library implements XML Signature and XML Encryption standards
Requires: libxml-2.0 >= @LIBXML_MIN_VERSION@ @LIBXSLT_PC_FILE_COND@
Cflags: @XMLSEC_GNUTLS_CFLAGS@
+Cflags.private: -DXMLSEC_STATIC
Libs: @XMLSEC_GNUTLS_LIBS@
diff --git a/xmlsec-nss.pc.in b/xmlsec-nss.pc.in
index a9654c2e..153620f1 100644
--- a/xmlsec-nss.pc.in
+++ b/xmlsec-nss.pc.in
@@ -8,4 +8,5 @@ Version: @VERSION@
Description: XML Security Library implements XML Signature and XML Encryption standards
Requires: libxml-2.0 >= @LIBXML_MIN_VERSION@ @LIBXSLT_PC_FILE_COND@ @NSPR_PACKAGE@ >= @MOZILLA_MIN_VERSION@ @NSS_PACKAGE@ >= @MOZILLA_MIN_VERSION@
Cflags: -DXMLSEC_CRYPTO_NSS=1 @XMLSEC_CORE_CFLAGS@
+Cflags.private: -DXMLSEC_STATIC
Libs: -L${libdir} -lxmlsec1-nss @XMLSEC_CORE_LIBS@
diff --git a/xmlsec-openssl.pc.in b/xmlsec-openssl.pc.in
index 40635cfa..af3ae29b 100644
--- a/xmlsec-openssl.pc.in
+++ b/xmlsec-openssl.pc.in
@@ -8,4 +8,5 @@ Version: @VERSION@
Description: XML Security Library implements XML Signature and XML Encryption standards
Requires: libxml-2.0 >= @LIBXML_MIN_VERSION@ @LIBXSLT_PC_FILE_COND@
Cflags: @XMLSEC_OPENSSL_CFLAGS@
+Cflags.private: -DXMLSEC_STATIC
Libs: @XMLSEC_OPENSSL_LIBS@
diff --git a/xmlsec1.spec b/xmlsec1.spec
index 010778cd..5d1240f2 100644
--- a/xmlsec1.spec
+++ b/xmlsec1.spec
@@ -1,6 +1,6 @@
Summary: Library providing support for "XML Signature" and "XML Encryption" standards
Name: xmlsec1
-Version: 1.2.22
+Version: 1.2.28
Release: 1
License: MIT
Group: Development/Libraries
@@ -10,10 +10,10 @@ Packager: Aleksey Sanin <aleksey@aleksey.com>
Source: ftp://ftp.aleksey.com/pub/xmlsec/releases/xmlsec1-%{version}.tar.gz
BuildRoot: %{_tmppath}/xmlsec1-%{version}-root
URL: http://www.aleksey.com/xmlsec
-Requires: libxml2 >= 2.7.4
+Requires: libxml2 >= 2.8.0
Requires: libxslt >= 1.0.20
Requires: libtool-ltdl
-BuildRequires: libxml2-devel >= 2.7.4
+BuildRequires: libxml2-devel >= 2.8.0
BuildRequires: libxslt-devel >= 1.0.20
Prefix: %{_prefix}
Docdir: %{_docdir}
@@ -30,9 +30,9 @@ standards "XML Digital Signature" and "XML Encryption".
Summary: Libraries, includes, etc. to develop applications with XML Digital Signatures and XML Encryption support.
Group: Development/Libraries
Requires: xmlsec1 = %{version}
-Requires: libxml2-devel >= 2.7.4
+Requires: libxml2-devel >= 2.8.0
Requires: libxslt-devel >= 1.0.20
-Requires: openssl-devel >= 0.9.8
+Requires: openssl-devel >= 1.0.0
Requires: zlib-devel
Requires: libtool-ltdl-devel
@@ -44,10 +44,10 @@ Signatures and XML Encryption support.
Summary: OpenSSL crypto plugin for XML Security Library
Group: Development/Libraries
Requires: xmlsec1 = %{version}
-Requires: libxml2 >= 2.7.4
+Requires: libxml2 >= 2.8.0
Requires: libxslt >= 1.0.20
-Requires: openssl >= 0.9.8
-BuildRequires: openssl-devel >= 0.9.8
+Requires: openssl >= 1.0.0
+BuildRequires: openssl-devel >= 1.0.0
%description openssl
OpenSSL plugin for XML Security Library provides OpenSSL based crypto services
@@ -59,10 +59,10 @@ Group: Development/Libraries
Requires: xmlsec1 = %{version}
Requires: xmlsec1-devel = %{version}
Requires: xmlsec1-openssl = %{version}
-Requires: libxml2-devel >= 2.7.4
+Requires: libxml2-devel >= 2.8.0
Requires: libxslt-devel >= 1.0.20
-Requires: openssl >= 0.9.8
-Requires: openssl-devel >= 0.9.8
+Requires: openssl >= 1.0.0
+Requires: openssl-devel >= 1.0.0
%description openssl-devel
Libraries, includes, etc. for developing XML Security applications with OpenSSL
@@ -71,7 +71,7 @@ Libraries, includes, etc. for developing XML Security applications with OpenSSL
Summary: NSS crypto plugin for XML Security Library
Group: Development/Libraries
Requires: xmlsec1 = %{version}
-Requires: libxml2 >= 2.7.4
+Requires: libxml2 >= 2.8.0
Requires: libxslt >= 1.0.20
Requires: mozilla-nss >= 1.4
BuildRequires: mozilla-nss-devel >= 1.4
@@ -86,7 +86,7 @@ Group: Development/Libraries
Requires: xmlsec1 = %{version}
Requires: xmlsec1-devel = %{version}
Requires: xmlsec1-nss = %{version}
-Requires: libxml2-devel >= 2.7.4
+Requires: libxml2-devel >= 2.8.0
Requires: libxslt-devel >= 1.0.20
Requires: mozilla-nss-devel >= 1.4